From: Jason Parker Date: Wed, 2 Mar 2011 21:08:39 +0000 (+0000) Subject: Add HangupRequest manager event, to specify when/where a channel gets hung up. X-Git-Tag: 11.0.0-beta1~1809 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a7bfa104728212a4c0ee61bf5ddf4f0a9415ede0;p=thirdparty%2Fasterisk.git Add HangupRequest manager event, to specify when/where a channel gets hung up. (closes issue #18226) Reported by: clegall_proformatique Patches: asterisk_1.8_293157_hanguprequests.svn.patch uploaded by clegall proformatique (license 1139) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@309300 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/channel.c b/main/channel.c index cba634bae3..c3b3981f15 100644 --- a/main/channel.c +++ b/main/channel.c @@ -1496,6 +1496,11 @@ int ast_queue_hangup(struct ast_channel *chan) /* Yeah, let's not change a lock-critical value without locking */ if (!ast_channel_trylock(chan)) { chan->_softhangup |= AST_SOFTHANGUP_DEV; + manager_event(EVENT_FLAG_CALL, "HangupRequest", + "Channel: %s\r\n" + "Uniqueid: %s\r\n", + chan->name, + chan->uniqueid); ast_channel_unlock(chan); } return ast_queue_frame(chan, &f); @@ -1515,6 +1520,13 @@ int ast_queue_hangup_with_cause(struct ast_channel *chan, int cause) if (cause < 0) f.data.uint32 = chan->hangupcause; + manager_event(EVENT_FLAG_CALL, "HangupRequest", + "Channel: %s\r\n" + "Uniqueid: %s\r\n" + "Cause: %d\r\n", + chan->name, + chan->uniqueid, + cause); ast_channel_unlock(chan); } @@ -2661,6 +2673,13 @@ int ast_softhangup(struct ast_channel *chan, int cause) ast_channel_lock(chan); res = ast_softhangup_nolock(chan, cause); + manager_event(EVENT_FLAG_CALL, "SoftHangupRequest", + "Channel: %s\r\n" + "Uniqueid: %s\r\n" + "Cause: %d\r\n", + chan->name, + chan->uniqueid, + cause); ast_channel_unlock(chan); return res;