Fix loss of voice after second call drops (on a second line) in case using multiple...
authorIgor Goncharovskiy <igor.goncharovsky@gmail.com>
Thu, 16 Oct 2014 06:22:07 +0000 (06:22 +0000)
committerIgor Goncharovskiy <igor.goncharovsky@gmail.com>
Thu, 16 Oct 2014 06:22:07 +0000 (06:22 +0000)
Reported by: Rustam Khankishyiev
(closes issue ASTERISK-23846)
........

Merged revisions 425667 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 425668 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 425669 from http://svn.asterisk.org/svn/asterisk/branches/13

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

channels/chan_unistim.c

index 7820d05..91cc402 100644 (file)
@@ -4953,18 +4953,20 @@ static int unistim_hangup(struct ast_channel *ast)
        } else if (sub->subtype == SUB_RING) {
                send_no_ring(s);
                for (i = 0; i < FAVNUM; i++) {
-                       if (!soft_key_visible(s->device, i))
+                       if (!soft_key_visible(s->device, i)) {
                                continue;
-                       if (d->ssub[i] != sub)
+                       }
+                       if (d->ssub[i] != sub) {
+                               if (d->ssub[i] != NULL) { /* Found other subchannel active other then hangup'ed one */
+                                       end_call = 0;
+                               }
                                continue;
+                       }
                        if (is_key_line(d, i) && !strcmp(l->name, d->sline[i]->name)) {
                                send_favorite_short(i, FAV_LINE_ICON, s);
                                d->ssub[i] = NULL;
                                continue;
                        }
-                       if (d->ssub[i] != NULL) { /* Found other subchannel active other then hangup'ed one */
-                               end_call = 0;
-                       }
                }
        }
        if (end_call) {