Shutdown the socket after ipset request
authorNeutron Soutmun <neo.neutron@gmail.com>
Sat, 23 Aug 2008 06:02:57 +0000 (13:02 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Sun, 2 Nov 2008 19:43:11 +0000 (02:43 +0700)
2008-08-23  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-ipset.c:
  - Shutdown the socket after finish the request.
  - Log the errno of the failure of the kernel_getsocket() to syslog for
    later debuging.

ChangeLog
src/rh-ipset.c

index ae8152a..b9eb1ad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-08-23  Neutron Soutmun <neo.neutron@gmail.com>
 
+       * src/rh-ipset.c:
+         - Shutdown the socket after finish the request.
+         - Log the errno of the failure of the kernel_getsocket() to syslog for 
+           later debuging.
+
+2008-08-23  Neutron Soutmun <neo.neutron@gmail.com>
+
        * src/rahunasd.h:
          - Fix typo the project name, it is shame.
          - Change POLLING interval from 30 seconds to 60 seconds, 
index f94eaf0..354b1d1 100644 (file)
@@ -22,7 +22,7 @@ int kernel_getsocket(void)
   while (tries > 0) {
     sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
     if (sockfd < 0) {
-      syslog(LOG_ERR, "Failed kernel_getsocket(), Retry....");
+      syslog(LOG_ERR, "Failed kernel_getsocket() errno=%d, Retry....", errno);
       sleep(2);
     } else {
       return sockfd;
@@ -46,6 +46,8 @@ int wrapped_getsockopt(void *data, socklen_t *size)
   if (res != 0)
     DP("res=%d errno=%d", res, errno);
 
+  shutdown(sockfd, SHUT_RDWR);
+
   return res;
 }
 
@@ -61,7 +63,9 @@ int wrapped_setsockopt(void *data, socklen_t size)
   res = setsockopt(sockfd, SOL_IP, SO_IP_SET, data, size);
   if (res != 0)
     DP("res=%d errno=%d", res, errno);
-  
+
+  shutdown(sockfd, SHUT_RDWR);
+
   return res; 
 }