\section{Changes Made in Version 05}

\begin{itemize}

%jdr 7.30.01
\item Updated Table \ref{tab:headers1} to reflect that
\header{Error-Info} is a response header in 3xx-6xx responses (it was
previously listed as a request header).

%jdr 7.30.01
\item Removed \header{WWW-Authenticate} as a request header from Table
\ref{tab:headers2}. Authentication of responses is now done according
to RFC~2617.

%jdr 7.30.01
\item Updated the \header{Accept}, \header{Accept-Encoding} and
\header{Accept-Language} sections. More details on precise semantics
for the various requests and responses is now provided. Presence of
these headers is now a {\SHOULD} for {\INVITE} and 2xx to {\INVITE}
when a non-default value is present. Extra emphasis is placed on
including the \header{Accept-Language} in {\INVITE} and 2xx in order
to support internationalization. Usage of these three headers in
{\CANCEL} has been removed since it makes no sense.

%jdr 8.1.01
\item Generalized local outbound processing rules in Section 16.4.1 to
cover the case where the UAS is using a local outbound proxy which was
not in the initial call setup path.

%jdr 8.3.01
\item Updated record-routing section, so that a proxy can insert a
transport param if it knows that the proxy on one side supports the
specific transport (the previous text required the proxy to know
whether the proxies on both sides supported the specific transport).

%jdr 8.3.01
\item Added \header{Authentication-Info} to Section 10.

%jdr 8.21.01
\item Clarified the meaning of Table \ref{tab:headers1} for responses.

%jdr 8.22.01
\item Updated Table \ref{tab:url} to reflect that maddr is no longer
mandatory in \header{Record-Route}.

% jdr 8.28.01
\item Updated Table \ref{tab:headers2} so that header fields in
responses to {\ACK} are 
never listed as optional, mandatory, etc. - only not applicable. This
is because responses to {\ACK} are not allowed. Also improved wording
in Section 5.1.1 to clarify that there {\MUSTNOT} be responses to
{\ACK}.

% jdr 8.29.01
\item Updated SRV procedures. Old text said to treat a failure to
contact a server as a 4xx, which would stop the SRV processing. But,
this is not so. Sentence was stricken.

% jdr 8.30.01
\item Updated 12.1 to clarify that 2xx {\INVITE} responses {\MUST}
contain session descriptions.

%jdr 9.7.01
\item Changed \header{User-Agent} to a request header in Table
\ref{tab:headers2}.

%jdr 9.7.01
\item Updated SDP section, so that a UA cannot change the SDP when it
gets a re-{\INVITE} with no SDP. 

%jdr 9.7.01
\item Clarified Appendix B that a unicast offer {\MUST} have a unicast
response. 

%jdr 9.7.01
\item Clarified that any request can be record-routed, but it may not
be used by the UA, depending on the method.

%jdr 9.24.01
\item non-2xx responses to {\INVITE} no longer retransmitted over TCP.

%jdr 9.24.01
\item Removed lower bound on T1 and T2 in private networks, which can
use lower values. Furthermore, T1 can be smaller on the public
Internet if proper RTT estimation is used.

\item UAS Cannot send a {\BYE} for a call leg until it receives {\ACK}, in
order to eliminate a race condition between {\BYE} and 200 OK. 

\item Support of CR or LF alone as line terminators, as opposed to
CRLF, is no longer required.

\item Client behavior on receipt of a 3xx to re-{\INVITE} is now
specified, and it is no longer forbidden to generate a 3xx. This is
needed to maintain the idempotency of {\INVITE}, as a proxy might
redirect without knowing its a 3xx.

\item {\CANCEL} cannot be sent before a 1xx is received, in order to
eliminate race condition between request and {\CANCEL}.

\item Termination of the client and server transactions is now based
entirely on timeouts, rather than retransmission counters, in order to
unify TCP and UDP behavior. Timeout values scale as a function of the
RTT estimate, defined as T1. For reliable transports, many of these
timers are now set to zero. Many timeouts differ than in bis-04.

\item Added a working RTT estimation algorithm using the
\header{Timestamp} header, and specified it to be compliant to RFC
2988.

\item UAS accepting requests with unknown schemes in the URI in the
\header{To} field is now a {\RECOMMENDED} instead of {\SHOULD}. This
reflects the fact that processing a request when the \header{To} field
doesn't match is a matter of policy.

\item Bodies are now allowed in any request and response, including
{\CANCEL}, although there may not be any semantics associated with
that.

\item Supporting of {\INVITE} without SDP is now a {\MUST} (no
strength was previously specified).

\item Registration procedures for visiting, which had a few sentences
in bis-04, have been removed. Roaming is a complex issue, and should
be treated elsewhere.

\item Bis-04 mandated that a 2xx response to {\REGISTER} contain
expires \header{Contact} parameters indicating the expiration time of
a contact. This behavior has now been made consistent with requests,
so that the expiration time of a contact is the same in either case:
the expires param is used first if present, then the \header{Expires}
header if present, else one hour for SIP URLs.

\item Action parameter in contact registrations is deprecated.

\item 2xx to {\REGISTER} {\MUST} contain current contacts. This was
just a {\SHOULD} in bis-04.

\item Multicast operation radically changed. Now, the treatment is no
different than unicast. That is, only the first non-1xx response to a
multicast request will be used. This is a natural consequence of the
layering now applied to the protocol. This still enables anycast types
of functions, mirroring the real usage of registrar discovery.

\item To completely separate transport rules from transaction rules,
the rule in bis-04 that said a UAC {\SHOULD} keep a connection opened
until a response is received, has been turned into a timer
recommendation. Specifically, the spec now says that it is
{\RECOMMENDED} that connections be kept opened for a minimum interval
of sufficient duration to guarantee, with high probability, that
responses are sent over the same connections as a request.

\item Re-use of existing connections for new requests to the same
address and port is now {\RECOMMENDED}, it was only a {\MAY} in
bis-04.

\item Modification of headers below the \header{Authorization} header
by proxies is no longer disallowed, since the only mechanism that used
\header{Authorization} in that way, PGP, has been deprecated
previously.

\item Authentication of registrations now {\RECOMMENDED}; no strength
was defined previously.

\item Registering of new headers with IANA is now {\SHOULD}; no
strength was defined previously.

\item Proxy aggregation of challenges now a {\SHOULD}; no strength was
defined previously.

\item Server support of basic authentication downgraded from {\SHOULD}
to {\MAY}.

\item UAC resubmitting requests with credentials after a challenge
upgraded from {\MAY} to {\SHOULD}.

\item TLS is now {\RECOMMENDED} as the transport layer security for
SIP signaling.

\item UA recursion on a redirect is now {\SHOULD}; no strength was
assigned previously.

\item UA reuse of headers in a recursed request is now {\SHOULD}; no
strength was assigned previously.

\item Security considerations added for \header{Call-Info} and
\header{Alert-Info}.

\item Proxies no longer forward a 6xx immediately on receiving
it. Instead, they {\CANCEL} pending branches immediately. This avoids
a potential race condition that would result in a UAC getting a 6xx
followed by a 2xx. In all cases except this race condition, the result
will be the same - the 6xx is forwarded upstream.

\item The term call-leg has been eliminated from the spec; a more
generic term, dialog, is used in its place.

\item For SRV processing, subsequent requests with the same
\header{Call-ID} (as opposed to the same transaction in bis-04) are
sent to the same server.

\item SRV processing generalized to deal with the fact that the
default port is transport dependent. 

\item Per IESG request, draft-ietf-sip-serverfeatures has been
integrated into bis. 

\item Per IESG request, draft-ietf-sip-100rel will be integrated into
bis. This is marked with a placeholder in this draft.

\item The BNF has been converted from implicit LWS to explicit LWS.

\item Caching of responses in a proxy to avoid redoing location server
lookups used to be a {\SHOULD}. Caching behavior for responses is now
fully encapsulated in the transaction processing.

\item Proxy usage of SRV in processing \header{Route} headers upgraded
from {\SHOULD} to {\MUST}.

\end{itemize}