Hi

I have a confusion about error response handling of proxy. 

A stateful proxy MUST send a final response to a response context's server
transaction if no final responses have been immediately forwarded and all
client transactions in this response context have been terminated. Reception
of an error response causes client transaction to go in "completed" state
and starts timer D (for at least 32 seconds for unreliable transport). The
expiry of timer D will cause termination of client transaction and ONLY
after termination of all client transactions (can be only one) proxy CAN
forward the best error response. 

This means there will be at least 32-second delay (timer D for unreliable
transport) between reception of an error response and passing it to server
transaction. This cause delay in forwarding response at the proxy. As the
response traverse the same path as the request, this delay will take place
at every proxy. Is this the way it is suppose to happen ? Is there any way
to avoid this delay ?

following are the references from RFC 3261

Section 16.7, clause # 5

Until a final response has been sent on the server transaction, the
following responses MUST be forwarded immediately:
-  Any provisional response other than 100 (Trying)
-  Any 2xx response

After a final response has been sent on the server transaction, the
following responses MUST be forwarded immediately:
-  Any 2xx response to an INVITE request

A stateful proxy MUST NOT immediately forward any other responses. Those
responses that are candidates for forwarding later as the "best" response
have been gathered.

Section 16.7, clause # 6

A stateful proxy MUST send a final response to a response context's server
transaction if no final responses have been immediately forwarded by the
above rules and all client transactions in this response context have been
terminated.

The stateful proxy MUST choose the "best" final response among those
received and stored in the response context.

Section 17.1.1.2, Paragraph # 7

When in either the "Calling" or "Proceeding" states, reception of a response
with status code from 300-699 MUST cause the client transaction to
transition to "Completed". ... The client transaction SHOULD start timer D
when it enters the "Completed" state, with a value of at least 32 seconds
for unreliable transports, and a value of zero seconds for reliable
transports.

Section 17.1.1.2, Paragraph # 9

If timer D fires while the client transaction is in the "Completed" state,
the client transaction MUST move to the terminated state.

Section 17.1.1.2, Paragraph # 11

The client transaction MUST be destroyed the instant it enters the
"Terminated" state ...


Thanks in advance

Waqqas

_______________________________________________
Sip-implementors mailing list
[EMAIL PROTECTED]
http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors

Reply via email to