Fixed half-close socket in rh-xmlrpc-cmd
authorNeutron Soutmun <neo.neutron@gmail.com>
Tue, 18 Nov 2008 19:16:17 +0000 (02:16 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Tue, 18 Nov 2008 19:16:17 +0000 (02:16 +0700)
2008-11-19  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-xmlrpc-cmd.c: Fixed half-close socket, cause of the socket stay in
  the CLOSE_WAIT state (TCP resources starvation by mistake - forgot to close
  the socket).

ChangeLog
src/rh-xmlrpc-cmd.c

index ad7c793..5237a9a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-19  Neutron Soutmun <neo.neutron@gmail.com>
+
+       * src/rh-xmlrpc-cmd.c: Fixed half-close socket, cause of the socket stay in 
+         the CLOSE_WAIT state (TCP resources starvation by mistake - forgot to close
+         the socket).
+
 2008-11-18  Neutron Soutmun <neo.neutron@gmail.com>
 
        * src/rh-ipset.c: 
index 1150c7c..a8378db 100644 (file)
@@ -25,14 +25,6 @@ int send_xmlrpc_stopacct(struct rahunas_map *map, uint32_t id, int cause) {
        
        members = map->members;
 
-  client = gnet_xmlrpc_client_new(XMLSERVICE_HOST, XMLSERVICE_URL, 
-                                       XMLSERVICE_PORT);
-
-  if (!client) {
-    logmsg(RH_LOG_ERROR, "Could not connect to XML-RPC service");
-    return (-1);
-  }
-       
        params = g_strdup_printf("%s|%s|%s|%d|%s|%d", 
                            idtoip(map, id),
                                 members[id].username,
@@ -43,7 +35,15 @@ int send_xmlrpc_stopacct(struct rahunas_map *map, uint32_t id, int cause) {
 
   if (params == NULL)
     return (-1);
-  
+
+  client = gnet_xmlrpc_client_new(XMLSERVICE_HOST, XMLSERVICE_URL, 
+                                       XMLSERVICE_PORT);
+
+  if (!client) {
+    logmsg(RH_LOG_ERROR, "Could not connect to XML-RPC service");
+    return (-1);
+  }
+       
   if (gnet_xmlrpc_client_call(client, "stopacct", params, &reply) == 0)
     {
       DP("stopacct reply = %s", reply);
@@ -54,7 +54,9 @@ int send_xmlrpc_stopacct(struct rahunas_map *map, uint32_t id, int cause) {
       DP("%s", "Failed executing stopacct!");
       return (-1);
     }
-       
+
+  gnet_xmlrpc_client_delete(client);   
+
        g_free(params);
 
   return 0;