diff options
author | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-10-13 15:36:44 +0000 |
---|---|---|
committer | oej <oej@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-10-13 15:36:44 +0000 |
commit | 0023b61c9e16fa27f96a42013dcf021d1540ad19 (patch) | |
tree | fee1258d2b750023d8cf3a80a8514add7c149103 /channels | |
parent | 9aa513ea041ac31995e3e5fcefd849bd98f23ec7 (diff) |
Merged revisions 148471 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r148471 | oej | 2008-10-13 17:32:55 +0200 (MÃ¥n, 13 Okt 2008) | 4 lines
Sending a 403 after a 200 is considered very bad.
(found at SIPit)
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@148472 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 335d3e8e2..eb86a1e07 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -10904,35 +10904,37 @@ static enum check_auth_result register_verify(struct sip_pvt *p, struct sockaddr if (sip_cancel_destroy(p)) ast_log(LOG_WARNING, "Unable to cancel SIP destruction. Expect bad things.\n"); - /* We have a successful registration attempt with proper authentication, - now, update the peer */ - switch (parse_register_contact(p, peer, req)) { - case PARSE_REGISTER_FAILED: - ast_log(LOG_WARNING, "Failed to parse contact info\n"); - transmit_response_with_date(p, "400 Bad Request", req); - peer->lastmsgssent = -1; - res = 0; - break; - case PARSE_REGISTER_QUERY: - transmit_response_with_date(p, "200 OK", req); - peer->lastmsgssent = -1; - res = 0; - break; - case PARSE_REGISTER_UPDATE: - update_peer(peer, p->expiry); - /* Say OK and ask subsystem to retransmit msg counter */ - transmit_response_with_date(p, "200 OK", req); - if (!ast_test_flag((&peer->flags[1]), SIP_PAGE2_SUBSCRIBEMWIONLY)) - peer->lastmsgssent = -1; - res = 0; - break; - } - if (check_request_transport(peer, req)) { ast_set_flag(&p->flags[0], SIP_PENDINGBYE); transmit_response_with_date(p, "403 Forbidden", req); res = AUTH_BAD_TRANSPORT; + } else { + + /* We have a successful registration attempt with proper authentication, + now, update the peer */ + switch (parse_register_contact(p, peer, req)) { + case PARSE_REGISTER_FAILED: + ast_log(LOG_WARNING, "Failed to parse contact info\n"); + transmit_response_with_date(p, "400 Bad Request", req); + peer->lastmsgssent = -1; + res = 0; + break; + case PARSE_REGISTER_QUERY: + transmit_response_with_date(p, "200 OK", req); + peer->lastmsgssent = -1; + res = 0; + break; + case PARSE_REGISTER_UPDATE: + update_peer(peer, p->expiry); + /* Say OK and ask subsystem to retransmit msg counter */ + transmit_response_with_date(p, "200 OK", req); + if (!ast_test_flag((&peer->flags[1]), SIP_PAGE2_SUBSCRIBEMWIONLY)) + peer->lastmsgssent = -1; + res = 0; + break; + } } + } } } |