Fix reload skinny with active devices.
authorDamien Wedhorn <voip@facts.com.au>
Wed, 6 Feb 2013 08:44:32 +0000 (08:44 +0000)
committerDamien Wedhorn <voip@facts.com.au>
Wed, 6 Feb 2013 08:44:32 +0000 (08:44 +0000)
Patch ensures that d->activeline and l->activesub are moved over to the
new device and line so that on callend the appropriate subs can be found
to complete hangup before device resets.

(closes issue ASTERISK-16610)
Reported by: wedhorn
Tested by: snuffy, myself
Patches:
    skinny-reloadactive01.diff uploaded by wedhorn (license 5019)
........

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

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

channels/chan_skinny.c

index 5e18859..ac5974e 100644 (file)
@@ -7955,9 +7955,13 @@ static struct skinny_device *config_device(const char *dname, struct ast_variabl
                                        }
                                        ast_mutex_lock(&ltemp->lock);
                                        l->instance = ltemp->instance;
+                                       if (l == temp->activeline) {
+                                               d->activeline = l;
+                                       }
                                        if (!AST_LIST_EMPTY(&ltemp->sub)) {
                                                ast_mutex_lock(&l->lock);
                                                l->sub = ltemp->sub;
+                                               l->activesub = ltemp->activesub;
                                                AST_LIST_TRAVERSE(&l->sub, sub, list) {
                                                        sub->line = l;
                                                }