\section{Changes Made in Version 06}

\begin{itemize}

\item Made TCP mandatory for user agents.

\item The two states of a dialog are now called early and confirmed.

\item {\CANCEL} requests now carry \header{Route} header fields.

\item Changes section in -05 forgot to mention the removal of the
\header{Encryption} and \header{Response-Key} headers. These were
removed since the only mechanism that used them, PGP, had already been
deprecated. As such, they were effectively ``garbage collected''.

\item Updated error in transaction definition. {\ACK}-2xx is a separate
transaction, {\ACK} for non-2xx is part of the same transaction.

\item Changed \header{Contact-Length} typo to \header{Content-Length} in
various sections, including throughout the examples section.

\item Changed Table 3 entry for \header{Record-Route} and \header{Route}
for {\REGISTER} from "o" for optional to "-" for Not Allowed.

\item Changed Table 3 entry for \header{Route} for {\ACK}, {\BYE},
{\CANCEL}, {\INVITE}, and {\OPTIONS} from "o" for optional to "c" for
conditional, depending on whether a route set has been defined for the
dialog or the response code.

\item Updated Figure 5; adding missing label on ``calling'' to
``completed'' transition.

\item Fixed errored transport example from Section 19.2.1.

\item Clarified that 17.2.3 and 17.1.3 are rules that define
retransmissions. 

\item fixed reported bugs in bnf (missing productions, bad tex markup),
etc.  Added new SWS production to have an LWS which allows zero spaces,
and used that With any separators.  Removed the \# rule.

\item {\ACK} for non-2xx has to have the same \header{Route} as the
request its acknowledging. The text formerly said that the {\ACK}
{\MUSTNOT} contain \header{Route}, this has now radically changed to
{\MUST} have \header{Route} if the request its cancelling had one.

\item Clarified that stateless proxies apply \header{Route} processing
logic to {\CANCEL} requests.

\item Emphasized that escaping in the hostname portion of SIP URIs is
not currently allowed.

\item Added discussion on when configuration changes affect the ability
of a proxy to forward requests stateful or statelessly.

\item Explicitly stated that a proxy may add a \header{Record-Route}
header field value to any request.

\item Added discussion on the use of To tags in hop-hop responses at a
proxy.

\item Relaxed text concerning proxies forwarding {\CANCEL}s when a
matching response context can't be found to allow the {\CANCEL} to be
processed statefully.

\item Changed references to ``short'' form of SIP headers to ``compact''
form.

\item Changed \header{Date} example to a valid date.

\item Clarified how {\ACK} gets from transport to UAS core.

\item Adding missing ``SIP/2.0'' to first {\REGISTER} in the examples
section. 

\item Fixed bug in 17.2.3 which said that an {\ACK} matched a server
transaction if the \header{CSeq} method (not number) matched that of the
{\INVITE}.  It should be the reverse; number, not method.

\item Fixed bug in 22.15 where it said \header{Content-Length} instead
of \header{Content-Type}.

\item Incorporated draft-ietf-sip-100rel-04 into bis.

\item Reliability of provisional responses now only defined for
provisional responses to {\INVITE}, although extension methods can allow
its usage.  This is because {\PRACK} needs to be sent within the context
of a dialog, and only responses to {\INVITE} establish dialogs. 

\item Can no longer send a reliable provisional response after a final
response; its not compatible with the transaction machines, which
generally assume no provisionals after a final.

\item Proxy behavior for reliable provisional responses no longer
defined separately; the spec states that it simply acts as a uas.

\item Scope of \header{Record-Route} header fields for a reliable
provisional response is now the dialog rather than the particular
request. 

\item Example {\PRACK} flows were lost when incorporating into bis. 

\item Formal IANA registration of ``100rel'' option tag.

\item If reliable provisional response gets no {\PRACK} after 32*T1,
UAS sends 5xx to original request.

\item Recommended UA behavior for caching credentials.

\item Included guidelines for devices presenting pre-configured
credentials vs.  prompting end users to provide credentials for a
specific realm.

\item Added section on stateless UAS Behavior, clarifying secure handling of
unauthenticated requests to prevent potential DoS threat.

\item Provided motivation for aggregation of challenges in the Security
Considerations, and made the behavioral language there more specific.

\item Provided guidelines for the construction of realm strings for 
authentication.

\item Changed concept of protection domain for SIP so that it is no longer
defined by both a Request-URI and a realm; it is now only defined by a 
realm.

\item Put in some text encouraging UACs not to resubmit rejected
credentials when re-challenged.

\item Added falsification of source IP address to the \header{Via}
denial of service attack case.

\item Provided canonical MD5 hash for an empty message body to be used in 
Digest integrity calculation.

\item Added security considerations for the {\CANCEL} and {\ACK}
methods.

\item Deprecated and removed Basic auth scheme. Proxies {\MUSTNOT} accept
or request Basic.

\item Strengthened language regarding the sending of the ``qop''
parameter; receipt of cnonce is based on ``qop''.

\item Clarified the construction the URI in the Request-URI of
{\REGISTER} requests.

\item Noted that registrars {\SHOULD} provide \header{Date} headers in
200 (OK) responses to {\REGISTER}, and that clients can use these Dates
to set their internal clocks.

\item Processing of {\REGISTER}s at a registrar now must be with
atomicity and isolation.

\item Registrars now {\MUST} process \header{Require} headers.

\item Clarified \header{CSeq} increment over {\REGISTER} messages for
the same \header{Call-ID}, and necessity of tracking \header{Call-IDs}
and \header{CSeqs} for contact addresses by a registrar

\item Added registrar-side handling for 
\begin{verbatim}
  Contact:  *
  Expires:  0
\end{verbatim}

\item Added description generalizing processing of {\OPTIONS} responses
to include proxies as well as UAS.  Included language describing use of
\header{Max-Forwards} as a SIP capabilities traceroute.  Described
construction of a \header{Request-URI} for an {\OPTIONS} sent to a
proxy.

\item Defined ``Not Applicable'' in Tables 2 and 3 to mean that the
header field is undefined and should be ignored if present.

\item Removed old references to general headers in Table 3.

\item Allowed a proxy to insert a \header{Max-Forwards} header field in
Table 2.  Also added description of the use of the header by elements
that can not otherwise guarantee loop detection.

\item Fixed dialog matching reference in 22.37.

\item Reinforced that all 6xx, including 603 and 606, are only sent if
the UAS knows that no other endpoint will accept the call.

\item Clarified that for 302 responses, the \header{Contact} is used
just once to recurse a new transaction, unless an \header{Expires}
header or \header{expires} parameter is present.

\item Clarified that 405 is sent when the server knows the method, but
the method is not allowed for the resource in the Request-URI.  501 is
sent when the server has never heard of the method at all.

\item Included note that no MIME types for message bodies of 3xx
responses have been defined.

\item Stated explicitly in Section 22.10 on \header{Contact} the rules
for parsing display names, URI and URI parameters, and header
parameters.  Referenced this text in the sections on \header{To} and
\header{From} header fields.

\item Corrected references in \header{Timestamp} section.

\item Noted in \header{Via} section that the host or network address and
port part of the header does not follow the SIP URI syntax; spaces
around :  are permitted.  Also noted that spaces are permitted around /. 
Modified an example to show this.

\item Added text to describe the \header{Contact} header fields in a 2xx
response to an {\OPTIONS} as having redirect semantics.  Modified
example to show both a SIP and mailto \header{Contact} URI.

\item Added text to describe the use of {\OPTIONS} within a dialog to
query a peer for capabilities, and noted that the request has no impact
on the dialog.

\item Added text to 302 (Moved Temporarily) section saying that if a
cached \header{Contact} URI fails, the request may be retried with the
original \header{Request-URI}.  Removed recursion rules (moved to UA
section) and ``call'' specific language.  Specifically stated both
proxies and Uas may cache URI for expiration interval.

\item Added text to 488/606 section to allow SDP message bodies,
formatted the same as SDP in 200 (OK) responses to {\OPTIONS}.  Removed
text on SDP response message bodies from the \header{Warning} section.

\item Outbound server is now called outbound proxy

\item Clarified that a transaction in the completed state is not ``in
progress'' when it comes to overlapping transactions.

\item 488 response is used to reject an offer.

\item Clarified how to reject an offer.

\item Clarified that requests with \header{To} tag outside a dialog may
have been simply missrouted.

\item General UAS behaviour applies to {\CANCEL} and {\BYE}

\item Clarified when to use {\BYE} to terminate an early dialog.

\item Explained when a UAS detects gaps in the \header{Cseq} space. 

\item Specified behavior for inclusion of bodies in {\ACK} for non-2xx; 
{\MUST} be same type as request, or one of the types in \header{Accept}
if the response was 415.

\item Updated the default value of timer D to be 32s, instead of T3.

\item Clarified that RTT estimate of T1 applies to all requests and
responses sent to that IP address, and included a discussion of how this
is not quite right when there are stateless proxies in the path.

\item 180 (Ringing) responses for re-{\INVITE}s are not typically useful.

\item {\ACK}s {\MUST} contain the same credentials as the {\INVITE}.

\item {\ACK} for non-2xx responses needs to contain the same \header{Route}
headers as the request. Same reason {\CANCEL} needs to.

\item Increased minimum timer for holding persistent connections, and
clarified the reasoning behind the timer.

\item Clarified that persistent connections are indexed by address,
port, transport, and that ephemeral source ports imply that peering
relationships will ususally involve two connections.
\item Timer T3 no longer used; it was a dangling reference in bis-05. 

\item Clarified Figure \ref{fig:invite-server} to indicate that 100 is
only sent if TU won't respond in 200ms.

\item Re-added text that said proxies {\MUST} and UA {\SHOULD} support
TCP, which somehow got accidentally deleted from bis-05.

\item Clarified meaning of an empty \header{Accept} header field.

\item Added RFC~2616 security warning about \header{Server} header field
to both \header{Server} and \header{User-Agent} header fields.

\item Added handling of transport failures to transaction state machines,
and added a section for server transactions.

\item Disallowed port in \header{To}/\header{From} header URIs.

\item Allowed password in both \header{To} and \header{From} header URIs.

\item Disallowed the \header{method} URI parameter in {\REGISTER} and
Redirect \header{Contact} header URIs.

\item Absolved proxies from issuing {\CANCEL}s based on the
\header{Expires} header of an {\INVITE}.  Included text pointing out
that they {\MAY} do so, but it is unnecessary.

\item Clarified aggregating authentication challenges at a proxy.

\item Added notice that even though proxies are required to {\CANCEL}
outstanding client transactions upon forwarding a final response, an
endpoint may still receive multiple 200 (OK) responses to an {\INVITE}. 
Also noted that future extensions could override the requirement to
{\CANCEL}.

\item Reinforced that proxies must wait for provisional responses before
generating {\CANCEL} requests.

\item Request merging moved to general Ua behaviour section.

\item Request processing is atomic.

\item Clarified how to resolve glare conditions.

\item Added UAs should ignore unknown extension header parameters.

\item Clarified when quoted string vs. token can be used as a display name.

\item Explicitly stated that a header parameter name can appear at most
once per header field value.

\item Noted that proxies no longer treat merged requests as an error.

\item Clarified that proxies can \header{Record-Route} header field
values to requests already in dialogs to improve robustness, but that
chosing not to do so will not normally cause them to be removed from the
path.

\item Clarified that proxies do not remove any received parameters they
may have added to \header{Via} header fields when forwarding responses.

\item Deprecated absolute time in \header{Expires} and \header{Retry-After}.

\item Added pointer to what to do with responses that were meant for a proxy

\item Summarized stateful proxy forwarding behavior with respect to what
final responses get forwarded

\item Clarified that elements on the start line of messages are
separated by a single \header{SP} character

\item Explicitly stated that a SIP URI parameter name to occur at most
once in a URI.

\item Changed Table 2 to show \header{Accept}, \header{Accept-Encoding},
\header{Accept-Language}, and \header{Supported} as for a 2xx to an
{\OPTIONS} as m*

\item Changed Table 2 to show \header{Content-Length} as ``t'', which is
defined to mean that it should be present, but must be present if TCP is
used.

\item Added the notion that registrars that accept registrations on a
multicast interface might want to redirect registrations to a unicast
interface.

\item Request merging now a behavior of the UA, rather than the proxy
server.

\item Solidified the circumstances under which UAs should retry rejected
requests with the same \header{Call-ID} but a different \header{CSeq}.

\item Corrected erroneous statement that contact addresses were not cached
across dialogs; now dependent on status code and expiration interval.

\item Tags are a {\MUST} for non-100 provisionals, a {\MAY} for 100
(Trying).

\item Discouraged generation of 1xx respones to non-{\INVITE} requests.

\item Fixed references to \header{Content-} handling headers in the UA
section.

\item \header{Timestamp} headers must be copied from requests into a 100
Trying for RTT calculation.

\item Request processing is now said to be atomic.

\item Potential infinite redirection loop problem fixed; redirect
servers {\MUSTNOT} send a redirect to the same URI they received in the
redirected request.

\item Further specified which URIs servers can expect to see in
Request-URIs of requests (relationship to contact headers).

\item Defined pre-loaded route headers.

\item Clarified normative language of \header{Accept-Encoding},
\header{Accept-Language}, and \header{Content-Disposition} in regard to
no header being present.

\item Noted that ``transport=TLS'' in a SIP URI refers to TLS over TCP.

\item Refined discussion on forming requests based on a given SIP URI.

\item Clarified ``matching the topmost Via'' for stateless proxies.

\item Added discussion of how proxies respond to transaction failure and
notification of state-machine timeouts.

\item Corrected description of proxy behavior when recursing on 3xx
contacts to account for contacts not recursed on (such as contacts
containing non-SIP URIs).

\item Added \header{Reply-To} header field.

\item Clarified that responses to {\OPTIONS} are scoped to the
\header{Request-URI} of the request.

\item Added 491 (Request Pending) response code.

\item Proxies should not remove malformed headers that it doesn't care
about when forwarding requests.

\item Noted that proxies can't generate their own 1xx provisional
responses, but they can use a virutual colocated UAS to achieve the same
effect.

\item Two SIP URIs which are identical with the exception of the
presence of an \header{maddr} parameter in one, and no \header{maddr}
parameter in the other are not equivalent.

\item Modified transaction, UA, and proxy sections so that branch ID is
now a unique transaction identifier.  Updated all example messages so
that UAC insert branch ID, and magic cookie is present in all branch ID
values.

\item {\CANCEL}s and {\ACK}s {\MUSTNOT} contain \header{Require} or
\header{Proxy-Require} headers.

\item A UA {\SHOULDNOT} send re-{\INVITE} or {\BYE} upon media failure.

\item Only SIP URIs can be used as addresses of record in {\REGISTER}
requests.

\item Registrars {\MUSTNOT} increase the expiration interval of
registrations.  Intervals that are too short {\MAY} be rejected with a
423 w/ \header{Min-Expires}.

\item Security Considerations substantially reorganized and expanded.

\item TLS support for proxy servers, registrars and redirect servers now a
{\MUST}.

\item Minimum ciphersuite for TLS now AES.

\item S/MIME now slightly more implementable. S/MIME support is now a 
{\SHOULD} for UAs.

\item S/MIME now relies on RFC~2633 CMS messages.

\item Threat models against the SIP protocol are now provided.

\item Example architectures in which security mechanisms might be used
are described.

\item Limitations of security mechanisms are described.

\item Added 493 (Undecipherable) response code.

\item Fixed {\ACK} column in Table 3 entry for \header{Warning}.

\item Added text describing how to recurse on a 3xx as a UAC.

\item SIP URIs are compared case-sensitive across the \header{userinfo},
case-insensitive everywhere else.

\item Proxies strip transport and port when stripping maddr.

\item Port and transport apply to maddr when maddr is present in a SIP
URI.

\item Restored record-route example from bis-04.

\item Reinforced that SIP messages {\MAY} contain binary bodies or body
parts.

\item Added section discussing conversion of tel URLs to SIP URIs,
focusing on issues with maintaining equivalence.

\item Clarified use of transaction key in building values to include in
\header{Record-Route} values.

\item Clarified requirements on the inclusion of information in the
loop-detection hash used in branch parameters.

\item Noted in the proxy section that \header{Record-Route} values are
only valid within the scope of the dialog in which they are provided.

\item Added definitions for redirect server, recursion, header, message,
request, response, and route refresh request.

\item Placing headers needed by proxies (\header{Via}, \header{Route},
\header{Record-Route}, etc.) at the top of messages is now
{\RECOMMENDED}. 

\item Reinforced that proxies processing messages do not fork, even by
recursingon returned 3xx responses.

\item Removed restriction on proxies adding \header{Record-Route} to
{\REGISTER} requests.  Added that registrars ignore
\header{Record-Route} if it occurs.

\item Allowed for loose-route policies, capturing use of default
outbound proxies as a loose route decision.

\item The scope of \header{Contact} header fields is not limited to the
dialog.

\item Added text saying that when the caller wishes to be anonymous, the
URI should be scrambled as well.

\item Moved 485 response generation from UAS to proxy.

\item Require {\MUST} only reference standards track RFCs.

\item Removed requirement on proxies to not forward a request to
a multicast group that had already been visited.

\item Deprecated loop-detection.  Made \header{Max-Forwards} mandatory
with an initial value of 70.  Proxies insert a \header{Max-Forwards} of
70 if they find the header missing.

\item Placed HTTP Digest and S/MIME in sections independent of the security
Considerations.

\item Added 416 (Unsupported URI Scheme) and discussion on its handling. Added guidance on how a UAC would select the URI in the To/Request-URI based on user input.

\item Noted that {\BYE} without tags is now rejected, which is a backwards
compatibility break with RFC 2543.

\item Reference offer-answer for formatting of SDP in {\OPTIONS} response, 488, 606.

\item Timer C now managed by the TU. Proxies have a minimum of 3 minutes, but
it is extended through provisional responses. 

\item Proxies can go stateless mid-transaction if they didn't do anything that would have otherwise prevented them from being stateless in the first place.

\end{itemize}
