Prevent double login
authorNeutron Soutmun <neo.neutron@gmail.com>
Tue, 21 Apr 2009 16:13:44 +0000 (23:13 +0700)
committerNeutron Soutmun <neo.neutron@gmail.com>
Tue, 21 Apr 2009 16:13:44 +0000 (23:13 +0700)
2009-04-21  Neutron Soutmun <neo.neutron@gmail.com>

* src/rh-xmlrpc-server.c: Prevent the client to double login by mistake.

ChangeLog
src/rh-xmlrpc-server.c

index e2d6a9e..f0e37f1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-04-21  Neutron Soutmun <neo.neutron@gmail.com>
+
+       * src/rh-xmlrpc-server.c: Prevent the client to double login by mistake. 
+
 2009-04-20  Neutron Soutmun <neo.neutron@gmail.com>
 
        * example/rahunas.init.in: Call weblogin-config-update.sh to generate config
index 3095d4d..59a6b78 100644 (file)
@@ -72,6 +72,11 @@ int do_startsession(GNetXmlRpcServer *server,
     goto cleanup;
   }
 
+  /* Check if client already registered */
+  member_node = member_get_node_by_id(vs, id);
+  if (member_node != NULL)
+    goto greeting;
+
   req.id = id;
   req.vserver_id = atoi(vserver_id);
   req.username = username;
@@ -97,9 +102,9 @@ int do_startsession(GNetXmlRpcServer *server,
     req.bandwidth_max_up = 0;
 
   rh_task_startsess(vs, &req);
-
   member_node = member_get_node_by_id(vs, id);
 
+greeting:
   if (member_node != NULL) {
     member = (struct rahunas_member *)member_node->data;
     *reply_string = g_strdup_printf("Greeting! Got: IP %s, User %s, ID %s", 
@@ -109,8 +114,8 @@ int do_startsession(GNetXmlRpcServer *server,
   }
 
 out:
-    *reply_string = g_strdup("Invalid input parameters");
-    goto cleanup;
+  *reply_string = g_strdup("Invalid input parameters");
+  goto cleanup;
 
 cleanup:
   DP("RPC Reply: %s", *reply_string);
@@ -288,8 +293,8 @@ int do_getsessioninfo(GNetXmlRpcServer *server,
   goto cleanup;
 
 out:
-    *reply_string = g_strdup("Invalid input parameters");
-     goto cleanup;
+  *reply_string = g_strdup("Invalid input parameters");
+   goto cleanup;
 
 cleanup:
   DP("RPC Reply: %s", *reply_string);