guest_server: make client list thread-safe use QTAIL_FOREACH_SAFE instead of QTAIL_FO... 22/21122/2
authorGeunhae LEE <geunhae.lee@samsung.com>
Mon, 12 May 2014 12:11:23 +0000 (21:11 +0900)
committerJinhyung Choi <jinhyung2.choi@samsung.com>
Thu, 15 May 2014 09:43:49 +0000 (18:43 +0900)
Change-Id: I05193e013dcb4f87b84bc2e4747e81af2fdc7fb4
Signed-off-by: Geunhae LEE <geunhae.lee@samsung.com>
tizen/src/guest_server.c

index 5637a6dd2493a813c53995c468efc82972b2389f..b85318ea29cd0d5efa77c0bf9c49278759913515 100644 (file)
@@ -140,9 +140,9 @@ static void send_to_sdb_client(GS_Client* client, int state)
 void notify_all_sdb_clients(int state)
 {
     pthread_mutex_lock(&mutex_clilist);
-    GS_Client *client;
+    GS_Client *client, *next;
 
-    QTAILQ_FOREACH(client, &clients, next)
+    QTAILQ_FOREACH_SAFE(client, &clients, next, next)
     {
         send_to_sdb_client(client, state);
     }
@@ -153,7 +153,7 @@ void notify_all_sdb_clients(int state)
 static void add_sdb_client(struct sockaddr_in* addr, int port, const char* serial)
 {
     GS_Client *cli = NULL;
-    GS_Client *client = NULL;
+    GS_Client *client = NULL, *next;
 
     if (addr == NULL) {
         INFO("GS_Client client's address is EMPTY.\n");
@@ -166,7 +166,7 @@ static void add_sdb_client(struct sockaddr_in* addr, int port, const char* seria
         return;
     }
 
-    QTAILQ_FOREACH(cli, &clients, next)
+    QTAILQ_FOREACH_SAFE(cli, &clients, next, next)
     {
         if (!strcmp(serial, cli->serial) && !strcmp(inet_ntoa(addr->sin_addr), inet_ntoa((cli->addr).sin_addr))) {
             INFO("Client cannot be duplicated.\n");
@@ -546,9 +546,9 @@ static void server_process(void)
 static void close_clients(void)
 {
     pthread_mutex_lock(&mutex_clilist);
-    GS_Client * client;
+    GS_Client * client, *next;
 
-    QTAILQ_FOREACH(client, &clients, next)
+    QTAILQ_FOREACH_SAFE(client, &clients, next, next)
     {
         QTAILQ_REMOVE(&clients, client, next);