fixed shutdown crash when not using QServer socket
[NeonServV5.git] / src / QServer.c
index 1e112332bbf1bed146797caf7ccd1a90fd705543..4ce86822656b458b24b35bb0241eb8b71730d209 100644 (file)
@@ -54,14 +54,16 @@ void qserver_init() {
         char *host = get_string_field("QServer.host");
         if(!host)
             host = "0.0.0.0";
-        int portno = get_int_field("QServer.port");
-        if(!portno)
-            portno = 7499;
+        int port = get_int_field("QServer.port");
+        if(!port)
+            port = 7499;
         server_iofd = iohandler_listen(host, port, qserver_callback);
     }
 }
 
 void qserver_free() {
+    if(!server_iofd)
+        return;
     struct QServerClient *client, *next;
     for (client = qserver_clients; client; client = next) {
         next = client->next;
@@ -87,7 +89,7 @@ static void qserver_put(struct QServerClient *client, const char *text, ...) {
     va_list arg_list;
     char sendBuf[MAXLEN];
     int pos;
-    if (!(client && !(client->flags & QSERVER_FLAG_DISCONNECT))) return;
+    if (!client || !client->iofd) return;
     sendBuf[0] = '\0';
     va_start(arg_list, text);
     pos = vsnprintf(sendBuf, MAXLEN - 2, text, arg_list);
@@ -218,7 +220,7 @@ static IOHANDLER_CALLBACK(qserver_callback) {
         client->iofd = NULL;
         break;
     case IOEVENT_ACCEPT:
-        
+        qserver_accept(event->data.accept_fd);
         break;
     default:
         break;