Subject: Re: [Sip] Open Issue #259: Proxies Honoring Expires

From: Jonathan Rosenberg <[email-masked]>
Date: Mon, 07 Jan 2002 17:20:24 -0500

There was only one comment on this proposal, from Jo, which agreed to 
have proxies ignore Expires. I will therefore consdier the proposal 
accepted and the issue closed.

-Jonathan R.

Jonathan Rosenberg wrote:

> <discussion on this started within the context of bug 282, which is 
> about a minimum value for timer C. However, they are orthogonal>
> 
> Issue: When a proxy receives an INVITE with an Expires header, what 
> should the proxy do when that expiration time arrives? Should it CANCEL 
> the INVITE, or just ignore it?
> 
> Discussion: CANCELing it would give the proxy a way to clean up its 
> state faster without relying on the UAs to help. The big question is 
> whether or not something very robust is needed or not. Robert had posted
> 
> a listing of four cases to consider:
> 
> If an Expires header
> is present with a shorter value than what the proxy
> uses for timer C one of four things will happen:
> 
> 1) the receiving endpoint with 408 the request - the
>     proxy's client transaction gets to enter
>     the completed state
> 2) the requesting endpoint CANCELs and the receiving
>     endpoint returns a 487 - the proxy's client transaction
>     gets to enter the completed state
> 3) the requesting endpoint CANCELS but the receiving
>     endpoint fails to return a 487 - the proxy's client
>     transaction enters the terminal state after
>     timer C expires
> 4) both endpoints (or the network infrastructure) are
>     misbehaving - the proxy's client transaction enters
>     the terminal state after timer C expires.
> 
> 
> If the proxy honors Expires, case (4) will change; instead, the client 
> transaction will be able the terminal state after the expiration, as 
> opposed to waiting for timer C (as it seems timer C is effectively 
> infinity for proxies). So, is case 4 a frequent enough case to merit 
> this treatment?
> 
> An interesting point is what happens when there are multiple proxies. 
> Each will CANCEL at the same time. is that bad? If you work through the 
> flows, turns out its not. There is no extra messages sent beyond what 
> would be sent if the UA cancels. However, it will be a race condition to
> 
> see whether a 408 or 487 is received by the UAC (depending on whether 
> the UAS generates a 408 on expiration, or the proxy CANCELs and that 
> reaches the UAS first). Not clear that there is anything wrong with
> that.
> 
> Proposal: KISS; proxies ignore Expires
> 
> -Jonathan R.
> 

-- 
Jonathan D. Rosenberg, Ph.D.            72 Eagle Rock Avenue
Chief Scientist                         First Floor
dynamicsoft                             East Hanover, NJ 07936
[email-masked]                 FAX: (973) 952-5050
http://www.jdrosen.net                  PH:  (973) 952-5000
http://www.dynamicsoft.com

_______________________________________________
Sip mailing list  http://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [email-masked] for questions on current sip
Use [email-masked] for new developments on the application of sip

---

From: Jonathan Lennox <[email-masked]>
Date: Wed, 9 Jan 2002 11:43:59 -0500

> accepted and the issue closed.

I just realized one problem with this, or at least an inconsistency.  Sorry
I'm somewhat late on this, but it only just occured to me.

The SIP CGI spec, RFC 3050, says:

5.7 Local Expiration Handling

   If a CGI script specifies an Expires header field along with CGI-
   PROXY-REQUEST, the SIP server SHOULD track the expiration timeout
   locally as well as sending the message to the remote server.  When
   the timeout expires, the server SHOULD generate a "408 Request
   Timeout" response.  The timeout response SHOULD be handled as
   specified in section 5.8.  At the time the request is timed out, the
   server SHOULD also transmit CANCEL messages for the request.

        This allows a SIP CGI script in a proxy server to implement
        services like "Call Forward No Answer" to trigger after a
        user-determined time, even if the remote user-agent server
        is not responding or does not properly handle the Expires
        header field.

While we could allow SIP servers implementing SIP-CGI servers to handle
locally-inserted Expires headers differently from remote Expires headers, it
seems rather inelegant.

Thoughts?

-- 
Jonathan Lennox
[email-masked]

---

From: Jonathan Rosenberg <[email-masked]>
Date: Wed, 09 Jan 2002 12:08:53 -0500

There is nothing that breaks if a proxy follows Expires, its just not 
needed. I would argue, therefore, that a proxy running CGI would follow 
it, but otherwise generally not. The proper wording in the text is 
probably, "A proxy MAY honor Expires in an IVNITE and cancel when that 
time elapses, but it is generally not needed since the UA will handle it.".

-Jonathan R.