diff --git a/res/res_pjsip_outbound_authenticator_digest.c b/res/res_pjsip_outbound_authenticator_digest.c index 8616b6c..b9f6d91 100644 --- a/res/res_pjsip_outbound_authenticator_digest.c +++ b/res/res_pjsip_outbound_authenticator_digest.c @@ -106,6 +106,7 @@ static int digest_create_request_with_auth_from_old(const struct ast_sip_auth_ve { pjsip_auth_clt_sess auth_sess; pjsip_cseq_hdr *cseq; + pj_status_t status; if (pjsip_auth_clt_init(&auth_sess, ast_sip_get_pjsip_endpoint(), old_request->pool, 0) != PJ_SUCCESS) { @@ -118,8 +119,9 @@ static int digest_create_request_with_auth_from_old(const struct ast_sip_auth_ve return -1; } - switch (pjsip_auth_clt_reinit_req(&auth_sess, challenge, - old_request, new_request)) { + status = pjsip_auth_clt_reinit_req(&auth_sess, challenge, old_request, new_request); + pjsip_auth_clt_deinit(&auth_sess);/* Release any cached auths */ + switch (status) { case PJ_SUCCESS: /* PJSIP creates a new transaction for new_request (meaning it creates a new * branch). However, it recycles the Call-ID, from-tag, and CSeq from the