From 26267c1a9c456588f8ef4048f20a17a0a75fef34 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Mon, 29 Oct 2012 21:01:21 +0000 Subject: [PATCH] Prevent resetting of NATted realtime peer address on reload. If a "sip reload" is issued for a SIP peer, then his IP address will be cleared, thus resulting in forgetting the public IP address. Asterisk will then attempt to route SIP traffic to the private IP address. The fix here is to make "sip reload" ignore realtime peers when "host = dynamic" is spotted. Realtime peers can now only have their IP address reset if they have gone from being not dynamic to being dynamic. (closes issue ASTERISK-18203) reported by daren ferreira (closes issue ASTERISK-20572) reported by JoshE Patches: fix_nat_realtime.diff uploaded by JoshE (license #6075) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@375415 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index fcdd4830d3..ba7231ae25 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -27956,7 +27956,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str } else if (!strcasecmp(v->name, "host")) { if (!strcasecmp(v->value, "dynamic")) { /* They'll register with us */ - if (!found || !peer->host_dynamic) { + if ((!found && !realtime) || !peer->host_dynamic) { /* Initialize stuff if this is a new peer, or if it used to * not be dynamic before the reload. */ ast_sockaddr_setnull(&peer->addr); -- 2.47.3