instead of hanging up channel after masquerade (risking deadlock), mark it as a zombi...
authorMark Spencer <markster@digium.com>
Mon, 14 Jul 2003 03:45:53 +0000 (03:45 +0000)
committerMark Spencer <markster@digium.com>
Mon, 14 Jul 2003 03:45:53 +0000 (03:45 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1180 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_agent.c

index 4d9b2d5..e6c82d0 100755 (executable)
@@ -632,9 +632,11 @@ static int check_availability(struct agent_pvt *newlyavailable, int needlock)
                        if (p->abouttograb) {
                                ast_setstate(parent, AST_STATE_UP);
                                ast_setstate(chan, AST_STATE_UP);
+                               /* Go ahead and mark the channel as a zombie so that masquerade will
+                                  destroy it for us, and we need not call ast_hangup */
+                               chan->zombie = 1;
                                ast_channel_masquerade(parent, chan);
                                p->abouttograb = 0;
-                               ast_hangup(chan);
                        } else {
                                ast_log(LOG_DEBUG, "Sneaky, parent disappeared in the mean time...\n");
                                agent_cleanup(newlyavailable);