From 141ab56b86d3c0b6a87fdda895470bcc2714dd80 Mon Sep 17 00:00:00 2001 From: Steve Murphy Date: Tue, 25 Nov 2008 22:41:10 +0000 Subject: [PATCH] (closes issue #12694) Reported by: yraber Patches: 12694.2nd.diff uploaded by murf (license 17) Tested by: murf, laurav Thanks to file (Joshua Colp) for his IAX fix. the change to cdr.c allows no-answer to percolate up into CDR's, and feels like the right place to locate this fix; if BUSY is done here, no-answer should be, too. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@159316 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_iax2.c | 7 +++++++ main/cdr.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 6349f3249e..4d9165cac8 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -7534,6 +7534,13 @@ retryowner: iaxs[fr->callno]->videoformat = f.subclass & ~0x1; } } + if (f.frametype == AST_FRAME_CONTROL && iaxs[fr->callno]->owner) { + if (f.subclass == AST_CONTROL_BUSY) { + iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_BUSY; + } else if (f.subclass == AST_CONTROL_CONGESTION) { + iaxs[fr->callno]->owner->hangupcause = AST_CAUSE_CONGESTION; + } + } if (f.frametype == AST_FRAME_IAX) { AST_SCHED_DEL(sched, iaxs[fr->callno]->initid); /* Handle the IAX pseudo frame itself */ diff --git a/main/cdr.c b/main/cdr.c index 353ff97c87..39045c9edd 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -766,6 +766,9 @@ int ast_cdr_disposition(struct ast_cdr *cdr, int cause) case AST_CAUSE_BUSY: ast_cdr_busy(cdr); break; + case AST_CAUSE_NO_ANSWER: + ast_cdr_noanswer(cdr); + break; case AST_CAUSE_NORMAL: break; default: