From 1dd0e220bf98ca93b825d7b5af4160f7718eab38 Mon Sep 17 00:00:00 2001
From: Matt Jordan <mjordan@digium.com>
Date: Thu, 10 Sep 2015 08:39:21 -0500
Subject: [PATCH] res/res_pjsip_nat: Ignore REGISTER requests when looking for
 a Record-Route

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 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/res/res_pjsip_nat.c b/res/res_pjsip_nat.c
index c32b71d76c..a2eb6ad860 100644
--- a/res/res_pjsip_nat.c
+++ b/res/res_pjsip_nat.c
@@ -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);
 	}
 
-- 
GitLab