fixed NULL pointer in cmd_unregister && fixed crash in QServer.c
authorpk910 <philipp@zoelle1.de>
Sat, 28 Jan 2012 17:16:36 +0000 (18:16 +0100)
committerpk910 <philipp@zoelle1.de>
Sat, 28 Jan 2012 17:21:00 +0000 (18:21 +0100)
src/QServer.c
src/cmd_global_unregister.c

index fd0e8e6676a1486bc5ab12059dbf265a279ddfe2..f8a98a11c04bf0022f7cc5f50624671bdf094c56 100644 (file)
@@ -163,6 +163,8 @@ static void qserver_parse(struct QServerClient *client, char *line, int len) {
 }
 
 void qserver_loop() {
+    if(!get_int_field("QServer.enabled"))
+        return;
     struct timeval tv;
     struct QServerClient *client, *next, *prev = NULL;
     int ret;
@@ -204,14 +206,15 @@ void qserver_loop() {
         //new connection
         struct sockaddr_in cli_addr;
         socklen_t clilen;
+        client = malloc(sizeof(*client));
+        clilen = sizeof(cli_addr);
+        client->sock = accept(server_sockfd, (struct sockaddr *) &cli_addr, &clilen);
+        client->flags = 0;
         if(qserver_clientcount >= QSERVER_MAXCLIENTS) {
             qserver_put(client, "E :Maximum QServer Connections reached");
             close(client->sock);
+            free(client);
         } else {
-            client = malloc(sizeof(*client));
-            clilen = sizeof(cli_addr);
-            client->sock = accept(server_sockfd, (struct sockaddr *) &cli_addr, &clilen);
-            client->flags = 0;
             client->lastmsg = now;
             client->bufferpos = 0;
             client->references = 0;
index 43dab20796f171615c61b67c487001eb0d539b22..206e763bbb15f497b28f0bfd7fe9e556524509f6 100644 (file)
@@ -56,10 +56,10 @@ CMD_BIND(global_cmd_unregister) {
         if(bot->clientid == botid)
             break;
     }
+    printf_mysql_query("DELETE FROM `bot_channels` WHERE `id` = '%s'", row[1]);
+    reply(getTextBot(), user, "NS_UNREGISTER_DONE", channel);
     if(bot && strcmp(row[2], "1")) {
         putsock(bot, "PART %s :Channel unregistered.", channel);
     }
-    printf_mysql_query("DELETE FROM `bot_channels` WHERE `id` = '%s'", row[1]);
-    reply(getTextBot(), user, "NS_UNREGISTER_DONE", channel);
     logEvent(event);
 }