From 3da2b2ae968d11ff2c1af75b6015226fee1d595f Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 23 Feb 2012 18:27:56 +0100 Subject: [PATCH] fix: avoid giving LinphoneRegistration* notifications for removed proxy config --- coreapi/callbacks.c | 8 ++++++++ coreapi/proxy.c | 6 ++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c index d9296b367..085a77ebf 100644 --- a/coreapi/callbacks.c +++ b/coreapi/callbacks.c @@ -638,6 +638,10 @@ static void register_success(SalOp *op, bool_t registered){ LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)sal_op_get_user_pointer(op); char *msg; + if (cfg->deletion_date!=0){ + ms_message("Registration success for removed proxy config, ignored"); + return; + } linphone_proxy_config_set_error(cfg,LinphoneReasonNone); linphone_proxy_config_set_state(cfg, registered ? LinphoneRegistrationOk : LinphoneRegistrationCleared , registered ? "Registration sucessful" : "Unregistration done"); @@ -658,6 +662,10 @@ static void register_failure(SalOp *op, SalError error, SalReason reason, const ms_warning("Registration failed for unknown proxy config."); return ; } + if (cfg->deletion_date!=0){ + ms_message("Registration failed for removed proxy config, ignored"); + return; + } if (details==NULL) details=_("no response timeout"); diff --git a/coreapi/proxy.c b/coreapi/proxy.c index 18999dae0..433d68c5a 100644 --- a/coreapi/proxy.c +++ b/coreapi/proxy.c @@ -547,8 +547,10 @@ void linphone_core_remove_proxy_config(LinphoneCore *lc, LinphoneProxyConfig *cf /* add to the list of destroyed proxies, so that the possible unREGISTER request can succeed authentication */ lc->sip_conf.deleted_proxies=ms_list_append(lc->sip_conf.deleted_proxies,(void *)cfg); cfg->deletion_date=ms_time(NULL); - /* this will unREGISTER */ - linphone_proxy_config_edit(cfg); + if (cfg->state==LinphoneRegistrationOk){ + /* this will unREGISTER */ + linphone_proxy_config_edit(cfg); + } if (lc->default_proxy==cfg){ lc->default_proxy=NULL; }