diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-11-03 01:46:03 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-11-03 01:46:03 +0000 |
commit | e1a8b26001ba85c2f60b89c4489d24e037b99281 (patch) | |
tree | 51b31bb53cb948edfb8cab9fd174d46c09851f80 /pjsip/src | |
parent | 15982ff3aeb67c2644fea6c5ee7bb604400de146 (diff) |
Ticket #410: Endless authentication retries when 401/407 response contains no challenge
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1539 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src')
-rw-r--r-- | pjsip/src/pjsip/sip_auth_client.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsip/sip_errno.c | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/pjsip/src/pjsip/sip_auth_client.c b/pjsip/src/pjsip/sip_auth_client.c index 987ee6de..1c8457b9 100644 --- a/pjsip/src/pjsip/sip_auth_client.c +++ b/pjsip/src/pjsip/sip_auth_client.c @@ -901,6 +901,7 @@ PJ_DEF(pj_status_t) pjsip_auth_clt_reinit_req( pjsip_auth_clt_sess *sess, { pjsip_tx_data *tdata; const pjsip_hdr *hdr; + unsigned chal_cnt; pjsip_via_hdr *via; pj_status_t status; @@ -921,6 +922,7 @@ PJ_DEF(pj_status_t) pjsip_auth_clt_reinit_req( pjsip_auth_clt_sess *sess, * Respond to each authentication challenge. */ hdr = rdata->msg_info.msg->hdr.next; + chal_cnt = 0; while (hdr != &rdata->msg_info.msg->hdr) { pjsip_cached_auth *cached_auth; const pjsip_www_authenticate_hdr *hchal; @@ -937,6 +939,7 @@ PJ_DEF(pj_status_t) pjsip_auth_clt_reinit_req( pjsip_auth_clt_sess *sess, break; hchal = (const pjsip_www_authenticate_hdr*) hdr; + ++chal_cnt; /* Find authentication session for this realm, create a new one * if not present. @@ -969,6 +972,9 @@ PJ_DEF(pj_status_t) pjsip_auth_clt_reinit_req( pjsip_auth_clt_sess *sess, hdr = hdr->next; } + /* Check if challenge is present */ + if (chal_cnt == 0) + return PJSIP_EAUTHNOCHAL; /* Remove branch param in Via header. */ via = (pjsip_via_hdr*) pjsip_msg_find_hdr(tdata->msg, PJSIP_H_VIA, NULL); diff --git a/pjsip/src/pjsip/sip_errno.c b/pjsip/src/pjsip/sip_errno.c index 2a6e9306..d30281fd 100644 --- a/pjsip/src/pjsip/sip_errno.c +++ b/pjsip/src/pjsip/sip_errno.c @@ -104,6 +104,7 @@ static const struct PJ_BUILD_ERR( PJSIP_EAUTHSTALECOUNT, "Maximum number of stale retries exceeded"), PJ_BUILD_ERR( PJSIP_EAUTHINNONCE, "Invalid nonce value in authentication challenge"), PJ_BUILD_ERR( PJSIP_EAUTHINAKACRED, "Invalid AKA credential"), + PJ_BUILD_ERR( PJSIP_EAUTHNOCHAL, "No challenge is found"), /* UA/dialog layer. */ PJ_BUILD_ERR( PJSIP_EMISSINGTAG, "Missing From/To tag parameter" ), |