aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-21 17:25:09 +0000
committerbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2008-07-21 17:25:09 +0000
commit553e9a1da4b0013e8c8ab28e510d32e51cc624e7 (patch)
tree4f3f8f755f0a8b5b8169bca68d947bfd5a51ca56 /channels
parente58358baf898002b6b92855dc45c8032feee2cba (diff)
Merged revisions 132466 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r132466 | bbryant | 2008-07-21 12:22:02 -0500 (Mon, 21 Jul 2008) | 3 lines Fix an issue in iax2 where a call that's been rejected still kept an open channel on the side that attempted to make the call (not the side of the call that rejected the call). Changes were load tested and also approved by Russell. ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@132467 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_iax2.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index aeb079aff..de1b45042 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -3697,16 +3697,14 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout)
static int iax2_hangup(struct ast_channel *c)
{
unsigned short callno = PTR_TO_CALLNO(c->tech_pvt);
- int alreadygone;
struct iax_ie_data ied;
memset(&ied, 0, sizeof(ied));
ast_mutex_lock(&iaxsl[callno]);
if (callno && iaxs[callno]) {
ast_debug(1, "We're hanging up %s now...\n", c->name);
- alreadygone = ast_test_flag(iaxs[callno], IAX_ALREADYGONE);
/* Send the hangup unless we have had a transmission error or are already gone */
iax_ie_append_byte(&ied, IAX_IE_CAUSECODE, (unsigned char)c->hangupcause);
- if (!iaxs[callno]->error && !alreadygone) {
+ if (!iaxs[callno]->error && !ast_test_flag(iaxs[callno], IAX_ALREADYGONE)) {
send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_HANGUP, 0, ied.buf, ied.pos, -1);
if (!iaxs[callno]) {
ast_mutex_unlock(&iaxsl[callno]);
@@ -3716,7 +3714,7 @@ static int iax2_hangup(struct ast_channel *c)
/* Explicitly predestroy it */
iax2_predestroy(callno);
/* If we were already gone to begin with, destroy us now */
- if (alreadygone && iaxs[callno]) {
+ if (iaxs[callno]) {
ast_debug(1, "Really destroying %s now...\n", c->name);
iax2_destroy(callno);
}