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);
if (auth_info->password) ms_free(auth_info->password);
ms_free((void*)auth_info);
}
+
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);
sal->double_reg=TRUE;
sal->use_rports=TRUE;
sal->use_101=TRUE;
+ sal->reuse_authorization=FALSE;
return sal;
}
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);
}
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*/
eXosip_unlock();
return err;
}
+void sal_reuse_authorization(Sal *ctx, bool_t value) {
+ ctx->reuse_authorization=value;
+}
bool_t double_reg;
bool_t use_rports;
bool_t use_101;
+ bool_t reuse_authorization;
};
struct SalOp{