\section{Changes Made in Version 00}
\begin{itemize}
% hgs 07/07/00
\item In Sec.~\ref{sec:r-invite-udp}, indicated that UAC should send
both {\CANCEL} and {\BYE} after a retransmission fails.

% hgs 07/04/00
\item Added semicolon and question mark to the list of unreserved
characters for the \header{user} part of SIP URLs to handle
\header{tel:} URLs properly.

% hgs 07/01/00
\item Uniform handling of if hop count \header{Max-Forwards}:  return
483.  Note that this differs from HTTP/1.1 behavior, where only OPTIONS
and TRACE allow this header, but respond as the final recipient when the
value reaches zero.

% hgs 07/01/00
\item Clarified that a forking proxy sends {\ACK}s only for {\INVITE}
requests.

% hgs 07/01/00
\item Clarified wording of DNS caching.  Added paragraph on ``negative
caching'', i.e., what to do if one of the hosts failed.  It is probably
not a good idea to simply drop this host from the list if the DNS ttl
value is more than a few minutes, since that would mean that load
balancing may not work for quite a while after a server is brought back
on line.  This will be true in particular if a server group receives a
large number of requests from a small number of upstream servers, as is
likely to be the case for calls between major consumer ISPs.  However,
without getting into arbitrary and complicated retry rules, it seems
hard to specify any general algorithm.  Might it be worthwhile to simply
limit the ``black list'' interval to a few minutes?

% hgs 06/30/00
\item Added optional \header{Call-Info} and \header{Alert-Info} header
fields that describe the caller and information to be used in alerting. 
(Currently, avoided use of ``purpose'' qualification since it is not yet
clear whether rendering content without understanding its meaning is
always appropriate.  For example, if a UAS does not understand that this
header is to replace ringing, it would mix both local ring tone and the
indicated sound URL.) TBD!

% hgs 06/30/00
\item SDP ``s='' lines can't be empty, unfortunately.


% hgs 06/15/00
%\item Tentative change: described mode where SIP can traverse NAPTs, by
%including a port number in the \header{received} parameter. REMOVED.

% hgs 06/06/00
\item Noted that \header{maddr} could also contain a unicast address,
but {\SHOULD} contain the multicast address if the request is sent via
multicast (Section~\ref{sec:Via}, \ref{sec:multicast_udp}).

% hgs 06/06/00
\item Clarified that responses are sent to port in \header{Via}
\header{sent-by} value.

% hgs 06/04/00
\item Added ``other-*'' to the \header{user} URL parameter and the
\header{Hide} and \header{Content-Disposition} headers.

% hgs 06/04/00
\item Clarified generation of timeout (408) responses in forking proxies
and mention the \header{Expires} header. 
(Section~\ref{sec:server-several})

% hgs 06/04/00
\item Clarified that {\CANCEL} and {\INVITE} are separate transactions
(Fig.~\ref{fig:sip_invite-server}).  Thus, the {\INVITE} request
generates a 487 (Request Terminated) if a {\CANCEL} or {\BYE}
arrives.

% hgs 06/04/00
\item Clarified that \header{Record-Route} {\SHOULD} be inserted in
every request, but that the route, once established, persists. This
provides robustness if the called UAS crashes.

% hgs 06/04/00
\item Emphasized that proxy, redirect, registrar and location servers
are logical, not physical entities and that UAC and UAS roles are
defined on a request-by-request basis.  (Section~\ref{sec:definitions})

% hgs 06/02/00
\item In Section~\ref{sec:Via}, noted that the \header{maddr} and
\header{received} parameters also need to be encrypted when doing
\header{Via} hiding.

% hgs 05/25/00
\item Simplified Fig.~\ref{fig:sip_invite-server} to only show {\INVITE}
transaction.

% hgs 05/25/00
\item Added definition of the use of \header{Contact}
(Section~\ref{sec:Contact}) for {\OPTIONS}.

% hgs 05/20/00
\item Added HTTP/RFC822 headers \header{Content-Language} and
\header{MIME-Version}.

% hgs 05/20/00
\item Added note in Section~\ref{sec:minimal} indicating that UAs need
to support UDP.

% hgs 05/19/00
\item Added explanation in Section~\ref{sec:subsequent} explaining what
a UA should do when receiving an initial {\INVITE} with a tag.

% hgs 05/19/00
\item Clarified UA and proxy behavior for 302 responses
(Section~\ref{sec:302}).

% hgs 05/18/00
\item Added details on what a UAS should do when receiving a tagged
{\INVITE} request for an unknown call leg.  This could occur if the UAS
had crashed and the UAC sends a re-{\INVITE} or if the {\BYE} got lost
and the UAC still believes to be in the call.

% hgs 05/18/00
\item Added definition of \header{Contact} in 4xx, 5xx and 6xx to
``redirect'' to more error details.

% hgs 05/18/00
\item Added note to forking proxy description in
Section~\ref{sec:server-several} to gather \header{*-Authenticate} from
responses.  This allows several branches to be authenticated
simultaneously.

% hgs 05/02/00
\item Changed URI syntax to use URL escaping instead of quotation marks.

% hgs 04/28/00
\item Changed SIP URL definition to reference RFC 2806 for
\header{telephone-subscriber} part.

% hgs 04/23/00
\item Clarified that the \header{To} URI should basically be ignored by
the receiving UAS except for matching requests to call legs.  In
particular, \header{To} headers with a scheme or name unknown to the
callee should be accepted.

% hgs 04/23/00
\item Clarified in Section \ref{sec:Via:requests} that \header{maddr} is
to be added by any client, either proxy or UAC.

% hgs 04/19/00
\item Added response code 488 to indicate that there was no common media
at the particular destination. (606 indicates such failure globally.)

% hgs 04/19/00
\item In Section \ref{sec:Expires}, noted that registration updates
can shorten the validity period.

% hgs 04/19/00
\item Added note to Section~\ref{sec:digest} to enclose the URI in
quotation marks. The BNF in RFC 2617 is in error.

% hgs 04/19/00
\item Clarified that registrars use \header{Authorization} and
\header{WWW-Authenticate}, not proxy authentication.

% hgs 03/17/00
\item Added note in Section~\ref{sec:Contact} that ``\header{headers}''
are copied from \header{Contact} into the new request. 

% hgs 03/15/00
\item Changed URL syntax so that port specifications have to have at
least one digit, in line with other URL formats such as ``http''.
Previously, an empty port number was permissible.

% hgs 03/08/00
\item In Section~\ref{sec:sdp}, added a section on how to add and delete
streams in re-{\INVITE}s.

% hgs 03/08/00
\item IETF-blessed extensions now have short names, without
\header{org.ietf.} prefix.

% hgs 03/01/00, pointed out by Suzanne Arcens (Synacom)
\item \header{Cseq} is unique within a call leg, not just within a call
(Section~\ref{sec:CSeq}).

% hgs 02/29/00, on suggestion by Glenn Morrow
\item Added IPv6 literal addresses to the SIP URL definition in
Section~\ref{sec:sip-url}, according to RFC 2732 \cite{rfc2732}. 
Modified the IPv4 address to limit segments to at most three digits.

% hgs 02/28/00, after discussion with jdrosen
\item In Section~\ref{sec:REGISTER}, modify registration procedure so
that it explicitly references the URL comparison. Updates with shorter
expiration time are now allowed. 

% hgs 02/28/00, after confirmation by jdrosen; sec:sdp
\item For send-only media, SDP still must indicate the address and port,
since these are needed as destinations for RTCP messages.
(Section~\ref{sec:sdp})

% hgs 02/28/00; sec:srv, sec:intro
\item Changed references regarding DNS SRV records from RFC 2052 to RFC
2782, which is now a Proposed Standard.  Integrated SRV into the search
procedure in Section~\ref{sec:intro} and removed the SRV appendix.  The
only visible change is that protocol and service names are now prefixed
by an underscore.  Added wording that incorporates the precedence of
\header{maddr}.

% Changed: sec:Record-Route, sec:Route
% hgs 02/16/00, based on suggestion by Igor Slepchin
\item Allow parameters in \header{Record-Route} and \header{Route}
headers.

% Changed: sec:sip-url
% hgs 02/16/00, based on suggestion by Igor Slepchin
\item In Table~\ref{tab:url}, list \header{udp} as the default value for
the transport parameter in SIP URI.

% Changed: sec:security
% hgs 02/11/00
\item Removed sentence that \header{From} can be encrypted. It cannot,
since the header is needed for call-leg identification.

% Changed: sec:ua
% hgs 02/08/00, based on Robert Sparks
\item Added note that a UAC only copies a \header{To} tag into
subsequent transactions if it arrives in a 200 OK to an {\INVITE} in
Section~\ref{sec:ua}.  This avoids the problem that occurs when requests
get resubmitted after receiving, say, a 407 (or possibly 500, 503, 504,
305, 400, 411, 413, maybe even 408).  Under the old rules, these
requests would have a tag, which would force the called UAS to reject
the request, since it doesn't have an entry for this tag.

% Changed: sec:proxy, sec:Via:syntax
% hgs 02/02/00
\item Loop detection has been modified to take the \header{request-URI}
into account (Section~\ref{sec:proxy} and \ref{sec:Via:syntax}). This
allows the same request to visit the server twice, but with different
request URIs (``spiral'').

% Changed: sec:sip-url, sec:From
% hgs 12/99
\item Elaborated on URL comparison and comparison of
\header{From}/\header{To} fields.

% Changed: sec:sip-url
% hgs 12/99
\item Added \header{np-queried} \header{user} parameter.

% Changed: sec:From
% sip list queried 02/02/00
% agree, does not currently check: archow@hss.hns.com, dynamicsoft
%   Adam.Roach@Ericsson.com
%   "Paul Defrain" <defrain@nortelnetworks.com>
%   Emmanuel Bertrand <eb@indigo-software.com>
%   Sunitha Kumar <skumar@vovida.com>
\item Changed \header{tag} syntax from UUID to token, since there's no
reason to restrict it to hex.

% Changed: sec:Content-Disposition, 1999-11-18
% Reported: Jonathan Rosenberg, hgs
\item Added \header{Content-Disposition} header based on earlier
discussions about labeling what to do with a message body (part).

% Changed: sec:To, 1999-10-04
% Reported: Jonathan Rosenberg, sip list
\item Clarification:  proxies must insert \header{To} tags for locally
generated responses. 

% Changed: sec:REGISTER, 1999-10-01
\item Clarification: multicast may be used for subsequent registrations.

% Reported: 1999-10-02; David Oran, Cisco
% Changed: sec:Supported
\item Feature: Added \header{Supported} header. Needed if client wants
to indicate things the server can usefully return in the response.

% Reported: 1999-04-23; Eric Tremblay, Mediatrix
% Changed: sec:From, sec:To, sec:Via, sec:Encryption, sec:Response-Key
\item Bug:  The \header{From}, \header{To}, and \header{Via} headers
were missing extension parameters. The \header{Encryption} and
\header{Response-Key} header fields now ``officially'' allow parameters
consisting only of a token, rather than just ``token = value''. 

% Reported: 1999-05-04; Peter Holmes <Peter.Holmes@nr.no>
% Changed: tab:headers1
\item Bug: \header{Allow} was listed as optional in 405 responses in
Table 4. It is mandatory. 

% Reported: 1999-05-03; Motorola
% Changed: 1999-06-01 by hgs
\item Added in Section~\ref{sec:BYE}:  ``A {\BYE} request from either
called or calling party terminates any pending {\INVITE}, but the
{\INVITE} request transaction {\MUST} be completed with a final
response.''

\item Clarified in Section~\ref{sec:INVITE}:  ``If an {\INVITE} request
for an existing session fails, the session description agreed upon in
the last successful {\INVITE} transaction remains in force.''

% Reported: 1999-05-04; Jonathan Rosenberg
% Changed: sec:INVITE
\item Clarified in Section~\ref{sec:INVITE} what happens if two
{\INVITE} requests meet each other on the wire, either traveling the
same or in opposite directions:

\begin{quotation}
A UAC {\MUSTNOT} issue another {\INVITE} request for the same call leg
before the previous transaction has completed.  A UAS that receives an
{\INVITE} before it sent the final response to an {\INVITE} with a lower
\header{CSeq} number {\MUST} return a 400 (Bad Request) response and
{\MUST} include a \header{Retry-After} header field with a randomly
chosen value of between 0 and 10 seconds.  A UA that receives an
{\INVITE} while it has an {\INVITE} transaction pending, returns a 500
(Internal Server Error) and also includes a \header{Retry-After} header
field.
\end{quotation}

\item \header{Expires} header clarified:  limits only duration of
{\INVITE} transaction, not the actual session.  SDP does the latter.

\item The \header{In-Reply-To} header was added
(Section~\ref{sec:In-Reply-To}).

\item There were two incompatible BNFs for \header{WWW-Authenticate}. 
One defined for PGP, and the other borrowed from HTTP.  For basic or
digest:

\begin{verbatim}
  WWW-Authenticate: basic realm="Wallyworld"
\end{verbatim}

and for pgp:

\begin{verbatim}
  WWW-Authenticate: pgp; realm="Wallyworld"
\end{verbatim}

The latter is incorrect and the semicolon has been removed.

\item Added rules for \header{Route} construction from called to calling
UA.

\item We now allow \header{Accept} and \header{Accept-Encoding} in
{\BYE} and {\CANCEL} requests.  There is no particular reason not to
allow them, as both requests could theoretically return responses,
particularly when interworking with other signaling systems.

\item PGP ``pgp-pubalgorithm'' allows server to request the desired
public-key algorithm.

\item ABNF rules now describe tokens explicitly rather than by
subtraction; explicit character enumeration for CTL, etc.

\item Registrars should be careful to check the \header{Date} header as
the expiration time may well be in the past, as seen by the client.

\item \header{Content-Length} is mandatory; Table~\ref{tab:headers1}
erroneously marked it as optional.

\item \header{User-Agent} was classified in a syntax definition as a
request header rather than a general header.

\item Clarified ordering of items to be signed and include realm in list.

\item Allow \header{Record-Route} in 401 and 484 responses.

\item Hop-by-hop headers need to precede end-to-end headers only if
authentication is used (Section~\ref{sec:header-fields}).

\item 1xx message bodies {\MAY} now contain session descriptions.

\item Changed references to HTTP/1.1 and authentication to point to the
latest RFCs.

% confctrl, 1995-05-28, based on JR
\item Added 487 (Request terminated) status response.  It is issued if
the original request was terminated via {\CANCEL} or {\BYE}.

% Reported 1999-04-08: Wenyu Jiang, Columbia U and Hans Nillson, Ericsson
% Changed: 

\item The spec was not clear on the identification of a call leg. 
Section 1.3 says it's the combination of \header{To}, \header{From}, and
\header{Call-ID}.  However, requests from the callee to the caller have
the \header{To} and \header{From} reversed, so this definition is not
quite accurate.  Additionally, the ``tag'' field should be included in the
definition of call leg.  The spec now says that a call leg is defined as
the combination of local-address, remote-address, and call-id, where
these addresses include tags.

Text was added to Section 6.21 to emphasize that the \header{From} and
\header{To} headers designate the originator of the request, not that of
the call leg.

% 1999-04-08: Reported by: Igor Slepchin, Bell Labs
% Changed: 

\item All URI parameters, except \header{method}, are allowed in a
\header{Request-URI}.  Consequently, also updated the description of
which parameters are copied from 3xx responses in
Sec.~\ref{sec:Contact}.

% 1999-04-08: Reported by: MCI
% Changed: 

\item The use of CRLF, CR,or LF to terminate lines was confusing. 
Basically, each header line can be terminated by a CR, LF, or CRLF. 
Furthermore, the end of the headers is signified by a ``double return''. 
Simplified in Section~\ref{sec:message} to require sending of CRLF, but
require senders to receive CR and LF as well and only allow CR CR, LF LF
in addition to double CRLF as a header-body separator.

% 1999-04-08: Reported by various
% Changed: 

\item Round brackets in \header{Contact} header were part of the HTTP
legacy, and very hard to implement.  They are also not that useful and
were removed.

% 1999-04-08: Reported by: 3COM
% Changed: 

\item The spec said that a proxy is a back-to-back UAS/UAC.  This is
almost, but not quite, true.  For example, a UAS should insert a tag
into a provisional response, but a proxy should not.  This was
clarified.

\item Section 6.13 in the RFC begins mid-paragraph after the BNF.  The
following text was misplaced in the conversion to ASCII:
\begin{quote}
Even if the ``display-name'' is empty, the ``name-addr'' form MUST be used
if the ``addr-spec'' contains a comma, semicolon or question mark.
\end{quote}

\end{itemize}

