chiark / gitweb /
changelog: Finalise 2.2
[innduct.git] / xmit.c
diff --git a/xmit.c b/xmit.c
index 8adb082271a572c1842581e1d703326e8d0dd2f1..96e599af02eaceea39fb79864a5ab2cb9468dd37 100644 (file)
--- a/xmit.c
+++ b/xmit.c
@@ -3,25 +3,9 @@
  *  tailing reliable realtime streaming feeder for inn
  *  xmit.c - transmitting checks and articles, flow control, expiry
  *
- *  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.)
+ *  Copyright Ian Jackson <ijackson@chiark.greenend.org.uk>
+ *  and contributors; see LICENCE.txt.
+ *  SPDX-License-Identifier: GPL-3.0-or-later
  */
 
 #include "innduct.h"
@@ -81,7 +65,7 @@ void check_assign_articles(void) {
     }
     if (use) {
       int inqueue, spare;
-      conn_inqueue_spare(walk, &inqueue, &spare);
+      conn_inqueue_spare(use, &inqueue, &spare);
       if (!inqueue) use->since_activity= 0; /* reset idle counter */
       while (spare>0) {
        Article *art= dequeue(0);
@@ -174,7 +158,7 @@ int article_check_expired(Article *art /* must be queued, not conn */) {
 
   LIST_REMOVE(art->ipf->queue, art);
   art->missing= 1;
-  art->ipf->count_nooffer_missing++;
+  art->ipf->counts.events[nooffer_missing]++;
   article_done(art,-1);
   return 1;
 }
@@ -184,6 +168,7 @@ void inputfile_queue_check_expired(InputFile *ipf) {
 
   for (;;) {
     Article *art= LIST_HEAD(ipf->queue);
+    if (!art) break;
     int expd= article_check_expired(art);
     if (!expd) break;
   }
@@ -329,7 +314,7 @@ void conn_make_some_xmits(Conn *conn) {
        (abort(),-1);
 
       if (!artdata) art->missing= 1;
-      art->ipf->counts[art->state][ artdata ? RC_sent : RC_missing ]++;
+      art->ipf->counts.results[art->state][ artdata ? RC_sent : RC_missing ]++;
 
       if (conn->stream) {
        if (artdata) {
@@ -363,7 +348,7 @@ void conn_make_some_xmits(Conn *conn) {
       XMIT_LITERAL("\r\n");
 
       assert(art->state == art_Unchecked);
-      art->ipf->counts[art->state][RC_sent]++;
+      art->ipf->counts.results[art->state][RC_sent]++;
       LIST_ADDTAIL(conn->sent, art);
     }
   }