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)
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);
}