Fixed too many open files and session-timeout
authorNeutron Soutmun <neo.neutron@gmail.com>
Fri, 14 Nov 2008 04:10:33 +0000 (11:10 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Fri, 14 Nov 2008 04:10:33 +0000 (11:10 +0700)
2008-11-14  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-ipset.c:
  Fixed the too many open files due to the uncleanly close sockets.
* src/rh-task-dbset.c:
  Fixed the too many open temporary files due to unclosed connections.
* src/rh-xmlrpc-server.c:
  Fixed the Session-Timeout handler which it does not set the session_timeout
  in members data to 0 when the Session-Timeout is not set.

ChangeLog
src/rh-ipset.c
src/rh-task-dbset.c
src/rh-xmlrpc-server.c

index c234cd2..0df5833 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2008-11-14  Neutron Soutmun <neo.neutron@gmail.com>
+
+       * src/rh-ipset.c: 
+         Fixed the too many open files due to the uncleanly close sockets.
+       * src/rh-task-dbset.c:
+         Fixed the too many open temporary files due to unclosed connections.
+       * src/rh-xmlrpc-server.c:
+         Fixed the Session-Timeout handler which it does not set the session_timeout
+         in members data to 0 when the Session-Timeout is not set. 
+
 2008-11-12  Neutron Soutmun <neo.neutron@gmail.com>
 
        * weblogin/logout.php: Substring the request url to shorten the line
index d68125c..fb14b96 100644 (file)
@@ -44,6 +44,9 @@ int wrapped_getsockopt(void *data, socklen_t *size)
   if (res != 0)
     DP("res=%d errno=%d", res, errno);
 
+  if (shutdown(sockfd, SHUT_RDWR) != 0)
+    syslog(LOG_ERR, "Failed shutdown() socket, errno=%d", errno);
+
   if (close(sockfd) != 0)
     syslog(LOG_ERR, "Failed close() socket, errno=%d", errno);
 
@@ -63,6 +66,9 @@ int wrapped_setsockopt(void *data, socklen_t size)
   if (res != 0)
     DP("res=%d errno=%d", res, errno);
 
+  if (shutdown(sockfd, SHUT_RDWR) != 0)
+    syslog(LOG_ERR, "Failed shutdown() socket, errno=%d", errno);
+
   if (close(sockfd) != 0)
     syslog(LOG_ERR, "Failed close() socket, errno=%d", errno);
 
index abb7cd5..be72e14 100644 (file)
@@ -264,6 +264,8 @@ static int startservice (struct rahunas_map *map)
 
   free_data_list(data_list);
 
+  gda_client_close_all_connections (client);
+
   g_object_unref(G_OBJECT(client));
 
   return 0;
@@ -300,6 +302,8 @@ static int startsess (struct rahunas_map *map, struct task_req *req)
 
   execute_sql(connection, startsess_cmd);
 
+  gda_client_close_all_connections (client);
+
   g_object_unref(G_OBJECT(client)); 
 
   return 0;
@@ -329,6 +333,8 @@ static int stopsess (struct rahunas_map *map, struct task_req *req)
 
   execute_sql(connection, stopsess_cmd);
 
+  gda_client_close_all_connections (client);
+
   g_object_unref(G_OBJECT(client)); 
 
   return 0;
index 10006bc..f0dee5d 100644 (file)
@@ -73,19 +73,22 @@ int do_startsession(GNetXmlRpcServer *server,
   req.session_id = session_id;
   parse_mac(mac_address, &ethernet);
   memcpy(req.mac_address, &ethernet, ETH_ALEN);
-  
+  req.session_timeout = 0;
+
   if (session_timeout != NULL) {
     if (atol(session_timeout) != 0)
       req.session_timeout = time(NULL) + atol(session_timeout);
   }
 
-  if (bandwidth_max_down != NULL) {
+  if (bandwidth_max_down != NULL)
     req.bandwidth_max_down = atol(bandwidth_max_down);
-     
-  }
+  else
+    req.bandwidth_max_down = 0;
 
   if (bandwidth_max_up != NULL)
     req.bandwidth_max_up = atol(bandwidth_max_up);
+  else
+    req.bandwidth_max_up = 0;
 
   rh_task_startsess(map, &req);