From a1442538b5a44e414d497cd414ba3f5fe4c0e68b Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Wed, 15 Sep 2004 19:27:23 +0000 Subject: [PATCH] Update mp3 copyright header, fix pedantic + register in SIP (bug #2422) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3786 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_mp3.c | 4 ++-- channels/chan_sip.c | 27 +++++++++++++-------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/apps/app_mp3.c b/apps/app_mp3.c index eff9f701f5..0cd8dfa59c 100755 --- a/apps/app_mp3.c +++ b/apps/app_mp3.c @@ -3,9 +3,9 @@ * * Silly application to play an MP3 file -- uses mpg123 * - * Copyright (C) 1999, Mark Spencer + * Copyright (C) 1999-2004, Digium, Inc. * - * Mark Spencer <markster@linux-support.net> + * Mark Spencer <markster@digium.com> * * This program is free software, distributed under the terms of * the GNU General Public License diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 19e476e795..a0ace0dce3 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2393,11 +2393,9 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si struct sip_pvt *p; char *callid; char tmp[256] = ""; - char tmp2[256] = ""; char iabuf[INET_ADDRSTRLEN]; char *cmd; char *tag = "", *c; - char *tag2 = ""; callid = get_header(req, "Call-ID"); @@ -2415,7 +2413,10 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si c = strchr(tmp, ' '); if (c) *c = '\0'; - strncpy(tmp, get_header(req, "From"), sizeof(tmp) - 1); + if (!strcasecmp(cmd, "SIP/2.0")) + strncpy(tmp, get_header(req, "To"), sizeof(tmp) - 1); + else + strncpy(tmp, get_header(req, "From"), sizeof(tmp) - 1); tag = strstr(tmp, "tag="); if (tag) { tag += 4; @@ -2423,14 +2424,6 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si if (c) *c = '\0'; } - strncpy(tmp2, get_header(req, "To"), sizeof(tmp2) - 1); - tag2 = strstr(tmp2, "tag="); - if (tag2) { - tag2 += 4; - c = strchr(tag2, ';'); - if (c) - *c = '\0'; - } } @@ -2442,7 +2435,7 @@ static struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *si p = iflist; while(p) { if (!strcmp(p->callid, callid) && - (!pedanticsipchecking || !tag || !tag2 || ast_strlen_zero(p->theirtag) || !strcmp(p->theirtag, tag) || !strcmp(p->theirtag, tag2))) { + (!pedanticsipchecking || !tag || ast_strlen_zero(p->theirtag) || !strcmp(p->theirtag, tag))) { /* Found the call */ ast_mutex_lock(&p->lock); ast_mutex_unlock(&iflock); @@ -4116,10 +4109,16 @@ static int transmit_register(struct sip_registry *r, char *cmd, char *auth, char if (strchr(r->username, '@')) { snprintf(from, sizeof(from), "<sip:%s>;tag=as%08x", r->username, p->tag); - snprintf(to, sizeof(to), "<sip:%s>", r->username); + if (!ast_strlen_zero(p->theirtag)) + snprintf(to, sizeof(to), "<sip:%s>;tag=%s", r->username, p->theirtag); + else + snprintf(to, sizeof(to), "<sip:%s>", r->username); } else { snprintf(from, sizeof(from), "<sip:%s@%s>;tag=as%08x", r->username, p->tohost, p->tag); - snprintf(to, sizeof(to), "<sip:%s@%s>", r->username, p->tohost); + if (!ast_strlen_zero(p->theirtag)) + snprintf(to, sizeof(to), "<sip:%s@%s>;tag=%s", r->username, p->tohost, p->theirtag); + else + snprintf(to, sizeof(to), "<sip:%s@%s>", r->username, p->tohost); } snprintf(addr, sizeof(addr), "sip:%s", r->hostname); -- GitLab