summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2020-10-28 12:36:05 -0400
committerDrew DeVault <sir@cmpwn.com>2020-10-28 12:36:05 -0400
commitac6145ed6af2ae4f4af4a5c8a0598625f39b047e (patch)
tree1b955e8fd0198e1f4dba3918f9cb4b5d61a3dc1c /src
parentda6f7e9f05ae40446dab41cc45f44bbd7d4aa98a (diff)
downloadgmnisrv-ac6145ed6af2ae4f4af4a5c8a0598625f39b047e.tar.gz
gmnisrv-ac6145ed6af2ae4f4af4a5c8a0598625f39b047e.tar.xz
gmnisrv-ac6145ed6af2ae4f4af4a5c8a0598625f39b047e.zip
server: handle write errors
Diffstat (limited to 'src')
-rw-r--r--src/server.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server.c b/src/server.c
index 65b8204..3a07b9b 100644
--- a/src/server.c
+++ b/src/server.c
@@ -463,7 +463,11 @@ client_writable(struct gmnisrv_server *server, struct gmnisrv_client *client)
for (int w = 0; w < r; ) {
int q = write(client->sockfd, &buf[w], r - w);
if (q < 0) {
- assert(0); // TODO: handle write errors
+ client_error(&client->addr,
+ "client write: %s",
+ strerror(errno));
+ disconnect_client(server, client);
+ return DISCONNECTED;
}
w += q;
}