Merged revisions 102450 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r102450 | file | 2008-02-05 15:52:30 -0400 (Tue, 05 Feb 2008) | 3 lines

If a REGISTER attempt comes in that is a retransmission of a previous REGISTER do not create a new nonce value.
(issue #BE-381)

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@102451 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Joshua Colp 2008-02-05 19:54:05 +00:00
parent 38164fecad
commit 946da18730
1 changed files with 9 additions and 3 deletions

View File

@ -9918,16 +9918,22 @@ static enum check_auth_result check_auth(struct sip_pvt *p, struct sip_request *
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);
}