X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/d42e98caaaf4f07c8d1252236f03eb68b8be4619..2a3fcff17b9844f7799c547c795a8ca811d1f794:/server/server.c diff --git a/server/server.c b/server/server.c index 18f6851..2874357 100644 --- a/server/server.c +++ b/server/server.c @@ -1802,8 +1802,18 @@ static int listen_callback(ev_source *ev, c->ev = ev; c->w = ev_writer_new(ev, fd, writer_error, c, "client writer"); + if(!c->w) { + error(0, "ev_writer_new for file inbound connection (fd=%d) failed", + fd); + close(fd); + return 0; + } c->r = ev_reader_new(ev, fd, redirect_reader_callback, reader_error, c, "client reader"); + if(!c->r) + /* Main reason for failure is the FD is too big and that will already have + * been handled */ + fatal(0, "ev_reader_new for file inbound connection (fd=%d) failed", fd); ev_tie(c->r, c->w); c->fd = fd; c->reader = reader_callback;