chiark / gitweb /
improve logging
[innduct.git] / recv.c
diff --git a/recv.c b/recv.c
index 870e0e5..00ec7bc 100644 (file)
--- a/recv.c
+++ b/recv.c
@@ -1,14 +1,42 @@
+/*
+ *  innduct
+ *  tailing reliable realtime streaming feeder for inn
+ *  recv.c - receiving peer responses and disposing of articles
+ *
+ *  Copyright (C) 2010 Ian Jackson <ijackson@chiark.greenend.org.uk>
+ * 
+ *  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
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ * 
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ * 
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ *  (I believe that when you compile and link this as part of the inn2
+ *  build, with the Makefile runes I have provided, all the libraries
+ *  and files which end up included in innduct are licence-compatible
+ *  with GPLv3.  If not then please let me know.  -Ian Jackson.)
+ */
+
+#include "innduct.h"
+
 /*========== handling responses from peer ==========*/
 
-static const oop_rd_style peer_rd_style= {
+const oop_rd_style peer_rd_style= {
   OOP_RD_DELIM_STRIP, '\n',
   OOP_RD_NUL_FORBID,
   OOP_RD_SHORTREC_FORBID
 };
 
-static void *peer_rd_err(oop_source *lp, oop_read *oread, oop_rd_event ev,
-                        const char *errmsg, int errnoval,
-                        const char *data, size_t recsz, void *conn_v) {
+void *peer_rd_err(oop_source *lp, oop_read *oread, oop_rd_event ev,
+                 const char *errmsg, int errnoval,
+                 const char *data, size_t recsz, void *conn_v) {
   Conn *conn= conn_v;
   connfail(conn, "error receiving from peer: %s", errmsg);
   return OOP_CONTINUE;
@@ -87,9 +115,9 @@ static void update_nocheck(int accepted) {
   nocheck= new_nocheck;
 }
 
-static void article_done(Article *art, int whichcount) {
+void article_done(Article *art, int whichcount) {
   if (whichcount>=0 && !art->missing)
-    art->ipf->counts[art->state][whichcount]++;
+    art->ipf->counts.results[art->state][whichcount]++;
 
   if (whichcount == RC_accepted) update_nocheck(1);
   else if (whichcount == RC_unwanted) update_nocheck(0);
@@ -129,9 +157,9 @@ static void article_done(Article *art, int whichcount) {
     queue_check_input_done();
 }
 
-static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
-                       const char *errmsg, int errnoval,
-                       const char *data, size_t recsz, void *conn_v) {
+void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
+                const char *errmsg, int errnoval,
+                const char *data, size_t recsz, void *conn_v) {
   Conn *conn= conn_v;
 
   if (ev == OOP_RD_EOF) {
@@ -157,8 +185,9 @@ static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
               conn->quitting, sani);
     } else {
       LIST_REMOVE(conns,conn);
-      notice("C%d (now %d) idle connection closed (%s)",
+      info("C%d (now %d) idle connection closed (%s)",
             conn->fd, conns.count, conn->quitting);
+      notice_conns_fewer();
       assert(!busy);
       conn_dispose(conn);
     }
@@ -195,8 +224,9 @@ static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
       PEERBADMSG("peer timed us out or stopped accepting articles");
 
     LIST_REMOVE(conns,conn);
-    notice("C%d (now %d) idle connection closed by peer",
-          conns.count, conn->fd);
+    info("C%d (now %d) idle connection closed by peer",
+        conns.count, conn->fd);
+    notice_conns_fewer();
     conn_dispose(conn);
     return OOP_CONTINUE;
 
@@ -214,7 +244,7 @@ static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
   case 335: /* IHAVE says send it */
     GET_ARTICLE(-1);
     assert(art->state == art_Unchecked);
-    art->ipf->counts[art->state][RC_accepted]++;
+    art->ipf->counts.results[art->state][RC_accepted]++;
     art->state= art_Wanted;
     LIST_ADDTAIL(conn->priority, art);
     break;