]> sjero.net Git - linphone/blobdiff - coreapi/proxy.c
fix sending of PUBLISH requests (was not set to the proxy address actually)
[linphone] / coreapi / proxy.c
index 4aae6d3b937e51f3b605706c597fc6d1b096b647..42c21f01b29a36000a9f0ed4b7ef882613c545f2 100644 (file)
@@ -792,6 +792,7 @@ int linphone_proxy_config_send_publish(LinphoneProxyConfig *proxy,
                               LinphoneOnlineStatus presence_mode){
        int err;
        SalOp *op=sal_op_new(proxy->lc->sal);
+       sal_op_set_route(op,proxy->reg_proxy);
        err=sal_publish(op,linphone_proxy_config_get_identity(proxy),
            linphone_proxy_config_get_identity(proxy),linphone_online_status_to_sal(presence_mode));
        if (proxy->publish_op!=NULL)
@@ -1097,9 +1098,19 @@ void linphone_proxy_config_update(LinphoneProxyConfig *cfg){
                if (cfg->type && cfg->ssctx==NULL){
                        linphone_proxy_config_activate_sip_setup(cfg);
                }
-               if ((!lc->sip_conf.register_only_when_network_is_up || lc->network_reachable) &&
-                       (!lc->sip_conf.register_only_when_upnp_is_ok || linphone_core_get_upnp_state(lc) == LinphoneUpnpStateOk))
-                       linphone_proxy_config_register(cfg);
+               switch(linphone_core_get_firewall_policy(lc)) {
+                       case LinphonePolicyUseUpnp:
+#ifdef BUILD_UPNP
+                       if(lc->sip_conf.register_only_when_upnp_is_ok && 
+                          (lc->upnp == NULL || !linphone_upnp_context_is_ready_for_register(lc->upnp))) {
+                               break;
+                       }
+#endif //BUILD_UPNP
+                       default:
+                       if ((!lc->sip_conf.register_only_when_network_is_up || lc->network_reachable)) {
+                               linphone_proxy_config_register(cfg);
+                       }
+               }       
                if (cfg->publish && cfg->publish_op==NULL){
                        linphone_proxy_config_send_publish(cfg,lc->presence_mode);
                }