mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-23 14:18:07 +00:00
Merge remote-tracking branch 'public/master' into belle-sip
This commit is contained in:
commit
956935274f
5 changed files with 62 additions and 18 deletions
|
|
@ -508,14 +508,21 @@ LinphoneCall * linphone_call_new_incoming(LinphoneCore *lc, LinphoneAddress *fro
|
|||
call->core=lc;
|
||||
|
||||
if (lc->sip_conf.ping_with_options){
|
||||
/*the following sends an option request back to the caller so that
|
||||
we get a chance to discover our nat'd address before answering.*/
|
||||
call->ping_op=sal_op_new(lc->sal);
|
||||
from_str=linphone_address_as_string_uri_only(from);
|
||||
sal_op_set_route(call->ping_op,sal_op_get_network_origin(op));
|
||||
sal_op_set_user_pointer(call->ping_op,call);
|
||||
sal_ping(call->ping_op,linphone_core_find_best_identity(lc,from,NULL),from_str);
|
||||
ms_free(from_str);
|
||||
#ifdef BUILD_UPNP
|
||||
if (lc->upnp != NULL && linphone_core_get_firewall_policy(lc)==LinphonePolicyUseUpnp &&
|
||||
linphone_upnp_context_get_state(lc->upnp) == LinphoneUpnpStateOk) {
|
||||
#else //BUILD_UPNP
|
||||
{
|
||||
#endif //BUILD_UPNP
|
||||
/*the following sends an option request back to the caller so that
|
||||
we get a chance to discover our nat'd address before answering.*/
|
||||
call->ping_op=sal_op_new(lc->sal);
|
||||
from_str=linphone_address_as_string_uri_only(from);
|
||||
sal_op_set_route(call->ping_op,sal_op_get_network_origin(op));
|
||||
sal_op_set_user_pointer(call->ping_op,call);
|
||||
sal_ping(call->ping_op,linphone_core_find_best_identity(lc,from,NULL),from_str);
|
||||
ms_free(from_str);
|
||||
}
|
||||
}
|
||||
|
||||
linphone_address_clean(from);
|
||||
|
|
|
|||
|
|
@ -669,6 +669,9 @@ static void sip_config_read(LinphoneCore *lc)
|
|||
|
||||
tmp=lp_config_get_int(lc->config,"sip","in_call_timeout",0);
|
||||
linphone_core_set_in_call_timeout(lc,tmp);
|
||||
|
||||
tmp=lp_config_get_int(lc->config,"sip","delayed_timeout",4);
|
||||
linphone_core_set_delayed_timeout(lc,tmp);
|
||||
|
||||
/* get proxies config */
|
||||
for(i=0;; i++){
|
||||
|
|
@ -2099,7 +2102,7 @@ void linphone_core_iterate(LinphoneCore *lc){
|
|||
linphone_core_start_invite() */
|
||||
calls=calls->next;
|
||||
linphone_call_background_tasks(call,one_second_elapsed);
|
||||
if (call->state==LinphoneCallOutgoingInit && (elapsed>=4)){
|
||||
if (call->state==LinphoneCallOutgoingInit && (elapsed>=lc->sip_conf.delayed_timeout)){
|
||||
/*start the call even if the OPTIONS reply did not arrive*/
|
||||
if (call->ice_session != NULL) {
|
||||
ms_warning("ICE candidates gathering from [%s] has not finished yet, proceed with the call without ICE anyway."
|
||||
|
|
@ -2655,15 +2658,23 @@ LinphoneCall * linphone_core_invite_address_with_params(LinphoneCore *lc, const
|
|||
}
|
||||
|
||||
if (call->dest_proxy==NULL && lc->sip_conf.ping_with_options==TRUE){
|
||||
/*defer the start of the call after the OPTIONS ping*/
|
||||
call->ping_replied=FALSE;
|
||||
call->ping_op=sal_op_new(lc->sal);
|
||||
sal_ping(call->ping_op,from,real_url);
|
||||
sal_op_set_user_pointer(call->ping_op,call);
|
||||
call->start_time=time(NULL);
|
||||
}else{
|
||||
if (defer==FALSE) linphone_core_start_invite(lc,call);
|
||||
#ifdef BUILD_UPNP
|
||||
if (lc->upnp != NULL && linphone_core_get_firewall_policy(lc)==LinphonePolicyUseUpnp &&
|
||||
linphone_upnp_context_get_state(lc->upnp) == LinphoneUpnpStateOk) {
|
||||
#else //BUILD_UPNP
|
||||
{
|
||||
#endif //BUILD_UPNP
|
||||
/*defer the start of the call after the OPTIONS ping*/
|
||||
call->ping_replied=FALSE;
|
||||
call->ping_op=sal_op_new(lc->sal);
|
||||
sal_ping(call->ping_op,from,real_url);
|
||||
sal_op_set_user_pointer(call->ping_op,call);
|
||||
call->start_time=time(NULL);
|
||||
defer = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (defer==FALSE) linphone_core_start_invite(lc,call);
|
||||
|
||||
if (real_url!=NULL) ms_free(real_url);
|
||||
return call;
|
||||
|
|
@ -3547,6 +3558,26 @@ int linphone_core_get_in_call_timeout(LinphoneCore *lc){
|
|||
return lc->sip_conf.in_call_timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the delayed timeout
|
||||
*
|
||||
* @ingroup call_control
|
||||
* See linphone_core_set_delayed_timeout() for details.
|
||||
**/
|
||||
int linphone_core_get_delayed_timeout(LinphoneCore *lc){
|
||||
return lc->sip_conf.delayed_timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the in delayed timeout in seconds.
|
||||
*
|
||||
* @ingroup call_control
|
||||
* After this timeout period, a delayed call (internal call initialisation or resolution) is resumed.
|
||||
**/
|
||||
void linphone_core_set_delayed_timeout(LinphoneCore *lc, int seconds){
|
||||
lc->sip_conf.delayed_timeout=seconds;
|
||||
}
|
||||
|
||||
void linphone_core_set_presence_info(LinphoneCore *lc,int minutes_away,
|
||||
const char *contact,
|
||||
LinphoneOnlineStatus presence_mode)
|
||||
|
|
@ -5072,6 +5103,7 @@ void sip_config_uninit(LinphoneCore *lc)
|
|||
lp_config_set_string(lc->config,"sip","contact",config->contact);
|
||||
lp_config_set_int(lc->config,"sip","inc_timeout",config->inc_timeout);
|
||||
lp_config_set_int(lc->config,"sip","in_call_timeout",config->in_call_timeout);
|
||||
lp_config_set_int(lc->config,"sip","delayed_timeout",config->delayed_timeout);
|
||||
lp_config_set_int(lc->config,"sip","use_info",config->use_info);
|
||||
lp_config_set_int(lc->config,"sip","use_rfc2833",config->use_rfc2833);
|
||||
lp_config_set_int(lc->config,"sip","use_ipv6",config->ipv6_enabled);
|
||||
|
|
|
|||
|
|
@ -1099,6 +1099,10 @@ void linphone_core_set_in_call_timeout(LinphoneCore *lc, int seconds);
|
|||
|
||||
int linphone_core_get_in_call_timeout(LinphoneCore *lc);
|
||||
|
||||
void linphone_core_set_delayed_timeout(LinphoneCore *lc, int seconds);
|
||||
|
||||
int linphone_core_get_delayed_timeout(LinphoneCore *lc);
|
||||
|
||||
void linphone_core_set_stun_server(LinphoneCore *lc, const char *server);
|
||||
|
||||
const char * linphone_core_get_stun_server(const LinphoneCore *lc);
|
||||
|
|
|
|||
|
|
@ -427,6 +427,7 @@ typedef struct sip_config
|
|||
MSList *deleted_proxies;
|
||||
int inc_timeout; /*timeout after an un-answered incoming call is rejected*/
|
||||
int in_call_timeout; /*timeout after a call is hangup */
|
||||
int delayed_timeout; /*timeout after a delayed call is resumed */
|
||||
unsigned int keepalive_period; /* interval in ms between keep alive messages sent to the proxy server*/
|
||||
LCSipTransports transports;
|
||||
bool_t use_info;
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 73a772ac4754734c57ecbc1149cbe665acd2f376
|
||||
Subproject commit 756a51419d833105a6378db71679073f6e9492b0
|
||||
Loading…
Add table
Reference in a new issue