]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Merging async-call branch changes to HEAD:
authorrousskov <>
Wed, 13 Feb 2008 06:02:13 +0000 (06:02 +0000)
committerrousskov <>
Wed, 13 Feb 2008 06:02:13 +0000 (06:02 +0000)
        Removed calls to comm_iocallbackpending(). They were added to
        "Speed up processing of queued events significantly, to not
        cause large delays when under low load" but I do not see how
        having pending callbacks can be relevant because all pending
        callbacks are (should be) executed before FDs are probed.

        Converting commSetTimeout to use CommCalls.

src/comm_poll.cc
src/comm_select.cc
src/comm_select_win32.cc

index 3c9886e99bd1e732bdc7f1ea60065823f23aaad0..da2fc42c2a5b768b89d1e4cf1487a08462d04fe7 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: comm_poll.cc,v 1.25 2008/01/07 16:22:06 hno Exp $
+ * $Id: comm_poll.cc,v 1.26 2008/02/12 23:02:13 rousskov Exp $
  *
  * DEBUG: section 5     Socket Functions
  *
@@ -388,9 +388,6 @@ comm_select(int msec)
 
         PROF_stop(comm_poll_prep_pfds);
 
-        if (comm_iocallbackpending())
-            npending++;
-
         if (npending)
             msec = 0;
 
@@ -521,25 +518,25 @@ comm_select(int msec)
             }
 
             if (revents & POLLNVAL) {
-                close_handler *ch;
+                AsyncCall::Pointer ch;
                 debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid.");
                 debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type]);
                 debugs(5, 0, "--> " << F->desc);
-                debugs(5, 0, "tmout:" << F->timeout_handler << " read:" <<
+               debugs(5, 0, "tmout:" << F->timeoutHandler << "read:" <<
                        F->read_handler << " write:" << F->write_handler);
 
-                for (ch = F->closeHandler; ch; ch = ch->next)
-                    debugs(5, 0, " close handler: " << ch->handler);
+                for (ch = F->closeHandler; ch != NULL; ch = ch->Next())
+                    debugs(5, 0, " close handler: " << ch);
 
-                if (F->closeHandler) {
+                if (F->closeHandler != NULL) {
                     commCallCloseHandlers(fd);
-                } else if (F->timeout_handler) {
+                } else if (F->timeoutHandler != NULL) {
                     debugs(5, 0, "comm_poll: Calling Timeout Handler");
-                    F->timeout_handler(fd, F->timeout_data);
+                   ScheduleCallHere(F->timeoutHandler);
                 }
 
                 F->closeHandler = NULL;
-                F->timeout_handler = NULL;
+                F->timeoutHandler = NULL;
                 F->read_handler = NULL;
                 F->write_handler = NULL;
 
index 493a1528f8aabf24e557e11261cb0fcb4cc453d5..32934ff689ee1dc0a1d4a6a856071d15bbda8960 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: comm_select.cc,v 1.83 2008/01/07 16:22:06 hno Exp $
+ * $Id: comm_select.cc,v 1.84 2008/02/12 23:02:13 rousskov Exp $
  *
  * DEBUG: section 5     Socket Functions
  *
@@ -437,9 +437,6 @@ comm_select(int msec)
         if (msec > MAX_POLL_TIME)
             msec = MAX_POLL_TIME;
 
-        if (comm_iocallbackpending())
-            pending++;
-
         if (pending)
             msec = 0;
 
@@ -703,7 +700,7 @@ examine_select(fd_set * readfds, fd_set * writefds)
     fd_set write_x;
 
     struct timeval tv;
-    close_handler *ch = NULL;
+    AsyncCall::Pointer ch = NULL;
     fde *F = NULL;
 
     struct stat sb;
@@ -738,20 +735,20 @@ examine_select(fd_set * readfds, fd_set * writefds)
         debugs(5, 0, "FD " << fd << ": " << xstrerror());
         debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid.");
         debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type] << " called '" << F->desc << "'");
-        debugs(5, 0, "tmout:" << F->timeout_handler << " read:" << F->read_handler << " write:" << F->write_handler);
+        debugs(5, 0, "tmout:" << F->timeoutHandler << " read:" << F->read_handler << " write:" << F->write_handler);
 
-        for (ch = F->closeHandler; ch; ch = ch->next)
-            debugs(5, 0, " close handler: " << ch->handler);
+        for (ch = F->closeHandler; ch != NULL; ch = ch->Next())
+            debugs(5, 0, " close handler: " << ch);
 
-        if (F->closeHandler) {
+        if (F->closeHandler != NULL) {
             commCallCloseHandlers(fd);
-        } else if (F->timeout_handler) {
+        } else if (F->timeoutHandler != NULL) {
             debugs(5, 0, "examine_select: Calling Timeout Handler");
-            F->timeout_handler(fd, F->timeout_data);
+           ScheduleCallHere(F->timeoutHandler);
         }
 
         F->closeHandler = NULL;
-        F->timeout_handler = NULL;
+        F->timeoutHandler = NULL;
         F->read_handler = NULL;
         F->write_handler = NULL;
         FD_CLR(fd, readfds);
index 4a112ab25bfa90a562eda9fb71c203d69898bfeb..922c47daa16f59b8e031c62ea3a4b83580f87b12 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: comm_select_win32.cc,v 1.5 2008/01/07 16:22:06 hno Exp $
+ * $Id: comm_select_win32.cc,v 1.6 2008/02/12 23:02:13 rousskov Exp $
  *
  * DEBUG: section 5     Socket Functions
  *
@@ -472,9 +472,6 @@ comm_select(int msec)
         if (msec > MAX_POLL_TIME)
             msec = MAX_POLL_TIME;
 
-        if (comm_iocallbackpending())
-            pending++;
-
         if (pending)
             msec = 0;
 
@@ -791,7 +788,7 @@ examine_select(fd_set * readfds, fd_set * writefds)
     fd_set write_x;
 
     struct timeval tv;
-    close_handler *ch = NULL;
+    AsyncCall::Pointer ch = NULL;
     fde *F = NULL;
 
     struct stat sb;
@@ -822,20 +819,20 @@ examine_select(fd_set * readfds, fd_set * writefds)
         debugs(5, 0, "FD " << fd << ": " << xstrerror());
         debugs(5, 0, "WARNING: FD " << fd << " has handlers, but it's invalid.");
         debugs(5, 0, "FD " << fd << " is a " << fdTypeStr[F->type] << " called '" << F->desc << "'");
-        debugs(5, 0, "tmout:" << F->timeout_handler << " read:" << F->read_handler << " write:" << F->write_handler);
+        debugs(5, 0, "tmout:" << F->timeoutHandler << " read:" << F->read_handler << " write:" << F->write_handler);
 
-        for (ch = F->closeHandler; ch; ch = ch->next)
-            debugs(5, 0, " close handler: " << ch->handler);
+        for (ch = F->closeHandler; ch!= NULL; ch = ch->Next())
+            debugs(5, 0, " close handler: " << ch);
 
-        if (F->closeHandler) {
+        if (F->closeHandler != NULL) {
             commCallCloseHandlers(fd);
-        } else if (F->timeout_handler) {
+        } else if (F->timeoutHandler != NULL) {
             debugs(5, 0, "examine_select: Calling Timeout Handler");
-            F->timeout_handler(fd, F->timeout_data);
+            ScheduleCallHere(F->timeoutHandler);
         }
 
         F->closeHandler = NULL;
-        F->timeout_handler = NULL;
+        F->timeoutHandler = NULL;
         F->read_handler = NULL;
         F->write_handler = NULL;
         FD_CLR(fd, readfds);