From d520d238f1edbbc567d58342a19352d82c7c0a1f Mon Sep 17 00:00:00 2001 From: Olle Johansson <oej@edvina.net> Date: Sun, 4 Jun 2006 21:01:13 +0000 Subject: [PATCH] - Fix more problems in transfer code (thanks Tholo!) - Add debug for hangup not in UP state git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@32137 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_sip.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/channels/chan_sip.c b/channels/chan_sip.c index f2eb0f6f64..b366ea5493 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2908,8 +2908,11 @@ static int sip_hangup(struct ast_channel *ast) return 0; } /* If the call is not UP, we need to send CANCEL instead of BYE */ - if (ast->_state != AST_STATE_UP) + if (ast->_state != AST_STATE_UP) { needcancel = TRUE; + if (option_debug > 3) + ast_log(LOG_DEBUG, "Hanging up channel in state %s (not UP)\n", ast_state2str(ast->_state)); + } /* Disconnect */ p = ast->tech_pvt; @@ -7318,23 +7321,23 @@ static int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoi /* Check for arguments in the refer_to header */ if ((ptr = strchr(refer_to, '?'))) { /* Search for arguments */ - *ptr = '\0'; - ptr++; + *ptr++ = '\0'; if (!strncasecmp(ptr, "REPLACES=", 9)) { - char *to, *from; + char *to = NULL, *from = NULL; /* This is an attended transfer */ referdata->attendedtransfer = 1; strncpy(referdata->replaces_callid, ptr+9, sizeof(referdata->replaces_callid)); ast_uri_decode(referdata->replaces_callid); - if ((ptr = strchr(referdata->replaces_callid, ';'))) /* Remove options */ { - *ptr = '\0'; - ptr++; + if ((ptr = strchr(referdata->replaces_callid, ';'))) /* Find options */ { + *ptr++ = '\0'; } - /* Find the different tags before we destroy the string */ - to = strcasestr(ptr, "to-tag="); - from = strcasestr(ptr, "from-tag="); + if (ptr) { + /* Find the different tags before we destroy the string */ + to = strcasestr(ptr, "to-tag="); + from = strcasestr(ptr, "from-tag="); + } /* Grab the to header */ if (to) { -- GitLab