Segfault on shutdown when confbridge is active
authorKinsey Moore <kmoore@digium.com>
Tue, 12 Jul 2011 14:40:16 +0000 (14:40 +0000)
committerKinsey Moore <kmoore@digium.com>
Tue, 12 Jul 2011 14:40:16 +0000 (14:40 +0000)
When undergoing a shutdown and channels are kicked out of a bridge, a segfault
occurs because ConfBridge tries to play sounds on the bridge after the
underlying channels have been blown away due to the shutdown.

(closes ASTERISK-18040)
Review: https://reviewboard.asterisk.org/r/1283/

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

apps/app_confbridge.c

index 80c84ed..0ca2c6e 100644 (file)
@@ -1473,6 +1473,13 @@ static int confbridge_exec(struct ast_channel *chan, const char *data)
                &conference_bridge_user.tech_args);
        send_leave_event(conference_bridge_user.chan, conference_bridge->name);
 
+       /* if we're shutting down, don't attempt to do further processing */
+       if (ast_shutting_down()) {
+               leave_conference_bridge(conference_bridge, &conference_bridge_user);
+               conference_bridge = NULL;
+               goto confbridge_cleanup;
+       }
+
        /* If this user was a video source, we need to clean up and possibly pick a new source. */
        handle_video_on_exit(conference_bridge, conference_bridge_user.chan);