When queueing frames, it's pointless to queue a frame after a HANGUP frame is queued...
authorMark Spencer <markster@digium.com>
Tue, 31 Aug 2004 17:30:46 +0000 (17:30 +0000)
committerMark Spencer <markster@digium.com>
Tue, 31 Aug 2004 17:30:46 +0000 (17:30 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3697 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channel.c

index f770b98..5c3b4a1 100755 (executable)
--- a/channel.c
+++ b/channel.c
@@ -383,6 +383,12 @@ int ast_queue_frame(struct ast_channel *chan, struct ast_frame *fin)
        prev = NULL;
        cur = chan->pvt->readq;
        while(cur) {
+               if ((cur->frametype == AST_FRAME_CONTROL) && (cur->subclass == AST_CONTROL_HANGUP)) {
+                       /* Don't bother actually queueing anything after a hangup */
+                       ast_frfree(f);
+                       ast_mutex_unlock(&chan->lock);
+                       return 0;
+               }
                prev = cur;
                cur = cur->next;
                qlen++;