INN commit: branches/2.4 (NEWS doc/pod/news.pod innfeed/connection.c)

INN Commit Russ_Allbery at isc.org
Sat Apr 26 08:15:41 UTC 2008


    Date: Saturday, April 26, 2008 @ 01:15:40
  Author: iulius
Revision: 7793

Revert commit 7753 because innfeed uses too much CPU with it.

Modified:
  branches/2.4/NEWS
  branches/2.4/doc/pod/news.pod
  branches/2.4/innfeed/connection.c

----------------------+
 NEWS                 |    3 ---
 doc/pod/news.pod     |    5 -----
 innfeed/connection.c |   41 ++++++++++++++---------------------------
 3 files changed, 14 insertions(+), 35 deletions(-)

Modified: NEWS
===================================================================
--- NEWS	2008-04-26 07:44:23 UTC (rev 7792)
+++ NEWS	2008-04-26 08:15:40 UTC (rev 7793)
@@ -17,9 +17,6 @@
     * scanlogs now rotates innfeed's log file, which prevents innfeed from
       silently dying when its log file reaches 2 GB.
 
-    * Some annoying assertion failures occurring in innfeed have been fixed
-      by Russ Allbery.
-
     * Some news clients hang when posting an article through a SSL
       connection: it seems that nnrpd's SSL routines make it wrongly wait
       for data completion.  In order to fix the problem, the select() wait

Modified: doc/pod/news.pod
===================================================================
--- doc/pod/news.pod	2008-04-26 07:44:23 UTC (rev 7792)
+++ doc/pod/news.pod	2008-04-26 08:15:40 UTC (rev 7793)
@@ -29,11 +29,6 @@
 
 =item *
 
-Some annoying assertion failures occurring in B<innfeed> have been fixed
-by Russ Allbery.
-
-=item *
-
 Some news clients hang when posting an article through a SSL connection:
 it seems that B<nnrpd>'s SSL routines make it wrongly wait for data
 completion.  In order to fix the problem, the select() wait is now

Modified: innfeed/connection.c
===================================================================
--- innfeed/connection.c	2008-04-26 07:44:23 UTC (rev 7792)
+++ innfeed/connection.c	2008-04-26 08:15:40 UTC (rev 7793)
@@ -2321,16 +2321,10 @@
         cxnSleep (cxn) ;
     }
   else
-    {
-      /* Some hosts return a response even before we're done sending, so don't
-         go idle until here. */
-      if (cxn->state == cxnFeedingS && cxn->articleQTotal == 0)
-        cxnIdle (cxn) ;
-      else
-        /* The command set has been sent, so start the response timer. */
-        initReadBlockedTimeout (cxn) ;
-    }
+    /* The article has been sent, so start the response timer. */
+    initReadBlockedTimeout (cxn) ;
 
+
   freeBufferArray (b) ;
 
   return ;
@@ -2380,8 +2374,8 @@
     }
   else
     {
-      /* Some hosts return a response even before we're done sending, so don't
-         go idle until here. */
+      /* Some(?) hosts return the 439 response even before we're done
+         sending, so don't go idle until here */
       if (cxn->state == cxnFeedingS && cxn->articleQTotal == 0)
         cxnIdle (cxn) ;
       else
@@ -2714,11 +2708,6 @@
  * take a long time. Instead the Connection just tries its next article on
  * tape or queue, and if that's no good then it registers this callback so
  * that other Connections have a chance of being serviced.
- *
- * This function is also put on the callback queue if we called doSomeWrites
- * but there was already a write pending, mostly so that we don't deadlock the
- * connection when we got a response to the body of an IHAVE command before we
- * finished sending the body.
  */
 static void cxnWorkProc (EndPoint ep UNUSED, void *data)
 {
@@ -2943,7 +2932,7 @@
   else
     {
       remArtHolder (artHolder, &cxn->checkRespHead, &cxn->articleQTotal) ;
-      if (cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+      if (cxn->articleQTotal == 0)
         cxnIdle (cxn) ;
       hostArticleDeferred (cxn->myHost, cxn, artHolder->article) ;
       delArtHolder (artHolder) ;
@@ -3004,7 +2993,7 @@
       cxn->checksRefused++ ;
 
       remArtHolder (artHolder, &cxn->checkRespHead, &cxn->articleQTotal) ;
-      if (cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+      if (cxn->articleQTotal == 0)
         cxnIdle (cxn) ;
       hostArticleNotWanted (cxn->myHost, cxn, artHolder->article);
       delArtHolder (artHolder) ;
@@ -3065,7 +3054,7 @@
       cxn->takesSizeOkayed += artSize(artHolder->article);
 
       remArtHolder (artHolder, &cxn->takeRespHead, &cxn->articleQTotal) ;
-      if (cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+      if (cxn->articleQTotal == 0)
         cxnIdle (cxn) ;
       hostArticleAccepted (cxn->myHost, cxn, artHolder->article) ;
       delArtHolder (artHolder) ;
@@ -3159,7 +3148,7 @@
             {
               cxn->checksRefused++ ;
               remArtHolder (artHolder, &cxn->checkRespHead, &cxn->articleQTotal) ;
-              if (cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+              if (cxn->articleQTotal == 0)
                 cxnIdle (cxn) ;
               hostArticleNotWanted (cxn->myHost, cxn, artHolder->article);
               delArtHolder (artHolder) ;
@@ -3175,7 +3164,8 @@
       cxn->takesSizeRejected += artSize(artHolder->article);
 
       remArtHolder (artHolder, &cxn->takeRespHead, &cxn->articleQTotal) ;
-      /* Some hosts return the 439 response even before we're done sending */
+      /* Some(?) hosts return the 439 response even before we're done
+          sending */
       if (cxn->articleQTotal == 0 && !writeIsPending(cxn->myEp))
         cxnIdle (cxn) ;
       hostArticleRejected (cxn->myHost, cxn, artHolder->article) ;
@@ -3239,7 +3229,7 @@
       cxn->takesOkayed++ ;
       cxn->takesSizeOkayed += artSize(artHolder->article);
       
-      if (cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+      if (cxn->articleQTotal == 0)
         cxnIdle (cxn) ;
 
       hostArticleAccepted (cxn->myHost, cxn, artHolder->article) ;
@@ -3919,10 +3909,7 @@
 
   /* If there's a write pending we can't do anything now. */
   if ( writeIsPending (cxn->myEp) )
-    {
-      addWorkCallback (cxn->myEp,cxnWorkProc,cxn) ;
-      return ;
-    }
+    return ;
   else if ( writesNeeded (cxn) ) /* something on a queue. */
     {
       if (cxn->doesStreaming)
@@ -4162,7 +4149,7 @@
      was a big backlog of missing articles *and* we're running in
      no-CHECK mode, then the Host would be putting bad articles on the
      queue we're taking them off of. */
-  if (cxn->missing && cxn->articleQTotal == 0 && !writeIsPending (cxn->myEp))
+  if (cxn->missing && cxn->articleQTotal == 0)
     cxnIdle (cxn) ;
   for (p = cxn->missing ; p != NULL ; p = q)
     {



More information about the inn-committers mailing list