SIP Router Project
FS#152 - t_reply 302 redirects use wrong to-tag after fr_inv_timer fires
Opened by Andrew Mortensen (admorten) - Saturday, 17 September 2011, 16:29 GMT
Last edited by Daniel-Constantin Mierla (miconda) - Friday, 04 November 2011, 22:05 GMT
If the failure route is armed and a call’s fr_inv_timer fires following a 180 with to-tag from the callee, invoking t_reply(”302”, “Redirect”) from the failure route does not use the to-tag from the callee. Instead, sip-router generates a new to-tag and attaches that to the 302 response. Our Polycom handsets then ignore the 302 because the to-tag does not match the to-tag it already received in the 180 from the callee. (Oddly, our Cisco gateways will happily redirect regardless of the unexpected to-tag in the 302. I suspect it has to do with a different reading of RFC3261 12.1 and 12.3.)
The attached patch stores the early dialog’s to-tag in t→fwded_totags, and passes the winning to-tag into build_res_buf_from_sip_req in the _reply() routine. This ensures the correct to-tag is part of the final response, so the UAC considers it an in-dialog response, and redirects as instructed.