summaryrefslogtreecommitdiff
path: root/pjsip/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-11-03 01:46:03 +0000
committerBenny Prijono <bennylp@teluu.com>2007-11-03 01:46:03 +0000
commite1a8b26001ba85c2f60b89c4489d24e037b99281 (patch)
tree51b31bb53cb948edfb8cab9fd174d46c09851f80 /pjsip/src
parent15982ff3aeb67c2644fea6c5ee7bb604400de146 (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.c6
-rw-r--r--pjsip/src/pjsip/sip_errno.c1
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" ),