]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Clear out received tag in 407/401's (bug #3885)
authorRussell Bryant <russell@russellbryant.com>
Tue, 5 Apr 2005 10:08:53 +0000 (10:08 +0000)
committerRussell Bryant <russell@russellbryant.com>
Tue, 5 Apr 2005 10:08:53 +0000 (10:08 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5404 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
channels/chan_sip.c

diff --git a/CHANGES b/CHANGES
index 38fbdf3584eedfe35c3af7d7c782defc3502ee1b..7f1f9725b61d2c27a25c3ed1f19838c4e3966ee2 100755 (executable)
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,8 @@
     -- We no longer send a "to" tag on "100 Trying" messages, as it is inappropriate
        to do so.
     -- We now respond correctly to an invite for T.38 with a "488 Not acceptable here"
+    -- We now discard saved tags on 401/407 responses in case the provider we're talking
+       to tries to pull a dirty trick on us and change it.
  -- chan_mgcp
     -- Fixed setting of accountcode
     -- Fixed where *67 to block callerid only worked for first call
index 37fe16e37f90b39e8fdfad788782f349a41469b5..f24d29c4b491103145f9a9121cb3db5e66453b17 100755 (executable)
@@ -6821,6 +6821,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                                /* First we ACK */
                                transmit_request(p, "ACK", seqno, 0, 0);
                                /* Then we AUTH */
+                               p->theirtag[0]='\0';    /* forget their old tag, so we don't match tags when getting response */
                                if ((p->authtries > 1) || do_proxy_auth(p, req, "WWW-Authenticate", "Authorization", "INVITE", 1)) {
                                        ast_log(LOG_NOTICE, "Failed to authenticate on INVITE to '%s'\n", get_header(&p->initreq, "From"));
                                        p->needdestroy = 1;
@@ -6855,6 +6856,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
                                /* Then we AUTH */
                                /* But only if the packet wasn't marked as ignore in handle_request */
                                if(!ignore){
+                                       p->theirtag[0]='\0';    /* forget their old tag, so we don't match tags when getting response */
                                        if ((p->authtries > 1) || do_proxy_auth(p, req, "Proxy-Authenticate", "Proxy-Authorization", "INVITE", 1)) {
                                                ast_log(LOG_NOTICE, "Failed to authenticate on INVITE to '%s'\n", get_header(&p->initreq, "From"));
                                                p->needdestroy = 1;