ctsvc_client_handle_remove in CTS_MUTEX_CONNECTION 39/47839/1
authorGukhwan Cho <gh78.cho@samsung.com>
Fri, 14 Aug 2015 09:35:08 +0000 (18:35 +0900)
committerGukhwan Cho <gh78.cho@samsung.com>
Wed, 9 Sep 2015 10:16:34 +0000 (19:16 +0900)
Change-Id: Id4290adcf590a922af2e1b4fc53aab54fc89e301
Signed-off-by: Gukhwan Cho <gh78.cho@samsung.com>
client/ctsvc_client_handle.c
client/ctsvc_client_service.c
client/ctsvc_client_service_helper.c
common/ctsvc_handle.c

index 5e3f18b..84f10e4 100644 (file)
@@ -137,8 +137,8 @@ int ctsvc_client_handle_remove(unsigned int id, contacts_h contact)
                g_hash_table_destroy(_ctsvc_handle_table);
                _ctsvc_handle_table = NULL;
        }
-       ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
        ctsvc_handle_destroy(contact);
+       ctsvc_mutex_unlock(CTS_MUTEX_HANDLE);
 
        return CONTACTS_ERROR_NONE;
 }
index fa5eee5..56a968f 100644 (file)
@@ -104,11 +104,6 @@ API int contacts_disconnect(void)
        if (CONTACTS_ERROR_INVALID_PARAMETER == ret)
                ret = CONTACTS_ERROR_IPC;
 
-       if (0 == ((ctsvc_base_s *)contact)->connection_count) {
-               ret = ctsvc_client_handle_remove(id, contact);
-               WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
-       }
-
        return ret;
 }
 
index c989092..41ce751 100644 (file)
@@ -170,6 +170,11 @@ int ctsvc_client_disconnect(contacts_h contact)
        }
 
        _ctsvc_connection--;
+
+       if (0 == base->connection_count) {
+               ret = ctsvc_client_handle_remove(ctsvc_client_get_pid(), contact);
+               WARN_IF(CONTACTS_ERROR_NONE != ret, "ctsvc_client_handle_remove() Fail(%d)", ret);
+       }
        ctsvc_mutex_unlock(CTS_MUTEX_CONNECTION);
 
        return CONTACTS_ERROR_NONE;
index 75d7d51..fee39d9 100644 (file)
@@ -38,6 +38,7 @@ int ctsvc_handle_destroy(contacts_h contact)
        RETV_IF(NULL == contact, CONTACTS_ERROR_INVALID_PARAMETER);
        ctsvc_base_s *base = (ctsvc_base_s *)contact;
        free(base);
+       base = NULL;
        return CONTACTS_ERROR_NONE;
 }