X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=conn.c;fp=conn.c;h=e38adb5f2bb0baae2b18a6574765138e337709ae;hb=854f19ae391120e6dd11c33c66250745b3d21aa7;hp=c99174c59317482768167b6f520e2e278471af6d;hpb=4332dc9e11bdd1dc45a75aa3b5249f816ef7f148;p=innduct.git diff --git a/conn.c b/conn.c index c99174c..e38adb5 100644 --- a/conn.c +++ b/conn.c @@ -101,7 +101,8 @@ void vconnfail(Conn *conn, const char *fmt, va_list al) { LIST_REMOVE(conns,conn); char *m= xvasprintf(fmt,al); - warn("C%d (now %d) connection failed requeueing " RCI_TRIPLE_FMT_BASE ": %s", + warn("C%d (now %d) connection failed " + "(requeueing " RCI_TRIPLE_FMT_BASE "): %s", conn->fd, conns.count, RCI_TRIPLE_VALS_BASE(requeue, /*nothing*/), m); free(m); @@ -188,6 +189,30 @@ void check_idle_conns(void) { conn_idle_close(conn, "low volume"); } +/*---------- reporting numbers of connections ----------*/ + +static int conns_max_reported, conns_idle_reported; + +void notice_conns_more(const char *new_kind) { + if (conns.count > conns_max_reported) { + notice("up to %d connections (%s)", conns.count, new_kind); + conns_max_reported= conns.count; + } +} + +void notice_conns_fewer(void) { + if (!conns.count && !conns_idle_reported) { + notice("low volume, using intermittent connection"); + conns_idle_reported= 1; + } +} + +void notice_conns_stats(void) { + notice("currently %d connection(s)", conns.count); + conns_max_reported= conns.count; + conns_idle_reported= 0; +} + /*---------- making new connections ----------*/ pid_t connecting_child; @@ -308,8 +333,9 @@ static void *connchild_event(oop_source *lp, int fd, oop_event e, void *u) { if (r) syscrash("oop_rd_read for peer (fd=%d)",conn->fd); LIST_ADDHEAD(conns, conn); - notice("C%d (now %d) connected %s", - conn->fd, conns.count, conn->stream ? "streaming" : "plain"); + const char *streamdesc= conn->stream ? "streaming" : "plain"; + info("C%d (now %d) connected %s", conn->fd, conns.count, streamdesc); + notice_conns_more(streamdesc); connect_attempt_discard(); check_assign_articles();