Modify recover logic for arp sock 99/202299/4
authorYu <jiung.yu@samsung.com>
Wed, 27 Mar 2019 01:58:46 +0000 (10:58 +0900)
committerYu <jiung.yu@samsung.com>
Wed, 27 Mar 2019 03:58:34 +0000 (12:58 +0900)
Description : There's been block at read operation for
g_io_channel_read_chars on arp sock sometimes.
It seems that socket recovery fuction wasn't working properly
because it closes a socket only. So, read operation on the g io channel
can be wrong.

I change the recover logic to cover both socket and related g io channel.

Change-Id: I79c356434967965d26161b332c61ce9a9623ce8c
Signed-off-by: Yu Jiung <jiung.yu@samsung.com>
packaging/inm-manager.spec
src/inm-util.c

index f0ad41123846e15af56ca5ddda20c7188807d5a6..aeb9c173a0e9d80015a98b841400110a8e719757 100644 (file)
@@ -1,6 +1,6 @@
 Name:       inm-manager
 Summary:    INM(Intelligent Network Monitoring) daemon
-Version:    0.0.18
+Version:    0.0.19
 Release:    1
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index 4270492dd47efce38d84a47e5028e0ebaa61faeb..96718fe487fcf1e6e60afc4518f208b30bb3d23b 100644 (file)
@@ -265,19 +265,11 @@ static void __set_defend_arp(unsigned char *hw_addr, unsigned char *ip_addr, arp
 
 int util_recover_arp_sock(inm_util_arp_data_s *arp_data)
 {
-       char error_buf[MAX_SIZE_ERROR_BUFFER] = {0, };
-       if (arp_data->sock >= 0) {
-               close(arp_data->sock);
-               arp_data->sock = -1;
-       }
+       __INM_FUNC_ENTER__;
+       util_destroy_arp_sock(arp_data);
 
        /* reopen socket */
-       if ((arp_data->sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ARP))) == -1) {
-               INM_LOGI("socket %d", arp_data->sock);
-               strerror_r(errno, error_buf, MAX_SIZE_ERROR_BUFFER);
-               INM_LOGE("socket Failed. Error = %s\n", error_buf);
-       }
-
+       util_create_arp_sock(arp_data);
        return arp_data->sock;
 }