]> sjero.net Git - linphone/commitdiff
Disable ping options when uPnP is working
authorYann Diorcet <yann.diorcet@belledonne-communications.com>
Tue, 19 Feb 2013 14:07:10 +0000 (15:07 +0100)
committerYann Diorcet <yann.diorcet@belledonne-communications.com>
Tue, 19 Feb 2013 14:07:10 +0000 (15:07 +0100)
coreapi/linphonecall.c
coreapi/linphonecore.c

index 6a39783e754ed01f64d38ba0d999e7f7ff49745d..a7cad386c3895b0c87491c3d00b37840ae20465a 100644 (file)
@@ -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);
index ea439dc249f9b6a83d5a6db7a02f18822841a140..bc421e51b8ea938505e372dc8066eb8cd6c48870 100644 (file)
@@ -2605,15 +2605,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;