diff options
author | June McEnroe <june@causal.agency> | 2017-09-01 12:33:54 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2017-09-01 12:33:54 -0400 |
commit | 2f5f73d10a13f612f54ae1e5be8519d72a9372a0 (patch) | |
tree | f86e1b1234de64d51e1a02a655dc3f104cae9082 | |
parent | Add client readOnly mode (diff) | |
download | torus-2f5f73d10a13f612f54ae1e5be8519d72a9372a0.tar.gz torus-2f5f73d10a13f612f54ae1e5be8519d72a9372a0.zip |
Remove clientRemove call from clientCast
If an error occurs on a client socket during a broadcast, that client will show up in the kqueue loop with EV_EOF and get removed that way. Tested by sending SIGKILL to a client and watching its cursor disappear.
-rw-r--r-- | server.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/server.c b/server.c index 3836f5d..29beabf 100644 --- a/server.c +++ b/server.c @@ -114,8 +114,6 @@ static struct Client *clientAdd(int fd) { return client; } -static void clientRemove(struct Client *client); - static bool clientSend(const struct Client *client, const struct ServerMessage *msg) { ssize_t len = send(client->fd, msg, sizeof(*msg), 0); if (len < 0) return false; @@ -130,16 +128,11 @@ static bool clientSend(const struct Client *client, const struct ServerMessage * } static void clientCast(const struct Client *origin, const struct ServerMessage *msg) { -retry: for (struct Client *client = clientHead; client; client = client->next) { if (client == origin) continue; if (client->tileX != origin->tileX) continue; if (client->tileY != origin->tileY) continue; - - if (!clientSend(client, msg)) { - clientRemove(client); - goto retry; - } + clientSend(client, msg); } } |