From bbae2603b071b32b67d7ad19095c9982550df6b9 Mon Sep 17 00:00:00 2001 From: Jan Vidar Krey Date: Sun, 19 Jul 2009 03:39:11 +0200 Subject: [PATCH] Make sure we detect send errors. --- src/netevent.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/netevent.c b/src/netevent.c index 5043386..954374f 100644 --- a/src/netevent.c +++ b/src/netevent.c @@ -215,8 +215,11 @@ int handle_net_write(struct user* user) while (hub_sendq_get_bytes(user->net.send_queue)) { int ret = hub_sendq_send(user->net.send_queue, net_user_send, user); - if (ret <= 0) + if (ret == 0 || (ret == -1 && (net_error() == EAGAIN || net_error() == EINTR))) break; + + if (ret < 0) + return quit_socket_error; } if (hub_sendq_get_bytes(user->net.send_queue)) @@ -256,8 +259,7 @@ void net_event(int fd, short ev, void *arg) { flag_close = handle_net_read(user); } - - if (ev & EV_WRITE) + else if (ev & EV_WRITE) { flag_close = handle_net_write(user); }