summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-04-02 20:34:05 +0000
committerBenny Prijono <bennylp@teluu.com>2008-04-02 20:34:05 +0000
commit42ca87c9079fd939407e096e58bd3d0bc7655535 (patch)
treec541db58d1c20ad9a1ce6fd9a9dd29fbbc7b2419 /pjsip
parentd5dde7220f5a2c773087f4dcd85119dfde2af79e (diff)
Ticket #521: Duplicate Authorization header when PJSIP is configured to send empty Authorization header (thanks Roland Klabunde)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1906 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip/sip_auth_client.c38
1 files changed, 13 insertions, 25 deletions
diff --git a/pjsip/src/pjsip/sip_auth_client.c b/pjsip/src/pjsip/sip_auth_client.c
index 5730d6f2..eb1a91ad 100644
--- a/pjsip/src/pjsip/sip_auth_client.c
+++ b/pjsip/src/pjsip/sip_auth_client.c
@@ -872,31 +872,19 @@ PJ_DEF(pj_status_t) pjsip_auth_clt_init_req( pjsip_auth_clt_sess *sess,
pj_list_erase(h);
pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)h);
} else {
- enum { HDRLEN = 256 };
- const pj_str_t hname = pj_str("Authorization");
- pj_str_t hval;
- pjsip_generic_string_hdr *hs;
- char *hdr;
-
- hdr = (char*)pj_pool_alloc(tdata->pool, HDRLEN);
- len = pj_ansi_snprintf(
- hdr, HDRLEN,
- "%.*s username=\"%.*s\", realm=\"%.*s\","
- " nonce=\"\", uri=\"%s\",%s%.*s%s response=\"\"",
- (int)c->scheme.slen, c->scheme.ptr,
- (int)c->username.slen, c->username.ptr,
- (int)c->realm.slen, c->realm.ptr,
- uri_str,
- (sess->pref.algorithm.slen ? " algorithm=" : ""),
- (int)sess->pref.algorithm.slen, sess->pref.algorithm.ptr,
- (sess->pref.algorithm.slen ? "," : ""));
-
- PJ_ASSERT_RETURN(len>0 && len<HDRLEN, PJ_ETOOBIG);
-
- hval.ptr = hdr;
- hval.slen = len;
- hs = pjsip_generic_string_hdr_create(tdata->pool, &hname,
- &hval);
+ pjsip_authorization_hdr *hs;
+
+ hs = pjsip_authorization_hdr_create(tdata->pool);
+ pj_strdup(tdata->pool, &hs->scheme, &c->scheme);
+ pj_strdup(tdata->pool, &hs->credential.digest.username,
+ &c->username);
+ pj_strdup(tdata->pool, &hs->credential.digest.realm,
+ &c->realm);
+ pj_strdup2(tdata->pool, &hs->credential.digest.uri,
+ uri_str);
+ pj_strdup(tdata->pool, &hs->credential.digest.algorithm,
+ &sess->pref.algorithm);
+
pjsip_msg_add_hdr(tdata->msg, (pjsip_hdr*)hs);
}
}