Fix the clients stuck, due to xmlrpc service fail
authorNeutron Soutmun <neo.neutron@gmail.com>
Thu, 2 Apr 2009 19:39:00 +0000 (02:39 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Thu, 2 Apr 2009 19:39:00 +0000 (02:39 +0700)
Clients stuck at the end of the service restarted.

Find the way to handle the xmlrpc client for multiple network,
which in the first time design to be it's virtual server ip
but the problem is the limitation of gnet_xmlrpc_client_new()
that can only parse the "localhost" as the hostname.
Therefore try to workaround by create the alias in the
apache config to do the special /rahunas_service path to
serve the xmlrpc stop accouting request.

2009-04-03  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-config.{h,c}, src/rh-server.c , src/rh-xmlrpc-cmd.c:
  - Drop all xml_serv_* due to now only the "localhost" that
    gnet_xmlrpc_client_new() can make a connection to.
  - Substitute xml_serv_* with the XMLSERVICE_HOST, XMLSERVICE_URL and
    XMLSERVICE_PORT.
  - According to XMLSERVICE_URL  "/rahunas_service/xmlrpc_service.php",
    needs the special apache config to do the alias for this path,
    will do in the debian apache config file for example.

ChangeLog
src/rh-config.c
src/rh-config.h
src/rh-server.c
src/rh-xmlrpc-cmd.c

index ee23103..f8164f5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,17 @@
 2009-04-03  Neutron Soutmun <neo.neutron@gmail.com>
 
        * src/rh-config.{h,c}, src/rh-server.c , src/rh-xmlrpc-cmd.c:
+         - Drop all xml_serv_* due to now only the "localhost" that 
+           gnet_xmlrpc_client_new() can make a connection to.
+         - Substitute xml_serv_* with the XMLSERVICE_HOST, XMLSERVICE_URL and 
+           XMLSERVICE_PORT.
+         - According to XMLSERVICE_URL  "/rahunas_service/xmlrpc_service.php",
+           needs the special apache config to do the alias for this path,
+           will do in the debian apache config file for example.
+
+2009-04-03  Neutron Soutmun <neo.neutron@gmail.com>
+
+       * src/rh-config.{h,c}, src/rh-server.c , src/rh-xmlrpc-cmd.c:
          - Drop xml_serv_host from config list and replaced by vserver_ip.
          - Try to sending XML-RPC command via vserver_ip.
 
index a52ac08..cc43d8c 100755 (executable)
@@ -75,12 +75,6 @@ enum lcfg_status rahunas_visitor(const char *key, void *data, size_t size,
         config->rh_vserver.vserver_ip = strdup(value); 
       } else if (strncmp(sub_key, "idle_timeout", 12) == 0) {
         config->rh_vserver.idle_timeout = atoi(value);
-      } else if (strncmp(sub_key, "xml_serv_port", 13) == 0) {
-        config->rh_vserver.xml_serv_port = atoi(value); 
-      } else if (strncmp(sub_key, "xml_serv_url", 12) == 0) {
-        if (config->rh_vserver.xml_serv_url != NULL)
-          free(config->rh_vserver.xml_serv_url);
-        config->rh_vserver.xml_serv_url = strdup(value); 
       }
       break;
   }
@@ -172,7 +166,6 @@ int cleanup_vserver_config(struct rahunas_vserver_config *config)
 {
   rh_free(&(config->vserver_ip));
   rh_free(&(config->vserver_name));  
-  rh_free(&(config->xml_serv_url));
   return 0;
 }
 
index 125ec81..ee7ace0 100644 (file)
@@ -17,7 +17,7 @@
 
 #define XMLSERVICE_HOST "localhost"
 #define XMLSERVICE_PORT 80
-#define XMLSERVICE_URL  "/xmlrpc_service.php"
+#define XMLSERVICE_URL  "/rahunas_service/xmlrpc_service.php"
 
 #define CONFIG_FILE RAHUNAS_CONF_DIR "rahunas.conf"
 #define DEFAULT_PID RAHUNAS_RUN_DIR "rahunasd.pid"
@@ -35,8 +35,6 @@ struct rahunas_vserver_config {
   char *vserver_name;
   int  idle_timeout;
   char *vserver_ip;
-  int  xml_serv_port;
-  char *xml_serv_url;
 };
 
 union rahunas_config {
index 923e536..0ad273c 100644 (file)
@@ -89,8 +89,6 @@ int register_vserver(struct main_server *ms, const char *vserver_cfg_file)
     .rh_vserver.vserver_ip = NULL, 
     .rh_vserver.vserver_name = NULL,
     .rh_vserver.idle_timeout = IDLE_TIMEOUT,
-    .rh_vserver.xml_serv_port = XMLSERVICE_PORT,
-    .rh_vserver.xml_serv_url = strdup(XMLSERVICE_URL),
   };
 
   cfg_file = fopen(vserver_cfg_file, "r");
@@ -106,7 +104,6 @@ int register_vserver(struct main_server *ms, const char *vserver_cfg_file)
 
   if (get_config(vserver_cfg_file, &config) != 0) {
     rh_free(&config.rh_vserver.vserver_ip);
-    rh_free(&config.rh_vserver.xml_serv_url);
     return -1;
   }
 
index 2a92e3c..7bdf353 100644 (file)
@@ -40,12 +40,8 @@ int send_xmlrpc_stopacct(struct vserver *vs, uint32_t id, int cause) {
   if (params == NULL)
     return (-1);
 
-  DP("XMLRPC: %s%s, port=%d", vs->vserver_config->vserver_ip,
-                               vs->vserver_config->xml_serv_url,
-                               vs->vserver_config->xml_serv_port);
-  client = gnet_xmlrpc_client_new(vs->vserver_config->vserver_ip, 
-                                  vs->vserver_config->xml_serv_url, 
-                                  vs->vserver_config->xml_serv_port);
+  client = gnet_xmlrpc_client_new(XMLSERVICE_HOST, XMLSERVICE_URL, 
+                                  XMLSERVICE_PORT);
 
   if (!client) {
     logmsg(RH_LOG_ERROR, "[%s] Could not connect to XML-RPC service", vs->vserver_config->vserver_name);