chiark / gitweb /
split out disorder-server.deb
[disorder] / server / server.c
index 80afbe51b738f146ec2ce6c049d36046e90486b7..5a11b8cd05c8c6ac278e248621df339f3d0d47f6 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder.
- * Copyright (C) 2004, 2005, 2006 Richard Kettlewell
+ * Copyright (C) 2004, 2005, 2006, 2007 Richard Kettlewell
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -140,6 +140,8 @@ static int reader_error(ev_source attribute((unused)) *ev,
   D(("server reader_error %d %d", fd, errno_value));
   error(errno, "S%x read error on socket", c->tag);
   ev_writer_cancel(c->w);
+  ev_report(ev);
+  info("closing fd %d", fd);
   xclose(fd);
   return 0;
 }
@@ -1110,8 +1112,10 @@ static int listen_callback(ev_source *ev,
   cloexec(fd);
   c->tag = tags++;
   c->ev = ev;
-  c->w = ev_writer_new(ev, fd, writer_error, c);
-  c->r = ev_reader_new(ev, fd, redirect_reader_callback, reader_error, c);
+  c->w = ev_writer_new(ev, fd, writer_error, c,
+                      "client writer");
+  c->r = ev_reader_new(ev, fd, redirect_reader_callback, reader_error, c,
+                      "client reader");
   c->fd = fd;
   c->reader = reader_callback;
   c->l = l;
@@ -1147,7 +1151,8 @@ int server_start(ev_source *ev, int pf,
   cloexec(fd);
   l->name = name;
   l->pf = pf;
-  if(ev_listen(ev, fd, listen_callback, l)) exit(EXIT_FAILURE);
+  if(ev_listen(ev, fd, listen_callback, l, "server listener"))
+    exit(EXIT_FAILURE);
   return fd;
 }