chiark
/
gitweb
/
~mdw
/
disorder
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Set resource limits on the server to prevent more than FD_SETSIZE
[disorder]
/
server
/
server.c
diff --git
a/server/server.c
b/server/server.c
index 18f6851ff6f741556b6b257f3dae529113369ab8..2874357a4e8959f7ceef798a093feb340d1d577c 100644
(file)
--- 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");
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");
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;
ev_tie(c->r, c->w);
c->fd = fd;
c->reader = reader_callback;