aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_misdn.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r--channels/chan_misdn.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 81577113b..ac7f2fc24 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -3143,16 +3143,12 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
if (!rr->port)
rr->port = misdn_cfg_get_next_port_spin(rr->port);
- for (; rr->port > 0 && rr->port != port_start;
- rr->port = misdn_cfg_get_next_port_spin(rr->port)) {
+ for (; rr->port > 0; rr->port = misdn_cfg_get_next_port_spin(rr->port)) {
int port_up;
int check;
int max_chan;
int last_chance = 0;
- if (!port_start)
- port_start = rr->port;
-
misdn_cfg_get(rr->port, MISDN_CFG_GROUPNAME, cfg_group, BUFFERSIZE);
if (strcasecmp(cfg_group, group))
continue;
@@ -3166,6 +3162,12 @@ static struct ast_channel *misdn_request(const char *type, int format, void *dat
if (check && port_up < 0)
ast_log(LOG_WARNING,"This port (%d) is blocked\n", rr->port);
+ if ((port_start == rr->port) && (port_up <= 0))
+ break;
+
+ if (!port_start)
+ port_start = rr->port;
+
if (port_up <= 0)
continue;