mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-09 03:18:30 +00:00
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
This commit is contained in:
@@ -1808,17 +1808,12 @@ static struct mgcp_subchannel *find_subchannel_and_lock(char *name, int msgid, s
|
|||||||
/* not dynamic, check if the name matches */
|
/* not dynamic, check if the name matches */
|
||||||
} else if (name) {
|
} else if (name) {
|
||||||
if (strcasecmp(g->name, at)) {
|
if (strcasecmp(g->name, at)) {
|
||||||
g = g->next;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/* not dynamic, no name, check if the addr matches */
|
/* not dynamic, no name, check if the addr matches */
|
||||||
} else if (!name && sin) {
|
} else if (!name && sin) {
|
||||||
if ((g->addr.sin_addr.s_addr != sin->sin_addr.s_addr) ||
|
if ((g->addr.sin_addr.s_addr != sin->sin_addr.s_addr) ||
|
||||||
(g->addr.sin_port != sin->sin_port)) {
|
(g->addr.sin_port != sin->sin_port)) {
|
||||||
if(!g->next)
|
|
||||||
g = find_realtime_gw(name, at, sin);
|
|
||||||
else
|
|
||||||
g = g->next;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user