chiark / gitweb /
Expunge revision histories in files.
[tripe] / admin.c
diff --git a/admin.c b/admin.c
index 4571b6628aed249c2cfaec5698b026f870defaee..bca525d8a3bdc01c461fb0965d624717c4cd9a8b 100644 (file)
--- a/admin.c
+++ b/admin.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: admin.c,v 1.6 2001/02/19 19:11:09 mdw Exp $
+ * $Id: admin.c,v 1.10 2004/04/08 01:36:17 mdw Exp $
  *
  * Admin interface for configuration
  *
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-/*----- Revision history --------------------------------------------------* 
- *
- * $Log: admin.c,v $
- * Revision 1.6  2001/02/19 19:11:09  mdw
- * Output buffering on admin connections.
- *
- * Revision 1.5  2001/02/16 21:22:51  mdw
- * Support for displaying statistics.  Make client connections blocking, so
- * that things don't get dropped.  (This might change again if I add
- * buffering.)
- *
- * Revision 1.4  2001/02/06 09:34:53  mdw
- * Change ERR response to FAIL for consistency with other programs.
- *
- * Revision 1.3  2001/02/04 01:17:12  mdw
- * The `DAEMON' notification to stdout is replaced by a warning.  The
- * `DAEMON' and `QUIT' command send `OK' on successful completion.  Put
- * assignment of sequence number in a T(...) guard.
- *
- * Revision 1.2  2001/02/03 22:40:29  mdw
- * Put timer information into the entropy pool when packets are received
- * and on similar events.  Reseed the generator on the interval timer.
- *
- * Revision 1.1  2001/02/03 20:26:37  mdw
- * Initial checkin.
- *
- */
-
 /*----- Header files ------------------------------------------------------*/
 
 #include "tripe.h"
@@ -248,7 +220,7 @@ static void a_write(admin *a, const char *fmt, ...)
   va_list ap;
   dstr d = DSTR_INIT;
   va_start(ap, fmt);
-  dstr_vputf(&d, fmt, ap);
+  dstr_vputf(&d, fmt, &ap);
   va_end(ap);
   dosend(a, d.buf, d.len);
   dstr_destroy(&d);
@@ -273,7 +245,7 @@ void a_warn(const char *fmt, ...)
   if (flags & F_INIT)
     dstr_puts(&d, "WARN ");
   va_start(ap, fmt);
-  dstr_vputf(&d, fmt, ap);
+  dstr_vputf(&d, fmt, &ap);
   va_end(ap);
   if (!(flags & F_INIT))
     moan("%s", d.buf);
@@ -797,6 +769,7 @@ static void a_destroy(admin *a)
 /* --- @a_line@ --- *
  *
  * Arguments:  @char *p@ = pointer to the line read
+ *             @size_t len@ = length of the line
  *             @void *vp@ = pointer to my admin block
  *
  * Returns:    ---
@@ -804,7 +777,7 @@ static void a_destroy(admin *a)
  * Use:                Handles a line of input.
  */
 
-static void a_line(char *p, void *vp)
+static void a_line(char *p, size_t len, void *vp)
 {
   admin *a = vp;
   const acmd *c;
@@ -889,7 +862,9 @@ static void a_accept(int fd, unsigned mode, void *v)
   size_t sz = sizeof(sun);
 
   if ((nfd = accept(fd, (struct sockaddr *)&sun, &sz)) < 0) {
-    a_warn("accept admin connection failed: %s", strerror(errno));
+    if (errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK &&
+       errno != ECONNABORTED && errno != EPROTO)
+      a_warn("accept admin connection failed: %s", strerror(errno));
     return;
   }
   a_create(nfd, nfd);