From: Russell Bryant Date: Sun, 27 Feb 2005 02:37:23 +0000 (+0000) Subject: move the processing of SDP data to after determining the user (bug #3660) X-Git-Tag: 1.0.11.1~208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1c93a8ff32a6721c12f9901ac087de84ee75524;p=thirdparty%2Fasterisk.git move the processing of SDP data to after determining the user (bug #3660) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5096 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index 09e8040381..6c8f96a732 100755 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,9 @@ Asterisk 1.0.6 -- Asterisk was not sending the same From: line in SIP messages during certain times. Fixed to make sure it stays the same. This makes some providers happier, to a working state. -- Certain circumstances involving a blank callerid caused asterisk to segmentation fault. + -- There was a problem incorrectly matching codec availablity when global preferences were + different from that of the user. To fix this, processing of SDP data has been moved + to after determining who the call is coming from. -- chan_zap: -- During a certain scenario when using flash and '#' transfers you would hear the other person and the music they were hearing. This has been fixed. diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 6873dce625..e0c94e6199 100755 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -7257,7 +7257,6 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc /* We do NOT destroy p here, so that our response will be accepted */ return 0; } - /* Process the SDP portion */ if (!ignore) { /* Use this as the basis */ if (debug) @@ -7269,16 +7268,6 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc p->pendinginvite = seqno; copy_request(&p->initreq, req); check_via(p, req); - if (!ast_strlen_zero(get_header(req, "Content-Type"))) { - if (process_sdp(p, req)) - return -1; - } else { - p->jointcapability = p->capability; - ast_log(LOG_DEBUG, "Hm.... No sdp for the moment\n"); - } - /* Queue NULL frame to prod ast_rtp_bridge if appropriate */ - if (p->owner) - ast_queue_frame(p->owner, &af); } else if (debug) ast_verbose("Ignoring this request\n"); if (!p->lastinvite && !ignore && !p->owner) { @@ -7295,6 +7284,17 @@ static int handle_request(struct sip_pvt *p, struct sip_request *req, struct soc } return 0; } + /* Process the SDP portion */ + if (!ast_strlen_zero(get_header(req, "Content-Type"))) { + if (process_sdp(p, req)) + return -1; + } else { + p->jointcapability = p->capability; + ast_log(LOG_DEBUG, "Hm.... No sdp for the moment\n"); + } + /* Queue NULL frame to prod ast_rtp_bridge if appropriate */ + if (p->owner) + ast_queue_frame(p->owner, &af); /* Initialize the context if it hasn't been already */ if (ast_strlen_zero(p->context)) strncpy(p->context, default_context, sizeof(p->context) - 1);