fixed NULL pointer in cmd_unregister && fixed crash in QServer.c
[NeonServV5.git] / src / QServer.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;