]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route 33/1233/1
authorMatt Jordan <mjordan@digium.com>
Thu, 10 Sep 2015 13:39:21 +0000 (08:39 -0500)
committerMatt Jordan <mjordan@digium.com>
Thu, 10 Sep 2015 13:39:21 +0000 (08:39 -0500)
We will only rewrite the Contact header if there is no Record-Route header in
the received request. If a malfunctioning proxy places a Record-Route header
into a REGISTER request, we will decide that we shouldn't update the IP/port
in the Contact header, and we will end up storing a contact with an AoR that
contains the NAT'd IP address.

While it is nice to have the proxy *not* send a Record-Route in a REGISTER
request, it's also a good idea to not process the header in a non-dialog
message. This patch updates the code to explicitly ignore the Record-Route
header in REGISTER requests.

ASTERISK-25387 #close

Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f

res/res_pjsip_nat.c

index c32b71d76c043077721109fea5a0dd94cbbf360f..a2eb6ad860c0a5b8d7eed67439c5c5449c1facef 100644 (file)
@@ -56,7 +56,7 @@ static int rewrite_route_set(pjsip_rx_data *rdata, pjsip_dialog *dlg)
                                break;
                        }
                }
-       } else {
+       } else if (pjsip_method_cmp(&rdata->msg_info.msg->line.req.method, &pjsip_register_method)) {
                rr = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_RECORD_ROUTE, NULL);
        }