diff options
author | benno <benno> | 2013-11-13 20:43:36 +0000 |
---|---|---|
committer | benno <benno> | 2013-11-13 20:43:36 +0000 |
commit | 7624800ddc8fa8e51164dc7c615894c086deabef (patch) | |
tree | 1949cebf41047fa5dd6d2efa478d6f586bade8bf | |
parent | f0ed61f53cec00ce728fabb5fb615a75671043ea (diff) | |
download | rtmux-7624800ddc8fa8e51164dc7c615894c086deabef.tar.gz rtmux-7624800ddc8fa8e51164dc7c615894c086deabef.tar.bz2 rtmux-7624800ddc8fa8e51164dc7c615894c086deabef.zip |
from nicm: : handle msgbuf_write() returning EAGAIN
-rw-r--r-- | client.c | 2 | ||||
-rw-r--r-- | server-client.c | 4 |
2 files changed, 4 insertions, 2 deletions
@@ -464,7 +464,7 @@ client_callback(unused int fd, short events, void *data) } if (events & EV_WRITE) { - if (msgbuf_write(&client_ibuf.w) < 0) + if (msgbuf_write(&client_ibuf.w) < 0 && errno != EAGAIN) goto lost_server; } diff --git a/server-client.c b/server-client.c index 82d840a0..c6257edb 100644 --- a/server-client.c +++ b/server-client.c @@ -19,6 +19,7 @@ #include <sys/types.h> #include <sys/ioctl.h> +#include <errno.h> #include <event.h> #include <fcntl.h> #include <paths.h> @@ -222,7 +223,8 @@ server_client_callback(int fd, short events, void *data) return; if (fd == c->ibuf.fd) { - if (events & EV_WRITE && msgbuf_write(&c->ibuf.w) < 0) + if (events & EV_WRITE && msgbuf_write(&c->ibuf.w) < 0 && + errno != EAGAIN) goto client_lost; if (c->flags & CLIENT_BAD) { |