]> sjero.net Git - linphone/blobdiff - coreapi/sal_eXosip2.c
Merge branch 'master' of git.savannah.nongnu.org:/srv/git/linphone
[linphone] / coreapi / sal_eXosip2.c
index fd184a40f33b0e99bcdccdfc61dec195ff0d8561..88a378da079dfbf83358f9286c93629282d4ebf5 100644 (file)
@@ -279,6 +279,7 @@ Sal * sal_init(){
        sal->double_reg=TRUE;
        sal->use_rports=TRUE;
        sal->use_101=TRUE;
+       sal->reuse_authorization=FALSE;
        return sal;
 }
 
@@ -793,7 +794,7 @@ int sal_call_terminate(SalOp *h){
        eXosip_lock();
        err=eXosip_call_terminate(h->cid,h->did);
        eXosip_unlock();
-       pop_auth_from_exosip();
+       if (!h->base.root->reuse_authorization) pop_auth_from_exosip();
        if (err!=0){
                ms_warning("Exosip could not terminate the call: cid=%i did=%i", h->cid,h->did);
        }
@@ -816,7 +817,7 @@ void sal_op_authenticate(SalOp *h, const SalAuthInfo *info){
                eXosip_default_action(h->pending_auth);
                eXosip_unlock();
                ms_message("eXosip_default_action() done");
-               pop_auth_from_exosip();
+               if (!h->base.root->reuse_authorization) pop_auth_from_exosip();
                
                if (h->auth_info) sal_auth_info_delete(h->auth_info); /*if already exist*/
                h->auth_info=sal_auth_info_clone(info); /*store auth info for subsequent request*/
@@ -2207,3 +2208,6 @@ int sal_call_update(SalOp *h, const char *subject){
        eXosip_unlock();
        return err;
 }
+void sal_reuse_authorization(Sal *ctx, bool_t value) {
+       ctx->reuse_authorization=value;
+}