From 1f62b98d45c38e1185dbb9d51a0343972f4cbfe0 Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Fri, 10 Aug 2007 13:24:03 +0000 Subject: [PATCH] fixed a bug with the useruser information element. We send them now also in the disconnect message. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78936 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_misdn.c | 9 +++++++++ channels/misdn/ie.c | 2 +- channels/misdn/isdn_msg_parser.c | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 164ff8a476..0c6c25c9a5 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -2416,6 +2416,15 @@ static int misdn_hangup(struct ast_channel *ast) bc=p->bc; + if (bc) { + const char *tmp=pbx_builtin_getvar_helper(ast,"MISDN_USERUSER"); + if (tmp) { + ast_log(LOG_NOTICE, "MISDN_USERUSER: %s\n", tmp); + strcpy(bc->uu, tmp); + bc->uulen=strlen(bc->uu); + } + } + MISDN_ASTERISK_TECH_PVT(ast)=NULL; p->ast=NULL; diff --git a/channels/misdn/ie.c b/channels/misdn/ie.c index 4093805b5b..9140041320 100644 --- a/channels/misdn/ie.c +++ b/channels/misdn/ie.c @@ -1353,7 +1353,7 @@ static void enc_ie_useruser(unsigned char **ntmode, msg_t *msg, int protocol, ch if (MISDN_IE_DEBG) printf(" protocol=%d user-user%s\n", protocol, debug); - l = user_len; + l = user_len+1; p = msg_put(msg, l+3); if (nt) *ntmode = p+1; diff --git a/channels/misdn/isdn_msg_parser.c b/channels/misdn/isdn_msg_parser.c index a2e879fd07..4630c3780d 100644 --- a/channels/misdn/isdn_msg_parser.c +++ b/channels/misdn/isdn_msg_parser.c @@ -797,6 +797,12 @@ static msg_t *build_disconnect (struct isdn_msg msgs[], struct misdn_bchannel *b enc_ie_cause(&disconnect->CAUSE, msg, (nt)?1:0, bc->out_cause,nt,bc); if (nt) enc_ie_progress(&disconnect->PROGRESS, msg, 0, nt?1:5, 8 ,nt,bc); + + if (bc->uulen) { + int protocol=4; + enc_ie_useruser(&disconnect->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc); + cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu); + } #if DEBUG printf("Building DISCONNECT Msg\n"); @@ -868,6 +874,12 @@ static msg_t *build_release (struct isdn_msg msgs[], struct misdn_bchannel *bc, if (bc->out_cause>= 0) enc_ie_cause(&release->CAUSE, msg, nt?1:0, bc->out_cause, nt,bc); + + if (bc->uulen) { + int protocol=4; + enc_ie_useruser(&release->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc); + cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu); + } #if DEBUG printf("Building RELEASE Msg\n"); @@ -918,6 +930,12 @@ static msg_t *build_release_complete (struct isdn_msg msgs[], struct misdn_bchan release_complete=(RELEASE_COMPLETE_t*)((msg->data+HEADER_LEN)); enc_ie_cause(&release_complete->CAUSE, msg, nt?1:0, bc->out_cause, nt,bc); + + if (bc->uulen) { + int protocol=4; + enc_ie_useruser(&release_complete->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc); + cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu); + } #if DEBUG printf("Building RELEASE_COMPLETE Msg\n");