Added forcekick command to opserv to allow kicking of +k opers.
[srvx.git] / src / mod-qserver.c
index da9c941dfbbe6e6623d1d937ba762b995693cbed..451e1969e79a96a2c6b7edc07ae2fdd1d2999bdc 100644 (file)
@@ -89,7 +89,7 @@ qserver_readable(struct io_fd *fd)
         tmpline[--len] = '\0';
     argc = split_line(tmpline, false, ArrayLength(argv), argv);
     if (argc < 3) {
-        ioset_printf(fd, "MISSING_ARGS");
+        ioset_printf(fd, "MISSING_ARGS\n");
         return;
     }
     if (!strcmp(argv[1], "PASS")
@@ -134,7 +134,6 @@ qserver_accept(UNUSED_ARG(struct io_fd *listener), struct io_fd *fd)
 
     client = calloc(1, sizeof(*client));
     fd->data = client;
-    fd->wants_reads = 1;
     fd->line_reads = 1;
     fd->readable_cb = qserver_readable;
     fd->destroy_cb = qserver_destroy_fd;
@@ -161,7 +160,7 @@ qserver_accept(UNUSED_ARG(struct io_fd *listener), struct io_fd *fd)
         if (getnameinfo((struct sockaddr*)&ss, sa_len, host, sizeof(host), NULL, 0, 0) != 0)
             safestrncpy(host, ip, sizeof(host));
     }
-    client->user = AddLocalUser(nick, nick+1, host, "qserver dummy user", "*+i");
+    client->user = AddLocalUser(nick, nick+1, host, "qserver dummy user", "*+oi");
     irc_pton(&client->user->ip, NULL, ip);
     dict_insert(qserver_dict, client->user->nick, client);
 
@@ -206,6 +205,7 @@ qserver_cleanup(void)
 {
     unsigned int ii;
 
+    ioset_close(qserver_listener, 1);
     for (ii = 0; ii < qserver_nbots; ++ii)
         if (qserver_clients[ii])
             DelUser(qserver_clients[ii]->user, NULL, 0, "module finalizing");