return NULL;
}
-void free_sockets() {
+void free_sockets(int close_only) {
if(!sockets) return;
struct ClientSocket *client, *next;
for (client = sockets->data; client; client = next) {
next = client->next;
- destroy_socket(client);
+ if(close_only) {
+ if((client->flags & SOCKET_FLAG_CONNECTED))
+ iohandler_printf(client->iofd, "QUIT :[NeonServ %s.%d] shutdown requested.\n", NEONSERV_VERSION, patchlevel);
+ } else
+ destroy_socket(client);
}
- free(sockets);
+ if(!close_only)
+ free(sockets);
sockets = NULL;
}
/* MODULAR ACCESSIBLE */ void putsock(struct ClientSocket *client, const char *text, ...) PRINTF_LIKE(2, 3);
/* MODULAR ACCESSIBLE */ struct ClientSocket* getBots(int flags, struct ClientSocket* last_bot);
void init_sockets();
-void free_sockets();
+void free_sockets(int close_only);
#endif
#endif