2010/4/9 Iñaki Baz Castillo ibc@aliax.net:
I understand your point, but it would make more sense if 408 is just caused when a transaction fails due to fr_timer (no provisional response from destination). But this is not the case as TM generates 408 when fr_inv_timer expires (maybe 60-120 seconds after receiving a provisional response). So the 408 is a confussing response:
- In the first case (fr_timer expires) there has been a real error (alarm).
- In the second case (fr_inv_timer) there has been no problem, just
the call progress took so long that the proxy has decided to cancel it.
Perhaps in the second case the proxy should generate a 480 and leave the 408 just for fr_timer expiration?
For example, RFC 3398 (SIP-ISUP mapping) states this mapping:
Response received Cause value in the REL 408 Request timeout 102 Recovery on timer expiry
ISUP Cause value SIP response 102 recovery of timer expiry 504 Gateway timeout
Humm, perhaps TM should generate a 504 when fr_inv_timer expires if the INVITE has no Expires header?:
RFC 3261
21.5.5 504 Server Time-out
The server did not receive a timely response from an external server it accessed in attempting to process the request. 408 (Request Timeout) should be used instead if there was no response within the period specified in the Expires header field from the upstream server.
But the above leaves the door open for a 408 even if the proxy receives provisiona responses... Humm, I will open a thread in sip-implementors about it.