Subject: [MMUSIC] REDIRECT diff, v2

From: Tom Marshall <[email-masked]>
Date: Wed, 19 Feb 2003 17:06:15 -0800

Here's the new diff that incorporates the action items requested.  Wording
for actions required by the proxy was added and the Location header was made
optional for all 3rr responses (although a 3rr response to a REDIRECT is
probably not such a good idea in the first place...)

-- 
Pardo's First Postulate: Anything good in life is either illegal, immoral,
or fattening.  Arnold's Addendum: Everything else causes cancer in rats.
--- draft-rfc2326bis-02.txt	2002-11-06 14:34:00.000000000 -0800
+++ draft-rfc2326bis-02-mod.txt	2003-02-19 16:58:20.000000000 -0800
@@ -1202,7 +1202,7 @@
      + 2xx: Success - The action was successfully received, understood,
        and accepted
 
-     + 3xx: Redirection - Further action must be taken in order to com-
+     + 3rr: Redirection - Further action must be taken in order to com-
        plete the request
 
      + 4xx: Client Error - The request contains bad syntax or cannot be
@@ -2417,13 +2417,27 @@
 
 10.10 REDIRECT
 
-   A redirect request informs the client that it MUST connect to another |
-   server location. REDIRECT SHALL only be sent to the client who cur-   |
-   rently has a session at the server. The REDIRECT request MAY contain  |
-   the header Location, which indicates that the client should issue     |
-   requests for that URL. If the Location URL only contains a host       |
-   address the client shall connect to the given host, while using the   |
-   path from the URL on the current server.                              |
+   A redirect request informs the client that it MUST connect to another
+   server location. The REDIRECT request MAY contain the header Location,
+   which indicates that the client should issue requests for that URL. If
+   the Location URL only contains a host address the client shall connect to
+   the given host, while using the path from the URL on the current server.
+
+   If a REDIRECT request contains a Session header, it is end-to-end and
+   applies only to the given session.  If there are proxies in the request
+   chain, they SHOULD NOT disconnect the control channel unless there are
+   no remaining sessions.
+
+   If a REDIRECT request does not contain a Session header, it is next-hop
+   and applies to the control connection.  The Location header SHOULD only
+   contain a host address.  If there are proxies in the request chain, they
+   SHOULD do all of the following: (1) respond to the REDIRECT request, (2)
+   disconnect the control channel from the requestor, (3) reconnect to the
+   given host address, and (4) pass the request to each applicable client
+   (typically those clients with an active session or unanswered request
+   from the requestor).  Note that the proxy is responsible for accepting
+   the REDIRECT response from its clients and these responses MUST NOT be
+   passed on to either the requesting or the destination server.
 
    The redirect request MAY contain the header Range, which indicates    |
    when the redirection takes effect. If the Range contains a time=      |
@@ -2436,11 +2450,6 @@
    time. The range value MUST be a single value in the open ended form,  |
    e.g. npt=59-.                                                         |
 
-   If a Session header is included in the REDIRECT request the client    |
-   MUST redirect the indicated session. If no Session header is included |
-   the client MUST redirect all sessions that it have on the server      |
-   sending the request.                                                  |
-
    If the client wants to continue to send or receive media for this     |
    resource, the client MUST issue a TEARDOWN request for the current    |
    session. A new session must be established with the designated host.  |
@@ -2647,7 +2656,11 @@
    processes on the server may be consuming storage space simultane-
    ously, a client should take this only as an estimate.
 
-11.3 Redirection 3xx
+11.3 Redirection 3rr
+
+   The notation "3rr" indicates response codes from 300 to 399 inclusive
+   which are meant for redirection.  The response code 304 is excluded
+   from this set, as it is not used for redirection.
 
    See [H10.3] for definition of status code 300 to 305. However com-    |
    ments are given for some to how they apply to RTSP. Further a couple  |
@@ -2679,6 +2692,24 @@
 
 11.3.5 304 Not Modified                                                  |
 
+   If the client has performed a conditional DESCRIBE or SETUP (see 12.23)
+   and the requested resource has not been modified, the server SHOULD send
+   a 304 response.  This response MUST NOT contain a message-body.
+
+   The response MUST include the following header fields:
+
+   - Date
+   - ETag and/or Content-Location, if the header would have been sent in
+     a 200 response to the same request.
+   - Expires, Cache-Control, and/or Vary, if the field-value might
+     differ from that sent in any previous response for the same variant.
+
+   This response is independent for the DESCRIBE and SETUP requests.  That
+   is, a 304 response to DESCRIBE does NOT imply that the resource content
+   is unchanged and a 304 response to SETUP does NOT imply that the resource
+   description is unchanged.  The ETag and If-Match headers may be used to
+   link the DESCRIBE and SETUP in this manner.
+
 11.3.6 305 Use Proxy                                                     |
 
    See [H10.3.6].                                                        |
@@ -2948,7 +2979,7 @@
 
    The From, Location, and RTP-Info header fields contain a URI. If the
    URI contains a comma, or semicolon, the URI MUST be enclosed in dou-
-   ble quotas ("). Any URI parameters are contained within these quotas.
+   ble quotes ("). Any URI parameters are contained within these quotas.
    If the URI is not enclosed in double quotas, any semicolon- delimited
    parameters are header-parameters, not URI parameters.
 
@@ -3011,7 +3042,7 @@
    If-Match              R      r    -   -    o    -     -   -
    If-Modified-Since     R      r    o   -    o    -     -   -
    Last-Modified         r      r    o   -    -    -     -   -
-   Location             3xx          o   -    o    -     -   -
+   Location             3rr          o   o    o    o     o   o
    Proxy-Authenticate   407    amr   m   m    m    m     m   m
    Proxy-Require         R     ar    o   o    o    o     o   o
    Public                r    admr   -  m*    -    -     -   -
@@ -3028,7 +3059,7 @@
 Internet Draft                    RTSP                 November 01, 2002

-   Retry-After        3xx,503        o   o    o    -     -   -
+   Retry-After        3rr,503        o   o    o    -     -   -
    RTP-Info              r           -   -    o    m     -   -
    Scale                             -   -    -    o     -   -
    Session               R           -   o    o    m     m   m
@@ -3118,6 +3149,7 @@
    Host                              o   o   o   o   o   o
    Last-Modified         R      r    -   -   o   -   -   -
    Last-Modified         r      r    o   -   -   -   -   -
+   Location             3rr          o   o   o   o   o   o
    Location              R           -   -   -   -   m   -
    Proxy-Authenticate   407    amr   m   m   m   m   m   m
    Proxy-Require         R     ar    o   o   o   o   o   o
@@ -3125,7 +3157,7 @@
    Range                 R           -   -   -   -   o   -
    Referer               R           o   o   o   o   o   -
    Require               R           o   o   o   o   o   o
-   Retry-After        3xx,503        o   o   -   -   -   -
+   Retry-After        3rr,503        o   o   -   -   -   -
    Scale                             -   -   -   o   -   -
    Session               R           o   o   m   m   o   m
    Session               r           c   c   m   m   o   m
@@ -5830,8 +5862,9 @@
 
    type of error occur the appropriate response code MUST be sent. If    |
    the response code is a 4xx the session state is unchanged. A response |
-   code of 3xx will result in that the session is ended and its state is |
-   changed to Init. However there exist restrictions to when a 3xx       |
+   code of 3rr will result in that the session is ended and its state is |
+   changed to Init. A response code of 304 results in no state change.
+   However there exist restrictions to when a 3xx       |
    response may be used. A 5xx response SHALL not result in any change   |
    of the session state, except if the error is not possible to recover  |
    from. A unrecoverable error SHALL result the ending of the session.   |
@@ -5855,7 +5888,7 @@
 
    Event         Prerequisite      Response
    -----------------------------------------------------------------
-   DESCRIBE      Needs REDIRECT    3xx Redirect
+   DESCRIBE      Needs REDIRECT    3rr Redirect
    DESCRIBE                        200, Session description
    OPTIONS       Session ID        200, Reset session timeout timer
    OPTIONS                         200
@@ -5888,20 +5921,20 @@
             Action  Requisite       New State  Response
             -------------------------------------------------
             SETUP                     Ready    NRM=1, RP=0.0
-            SETUP   Needs Redirect    Init     3xx Redirect
+            SETUP   Needs Redirect    Init     3rr Redirect

    Table 7: State: Init
 
    state variables are also set by a correct request. This table also    |
    shows that a correct SETUP can in some cases be redirected to another |
-   URL and/or server by a 3xx response.                                  |
+   URL and/or server by a 3rr response.                                  |

        Action         Requisite       New State  Response
        ----------------------------------------------------------
        SETUP                            Ready    NRM=1,RP=0.0
-       SETUP          Needs Redirect    Init     3xx
+       SETUP          Needs Redirect    Init     3rr
        TEARDOWN       URL=*             Init     No session hdr.
        Timeout                          Init
        S->C:REDIRECT  Range hdr       Ready-nm   Set RedP
@@ -7187,7 +7220,7 @@
 11.1.1     100 Continue  . . . . . . . . . . . . . . . . . . . . . .  47
 11.2       Success 2xx . . . . . . . . . . . . . . . . . . . . . . .  48
 11.2.1     250 Low on Storage Space  . . . . . . . . . . . . . . . .  48
-11.3       Redirection 3xx . . . . . . . . . . . . . . . . . . . . .  48
+11.3       Redirection 3rr . . . . . . . . . . . . . . . . . . . . .  48
 11.3.1     TBW . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
 11.3.2     301 Moved Permanently . . . . . . . . . . . . . . . . . .  48
 11.3.3     302 Found . . . . . . . . . . . . . . . . . . . . . . . .  48