From: Matthew Jordan Date: Sun, 9 Nov 2014 00:36:31 +0000 (+0000) Subject: channels/chan_mgcp: Fix regression which causes gateways to be skipped X-Git-Tag: 11.15.0-rc1~3^2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=938f6d3bc02d888a1640e6833d06cfea429a4591;p=thirdparty%2Fasterisk.git channels/chan_mgcp: Fix regression which causes gateways to be skipped In r227276, a while loop was turned into a for loop. Unfortunately, a portion of the while loop was left in the code such that, when a static gateway is encountered in the list of MGCP gateways, the next gateway would be skipped. At best, we would simply flip past a gateway; at worst, this could lead to a crash. ASTERISK-24500 #close Reported by: Xavier Hienne patches: chan_mgcp.patch uploaded by Xavier Hienne (License 6657) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@427613 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 9df76a3fb1..7e5cc92bd6 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -1808,17 +1808,12 @@ static struct mgcp_subchannel *find_subchannel_and_lock(char *name, int msgid, s /* not dynamic, check if the name matches */ } else if (name) { if (strcasecmp(g->name, at)) { - g = g->next; continue; } /* not dynamic, no name, check if the addr matches */ } else if (!name && sin) { if ((g->addr.sin_addr.s_addr != sin->sin_addr.s_addr) || (g->addr.sin_port != sin->sin_port)) { - if(!g->next) - g = find_realtime_gw(name, at, sin); - else - g = g->next; continue; } } else {