[asterisk-commits] file: branch 1.4 r102450 - /branches/1.4/channels/chan_sip.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Feb 5 13:52:30 CST 2008
Author: file
Date: Tue Feb 5 13:52:30 2008
New Revision: 102450
URL: http://svn.digium.com/view/asterisk?view=rev&rev=102450
Log:
If a REGISTER attempt comes in that is a retransmission of a previous REGISTER do not create a new nonce value.
(issue #BE-381)
Modified:
branches/1.4/channels/chan_sip.c
Modified: branches/1.4/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_sip.c?view=diff&rev=102450&r1=102449&r2=102450
==============================================================================
--- branches/1.4/channels/chan_sip.c (original)
+++ branches/1.4/channels/chan_sip.c Tue Feb 5 13:52:30 2008
@@ -8415,16 +8415,22 @@
good_response = keys[K_RESP].s &&
!strncasecmp(keys[K_RESP].s, resp_hash, strlen(resp_hash));
if (wrongnonce) {
- ast_string_field_build(p, randdata, "%08lx", ast_random());
if (good_response) {
if (sipdebug)
ast_log(LOG_NOTICE, "Correct auth, but based on stale nonce received from '%s'\n", get_header(req, "To"));
/* We got working auth token, based on stale nonce . */
+ ast_string_field_build(p, randdata, "%08lx", ast_random());
transmit_response_with_auth(p, response, req, p->randdata, reliable, respheader, TRUE);
} else {
/* Everything was wrong, so give the device one more try with a new challenge */
- if (sipdebug)
- ast_log(LOG_NOTICE, "Bad authentication received from '%s'\n", get_header(req, "To"));
+ if (!ast_test_flag(req, SIP_PKT_IGNORE)) {
+ if (sipdebug)
+ ast_log(LOG_NOTICE, "Bad authentication received from '%s'\n", get_header(req, "To"));
+ ast_string_field_build(p, randdata, "%08lx", ast_random());
+ } else {
+ if (sipdebug)
+ ast_log(LOG_NOTICE, "Duplicate authentication received from '%s'\n", get_header(req, "To"));
+ }
transmit_response_with_auth(p, response, req, p->randdata, reliable, respheader, FALSE);
}
More information about the asterisk-commits
mailing list