From: Steinar H. Gunderson Date: Sat, 6 Apr 2013 16:17:12 +0000 (+0200) Subject: When closing a client, make sure it is not left in sleeping_clients. X-Git-Tag: 1.0.0~212 X-Git-Url: https://git.sesse.net/?p=cubemap;a=commitdiff_plain;h=5812a7b5bb19068cff68c2946aa67a2a132717c7 When closing a client, make sure it is not left in sleeping_clients. --- diff --git a/server.cpp b/server.cpp index da721e7..d894bd1 100644 --- a/server.cpp +++ b/server.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include "metacube.h" #include "server.h" @@ -284,6 +285,11 @@ void Server::close_client(Client *client) perror("epoll_ctl(EPOLL_CTL_DEL)"); exit(1); } + + // This client could be sleeping, so we'll need to fix that. (Argh, O(n).) + vector::iterator new_end = + remove(sleeping_clients.begin(), sleeping_clients.end(), client->sock); + sleeping_clients.erase(new_end, sleeping_clients.end()); // Bye-bye! close(client->sock);