From 02dfee95c56a8d088998e7ff7c5dcdbf3ef13383 Mon Sep 17 00:00:00 2001
From: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@linphone.org>
Date: Thu, 12 Jan 2012 11:54:15 +0100
Subject: [PATCH] Remove 'registered' member from LinphoneProxyObject

Use more fine-grained 'state' member instead
---
 coreapi/callbacks.c    | 3 +--
 coreapi/linphonecore.c | 2 +-
 coreapi/private.h      | 1 -
 coreapi/proxy.c        | 7 +++----
 4 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/coreapi/callbacks.c b/coreapi/callbacks.c
index 84092e69fd..31aca35c5c 100644
--- a/coreapi/callbacks.c
+++ b/coreapi/callbacks.c
@@ -623,12 +623,11 @@ static void register_success(SalOp *op, bool_t registered){
 	LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)sal_op_get_user_pointer(op);
 	char *msg;
 	
-	cfg->registered=registered;
 	linphone_proxy_config_set_error(cfg,LinphoneReasonNone);
 	linphone_proxy_config_set_state(cfg, registered ? LinphoneRegistrationOk : LinphoneRegistrationCleared ,
 	                                registered ? "Registration sucessful" : "Unregistration done");
 	if (lc->vtable.display_status){
-		if (cfg->registered) msg=ms_strdup_printf(_("Registration on %s successful."),sal_op_get_proxy(op));
+		if (registered) msg=ms_strdup_printf(_("Registration on %s successful."),sal_op_get_proxy(op));
 		else msg=ms_strdup_printf(_("Unregistration on %s done."),sal_op_get_proxy(op));
 		lc->vtable.display_status(lc,msg);
 		ms_free(msg);
diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c
index 30f5997628..9a8c512086 100644
--- a/coreapi/linphonecore.c
+++ b/coreapi/linphonecore.c
@@ -4164,7 +4164,7 @@ static void set_network_reachable(LinphoneCore* lc,bool_t isReachable, time_t cu
 		LinphoneProxyConfig *cfg=(LinphoneProxyConfig*)elem->data;
 		if (linphone_proxy_config_register_enabled(cfg) ) {
 			if (!isReachable) {
-				cfg->registered=0;
+				linphone_proxy_config_set_state(cfg, LinphoneRegistrationNone,"Registration impossible (network down)");
 			}else{
 				cfg->commit=TRUE;
 			}
diff --git a/coreapi/private.h b/coreapi/private.h
index a21fc8b20a..77f62c3340 100644
--- a/coreapi/private.h
+++ b/coreapi/private.h
@@ -255,7 +255,6 @@ struct _LinphoneProxyConfig
 	SalOp *publish_op;
 	bool_t commit;
 	bool_t reg_sendregister;
-	bool_t registered;
 	bool_t publish;
 	bool_t dial_escape_plus;
 	void* user_data;
diff --git a/coreapi/proxy.c b/coreapi/proxy.c
index 011be67067..959c321b68 100644
--- a/coreapi/proxy.c
+++ b/coreapi/proxy.c
@@ -84,7 +84,7 @@ void linphone_proxy_config_destroy(LinphoneProxyConfig *obj){
  * Returns a boolean indicating that the user is sucessfully registered on the proxy.
 **/
 bool_t linphone_proxy_config_is_registered(const LinphoneProxyConfig *obj){
-	return obj->registered;
+	return obj->state == LinphoneRegistrationOk;
 }
 
 /**
@@ -232,9 +232,8 @@ void linphone_proxy_config_enable_publish(LinphoneProxyConfig *obj, bool_t val){
 void linphone_proxy_config_edit(LinphoneProxyConfig *obj){
 	if (obj->reg_sendregister){
 		/* unregister */
-		if (obj->registered) {
+		if (obj->state != LinphoneRegistrationNone && obj->state != LinphoneRegistrationCleared) {
 			sal_unregister(obj->op);
-			obj->registered=FALSE;
 		}
 	}
 }
@@ -301,7 +300,7 @@ static void linphone_proxy_config_register(LinphoneProxyConfig *obj){
 **/
 void linphone_proxy_config_refresh_register(LinphoneProxyConfig *obj){
 	if (obj->reg_sendregister && obj->op){
-		obj->registered=FALSE;
+		linphone_proxy_config_set_state(obj,LinphoneRegistrationProgress, "Refresh registration");
 		sal_register_refresh(obj->op,obj->expires);
 	}
 }
-- 
GitLab