From: Simon Morlat Date: Thu, 14 Oct 2010 09:51:25 +0000 (+0200) Subject: improve publish support X-Git-Url: http://sjero.net/git/?p=linphone;a=commitdiff_plain;h=923ef4343e92c82933b708dffc4b8be157561181 improve publish support --- diff --git a/coreapi/private.h b/coreapi/private.h index 163df5f0..c965bf4a 100644 --- a/coreapi/private.h +++ b/coreapi/private.h @@ -213,6 +213,7 @@ struct _LinphoneProxyConfig int auth_failures; char *dial_prefix; LinphoneRegistrationState state; + SalOp *publish_op; bool_t commit; bool_t reg_sendregister; bool_t registered; diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 07a8e6c8..c946d988 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -72,6 +72,7 @@ void linphone_proxy_config_destroy(LinphoneProxyConfig *obj){ if (obj->type!=NULL) ms_free(obj->type); if (obj->dial_prefix!=NULL) ms_free(obj->dial_prefix); if (obj->op) sal_op_release(obj->op); + if (obj->publish_op) sal_op_release(obj->publish_op); } /** @@ -433,7 +434,9 @@ int linphone_proxy_config_send_publish(LinphoneProxyConfig *proxy, SalOp *op=sal_op_new(proxy->lc->sal); err=sal_publish(op,linphone_proxy_config_get_identity(proxy), linphone_proxy_config_get_identity(proxy),linphone_online_status_to_sal(presence_mode)); - sal_op_release(op); + if (proxy->publish_op!=NULL) + sal_op_release(proxy->publish_op); + proxy->publish_op=op; return err; } @@ -693,6 +696,9 @@ void linphone_proxy_config_update(LinphoneProxyConfig *cfg){ } 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); + } cfg->commit=FALSE; } }