chiark / gitweb /
fix immediate auto expire list handling bug
[inn-innduct.git] / backends / innduct.c
index fc46fd3669ccb7b9f7c091f4c059d680b2b427f6..709dc993e7c6650ef23241f812ed6e4685772e23 100644 (file)
@@ -2179,12 +2179,15 @@ static void *feedfile_got_article(oop_source *lp, oop_read *rd,
   art->offset= old_offset;
   art->blanklen= recsz;
   strcpy(art->messageid, space+1);
-  LIST_ADDTAIL(ipf->queue, art);
 
-  if (ipf->autodefer >= 0)
+  if (ipf->autodefer >= 0) {
     article_autodefer(ipf, art);
-  else if (ipf==backlog_input_file)
-    article_check_expired(art);
+  } else {
+    LIST_ADDTAIL(ipf->queue, art);
+
+    if (ipf==backlog_input_file)
+      article_check_expired(art);
+  }
 
   if (sms==sm_NORMAL && ipf==main_input_file &&
       ipf->offset >= target_max_feedfile_size)
@@ -2809,7 +2812,8 @@ static void statemc_check_flushing_done(void) {
 
 static void *statemc_check_input_done(oop_source *lp, struct timeval now,
                                      void *u) {
-  assert(!inputfile_is_done(main_input_file));
+  /* main input file may be idle but if so that's because
+   * we haven't got to it yet, but that doesn't mean it's really done */
   statemc_check_flushing_done();
   statemc_check_backlog_done();
   return OOP_CONTINUE;