]> sjero.net Git - linphone/commitdiff
add sip option reuse_authorization to reuse authorization header for subsequente...
authorJehan Monnier <jehan.monnier@linphone.org>
Wed, 22 Jun 2011 18:28:40 +0000 (20:28 +0200)
committerJehan Monnier <jehan.monnier@linphone.org>
Wed, 22 Jun 2011 18:28:40 +0000 (20:28 +0200)
coreapi/linphonecore.c
coreapi/sal.c
coreapi/sal.h
coreapi/sal_eXosip2.c
coreapi/sal_eXosip2.h

index 651eca1343c58e447888ea2b4042c33d4f19c9d1..ee7c7b90ce3bf7a0cc1a087cf90dc6814f6bcc4b 100644 (file)
@@ -466,6 +466,7 @@ static void sip_config_read(LinphoneCore *lc)
 
        sal_use_rport(lc->sal,lp_config_get_int(lc->config,"sip","use_rport",1));
        sal_use_101(lc->sal,lp_config_get_int(lc->config,"sip","use_101",1));
+       sal_reuse_authorization(lc->sal, lp_config_get_int(lc->config,"sip","reuse_authorization",0));
 
        tmp=lp_config_get_int(lc->config,"sip","use_rfc2833",0);
        linphone_core_set_use_rfc2833_for_dtmf(lc,tmp);
index 92b82d52cee66256a1c4ca6a6db8df3a65e7fdda..b237e9ad9e99f926a1b81710eaa6736e51cc0f08 100644 (file)
@@ -329,3 +329,4 @@ void sal_auth_info_delete(const SalAuthInfo* auth_info) {
        if (auth_info->password) ms_free(auth_info->password);
        ms_free((void*)auth_info);
 }
+
index af1ddc367e149d1aa5ac261aa0f79e78cdd5b7ef..647353214f04c4ec89f5270306e8aebaea565812 100644 (file)
@@ -267,6 +267,7 @@ void sal_set_keepalive_period(Sal *ctx,unsigned int value);
 unsigned int sal_get_keepalive_period(Sal *ctx);
 void sal_use_session_timers(Sal *ctx, int expires);
 void sal_use_double_registrations(Sal *ctx, bool_t enabled);
+void sal_reuse_authorization(Sal *ctx, bool_t enabled);
 void sal_use_one_matching_codec_policy(Sal *ctx, bool_t one_matching_codec);
 void sal_use_rport(Sal *ctx, bool_t use_rports);
 void sal_use_101(Sal *ctx, bool_t use_101);
index 42574dc8fa742d0ccfe38a19b55bd2b3ae0c4c9c..9836c7dfe28cc6ef377111c15012e06aff91215a 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*/
@@ -2206,3 +2207,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;
+}
index a050f5133c8100f812bd19c12800cfb936613a6a..201cb65a9780583e1a5fc6b5812e4e40d5f52871 100644 (file)
@@ -44,6 +44,7 @@ struct Sal{
        bool_t double_reg;
        bool_t use_rports;
        bool_t use_101;
+       bool_t reuse_authorization;
 };
 
 struct SalOp{