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
