chiark / gitweb /
improve some messages
[inn-innduct.git] / backends / innduct.c
index b6984eaeb89cea752c54c0264e143bb174bb1f18..f8af279a37693ddabec10495c1ab7ef4d2ddbfd8 100644 (file)
@@ -379,7 +379,7 @@ static double nocheck_decay= 100; /* conv'd from articles to lambda by main */
 /* all these are initialised to seconds, and converted to periods in main */
 static int reconnect_delay_periods=1000;
 static int flushfail_retry_periods=1000;
-static int backlog_retry_minperiods=50;
+static int backlog_retry_minperiods=100;
 static int backlog_spontrescan_periods=300;
 static int spontaneous_flush_periods=100000;
 static int max_separated_periods=2000;
@@ -1116,12 +1116,13 @@ static void vconnfail(Conn *conn, const char *fmt, va_list al) {
   for (i=0, d=conn->xmitd; i<conn->xmitu; i++, d++)
     xmit_free(d);
 
+  LIST_REMOVE(conns,conn);
+
   char *m= xvasprintf(fmt,al);
-  warn("C%d connection failed requeueing " RCI_TRIPLE_FMT_BASE ": %s",
-       conn->fd, RCI_TRIPLE_VALS_BASE(requeue, /*nothing*/), m);
+  warn("C%d[%d] connection failed requeueing " RCI_TRIPLE_FMT_BASE ": %s",
+       conn->fd, conns.count, RCI_TRIPLE_VALS_BASE(requeue, /*nothing*/), m);
   free(m);
 
-  LIST_REMOVE(conns,conn);
   conn_dispose(conn);
   check_assign_articles();
 }
@@ -1298,8 +1299,9 @@ static void *connchild_event(oop_source *lp, int fd, oop_event e, void *u) {
                     &peer_rd_err, conn);
   if (r) sysdie("oop_rd_read for peer (fd=%d)",conn->fd);
 
-  notice("C%d connected %s", conn->fd, conn->stream ? "streaming" : "plain");
   LIST_ADDHEAD(conns, conn);
+  notice("C%d[%d] connected %s",
+        conns.count, conn->fd, conn->stream ? "streaming" : "plain");
 
   connect_attempt_discard();
   check_assign_articles();
@@ -1899,9 +1901,9 @@ static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
     if (code!=205 && code!=503) {
       connfail(conn, "peer gave unexpected response to QUIT: %s", sani);
     } else {
-      notice("C%d idle connection closed by us", conn->fd);
-      assert(!conn_busy);
       LIST_REMOVE(conns,conn);
+      notice("C%d[%d] idle connection closed by us", conns.count, conn->fd);
+      assert(!conn_busy);
       conn_dispose(conn);
     }
     return OOP_CONTINUE;
@@ -1936,8 +1938,8 @@ static void *peer_rd_ok(oop_source *lp, oop_read *oread, oop_rd_event ev,
     if (conn_busy)
       PEERBADMSG("peer timed us out or stopped accepting articles");
 
-    notice("C%d idle connection closed by peer", conn->fd);
     LIST_REMOVE(conns,conn);
+    notice("C%d[%d] idle connection closed by peer", conns.count, conn->fd);
     conn_dispose(conn);
     return OOP_CONTINUE;
 
@@ -3077,13 +3079,15 @@ static void *inndcomm_event(oop_source *lp, int fd, oop_event e, void *u) {
 
       main_input_file= open_input_file(feedfile);
       if (!main_input_file)
-       die("flush succeeded but feedfile %s does not exist!", feedfile);
+       die("flush succeeded but feedfile %s does not exist!"
+           " (this probably means feedfile does not correspond"
+           " to site %s in newsfeeds)", feedfile, sitename);
 
       if (flushing_input_file) {
-       SMS(SEPARATED, max_separated_periods, "recovery flush complete");
+       SMS(SEPARATED, max_separated_periods, "flush complete");
       } else {
        close_defer();
-       SMS(NORMAL, spontaneous_flush_periods, "flush complete");
+       SMS(NORMAL, spontaneous_flush_periods, "recovery flush complete");
       }
       return OOP_CONTINUE;
 
@@ -3641,7 +3645,10 @@ int main(int argc, char **argv) {
 
   sitename= *argv++;
   if (!sitename) badusage("need site name argument");
-  remote_host= *argv++;
+
+  if (*argv) remote_host= *argv++;
+  else remote_host= sitename;
+  
   if (*argv) badusage("too many non-option arguments");
 
   /* defaults */
@@ -3674,13 +3681,12 @@ int main(int argc, char **argv) {
   if (!path_run)
     path_run= innconf->pathrun;
 
-  if (!feedfile) {
-    feedfile= xasprintf("%s/%s",innconf->pathoutgoing,sitename);
-  } else if (!feedfile[0]) {
-    badusage("feed filename, if specified, must be nonempty");
-  } else if (path_ends_slash(feedfile)) {
+  if (!feedfile) feedfile= sitename;
+  if (!feedfile[0]) badusage("feed filename, if specified, must be nonempty");
+  if (path_ends_slash(feedfile))
     feedfile= xasprintf("%s%s", feedfile, sitename);
-  }
+  if (feedfile[0] != '/')
+    feedfile= xasprintf("%s/%s", innconf->pathoutgoing, feedfile);
 
   if (!path_cli) {
     path_cli_dir= "innduct";
@@ -3703,9 +3709,6 @@ int main(int argc, char **argv) {
 
   /* set things up */
 
-  r= chdir(path_run);
-  if (r) sysdie("could not chdir to pathrun %s", path_run);
-
   path_lock=        xasprintf("%s_lock",      feedfile);
   path_flushing=    xasprintf("%s_flushing",  feedfile);
   path_defer=       xasprintf("%s_defer",     feedfile);
@@ -3745,6 +3748,9 @@ int main(int argc, char **argv) {
   self_pid= getpid();
   if (self_pid==-1) sysdie("getpid");
 
+  r= chdir(path_run);
+  if (r) sysdie("could not chdir to pathrun %s", path_run);
+
   statemc_lock();
 
   init_signals();