sensord: add checking code whether socket is valid or not 75/54875/1
authorkibak.yoon <kibak.yoon@samsung.com>
Fri, 18 Dec 2015 10:29:33 +0000 (19:29 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Fri, 18 Dec 2015 10:33:56 +0000 (19:33 +0900)
Change-Id: I666e46a69e23e1471b92764917612ef77baf4656
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/client/csensor_event_listener.cpp
src/server/csensor_event_dispatcher.cpp

index aad9c89..8c298dc 100644 (file)
@@ -464,7 +464,10 @@ bool csensor_event_listener::create_event_channel(void)
                return false;
        }
 
-       m_event_socket.set_connection_mode();
+       if (!m_event_socket.set_connection_mode()) {
+               ERR("Failed to set connection mode for client %s", get_client_name());
+               return false;
+       }
 
        client_id = m_client_info.get_client_id();
 
index 605b9e7..970d776 100755 (executable)
@@ -222,11 +222,13 @@ void csensor_event_dispatcher::send_sensor_events(void* events, int event_cnt, b
 
                while (it_client_id != id_vec.end()) {
                        csocket client_socket;
-
-                       client_info_manager.get_event_socket(*it_client_id, client_socket);
-
                        bool ret;
 
+                       if (!client_info_manager.get_event_socket(*it_client_id, client_socket)) {
+                               ++it_client_id;
+                               continue;
+                       }
+
                        if (is_hub_event)
                                ret = (client_socket.send(sensor_hub_events + i, sizeof(sensorhub_event_t)) > 0);
                        else
@@ -240,7 +242,6 @@ void csensor_event_dispatcher::send_sensor_events(void* events, int event_cnt, b
                        ++it_client_id;
                }
        }
-
 }
 
 cclient_info_manager& csensor_event_dispatcher::get_client_info_manager(void)
@@ -311,7 +312,11 @@ void csensor_event_dispatcher::request_last_event(int client_id, sensor_id_t sen
        csocket client_socket;
 
        if (client_info_manager.get_registered_events(client_id, sensor_id, event_vec)) {
-               client_info_manager.get_event_socket(client_id, client_socket);
+               if (!client_info_manager.get_event_socket(client_id, client_socket)) {
+                       ERR("Failed to get event socket from %s",
+                                       client_info_manager.get_client_info(client_id));
+                       return;
+               }
 
                auto it_event = event_vec.begin();
                while (it_event != event_vec.end()) {