From d8ab613fdf3dca6162de8966291c3e8db6f28e6d Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Fri, 13 Oct 2006 08:23:41 +0000 Subject: Merged revisions 44994 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r44994 | crichter | 2006-10-13 09:52:41 +0200 (Fr, 13 Okt 2006) | 9 lines Merged revisions 44993 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r44993 | crichter | 2006-10-13 09:40:07 +0200 (Fr, 13 Okt 2006) | 1 line fixed issue, that the hangupcause got a wrong isdn cause at RELEASE_COMPLETE ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@45000 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/misdn/isdn_msg_parser.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'channels') diff --git a/channels/misdn/isdn_msg_parser.c b/channels/misdn/isdn_msg_parser.c index 4179d8e60..78f759203 100644 --- a/channels/misdn/isdn_msg_parser.c +++ b/channels/misdn/isdn_msg_parser.c @@ -753,8 +753,9 @@ static void parse_disconnect (struct isdn_msg msgs[], msg_t *msg, struct misdn_b int HEADER_LEN = nt?mISDNUSER_HEAD_SIZE:mISDN_HEADER_LEN; DISCONNECT_t *disconnect=(DISCONNECT_t*)((unsigned long)(msg->data+HEADER_LEN)); int location; - - dec_ie_cause(disconnect->CAUSE, (Q931_info_t *)(disconnect), &location, &bc->cause, nt,bc); + int cause; + dec_ie_cause(disconnect->CAUSE, (Q931_info_t *)(disconnect), &location, &cause, nt,bc); + if (cause>0) bc->cause=cause; dec_ie_progress(disconnect->PROGRESS, (Q931_info_t *)disconnect, &bc->progress_coding, &bc->progress_location, &bc->progress_indicator, nt, bc); #if DEBUG @@ -823,8 +824,10 @@ static void parse_release (struct isdn_msg msgs[], msg_t *msg, struct misdn_bcha int HEADER_LEN = nt?mISDNUSER_HEAD_SIZE:mISDN_HEADER_LEN; RELEASE_t *release=(RELEASE_t*)((unsigned long)(msg->data+HEADER_LEN)); int location; + int cause; - dec_ie_cause(release->CAUSE, (Q931_info_t *)(release), &location, &bc->cause, nt,bc); + dec_ie_cause(release->CAUSE, (Q931_info_t *)(release), &location, &cause, nt,bc); + if (cause>0) bc->cause=cause; #if DEBUG printf("Parsing RELEASE Msg\n"); #endif @@ -854,6 +857,7 @@ static void parse_release_complete (struct isdn_msg msgs[], msg_t *msg, struct m int HEADER_LEN = nt?mISDNUSER_HEAD_SIZE:mISDN_HEADER_LEN; RELEASE_COMPLETE_t *release_complete=(RELEASE_COMPLETE_t*)((unsigned long)(msg->data+HEADER_LEN)); int location; + int cause; iframe_t *frm = (iframe_t*) msg->data; struct misdn_stack *stack=get_stack_by_bc(bc); @@ -874,7 +878,8 @@ static void parse_release_complete (struct isdn_msg msgs[], msg_t *msg, struct m return; } } - dec_ie_cause(release_complete->CAUSE, (Q931_info_t *)(release_complete), &location, &bc->cause, nt,bc); + dec_ie_cause(release_complete->CAUSE, (Q931_info_t *)(release_complete), &location, &cause, nt,bc); + if (cause>0) bc->cause=cause; #if DEBUG printf("Parsing RELEASE_COMPLETE Msg\n"); @@ -1050,8 +1055,10 @@ static void parse_status (struct isdn_msg msgs[], msg_t *msg, struct misdn_bchan int HEADER_LEN = nt?mISDNUSER_HEAD_SIZE:mISDN_HEADER_LEN; STATUS_t *status=(STATUS_t*)((unsigned long)(msg->data+HEADER_LEN)); int location; + int cause; - dec_ie_cause(status->CAUSE, (Q931_info_t *)(status), &location, &bc->cause, nt,bc); + dec_ie_cause(status->CAUSE, (Q931_info_t *)(status), &location, &cause, nt,bc); + if (cause>0) bc->cause=cause; ; #if DEBUG -- cgit v1.2.3