Incoming overlap dialing no longer works after sig_pri extraction.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 4 Jun 2010 14:45:03 +0000 (14:45 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 4 Jun 2010 14:45:03 +0000 (14:45 +0000)
The problem would manifest itself if your dialplan matching could accept
more digits to match than were actually dialed.  The time out waiting for
overlap digits disconnected the call instead of matching any accumulated
digits to the dialplan.

Accidental conversion of a break out of loop as a break out of switch.

(closes issue #17401)
Reported by: avalentin
Patches:
      issue17401_digit_timeout.patch uploaded by rmudgett (license 664)
Tested by: avalentin, rmudgett

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@267928 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/sig_pri.c

index 8e7c73c..e931403 100644 (file)
@@ -1477,7 +1477,7 @@ static void *pri_ss_thread(void *data)
                        exten[len++] = res;
                        exten[len] = '\0';
                } else
-                       goto exit;
+                       break;
        }
        /* if no extension was received ('unspecified') on overlap call, use the 's' extension */
        if (ast_strlen_zero(exten)) {
@@ -1522,13 +1522,6 @@ static void *pri_ss_thread(void *data)
                p->call = NULL;
        }
        return NULL;
-
-exit:
-       res = sig_pri_play_tone(p, SIG_PRI_TONE_CONGESTION);
-       if (res < 0)
-               ast_log(LOG_WARNING, "Unable to play congestion tone on channel %d\n", p->channel);
-       ast_hangup(chan);
-       return NULL;
 }
 
 void pri_event_alarm(struct sig_pri_pri *pri, int index, int before_start_pri)