]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
prelim keepalive support
authorwessels <>
Thu, 31 Oct 1996 04:56:34 +0000 (04:56 +0000)
committerwessels <>
Thu, 31 Oct 1996 04:56:34 +0000 (04:56 +0000)
src/client_side.cc
src/comm.cc

index ca5b3bcd1ce7556faf0f602ba4e8bb84e1a6fc72..779e2c07819b86788694faa352d323f56610aadb 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client_side.cc,v 1.54 1996/10/30 09:27:26 wessels Exp $
+ * $Id: client_side.cc,v 1.55 1996/10/30 21:56:34 wessels Exp $
  *
  * DEBUG: section 33    Client-side Routines
  * AUTHOR: Duane Wessels
@@ -218,11 +218,13 @@ clientRedirectDone(void *data, char *result)
     }
     icpParseRequestHeaders(icpState);
     fd_note(fd, icpState->url);
-    commSetSelect(fd,
-       COMM_SELECT_READ,
-       (PF) icpDetectClientClose,
-       (void *) icpState,
-       0);
+    if (!BIT_TEST(icpState->request->flags, REQ_PROXY_KEEPALIVE)) {
+       commSetSelect(fd,
+           COMM_SELECT_READ,
+           icpDetectClientClose,
+           (void *) icpState,
+           0);
+    }
     icpProcessRequest(fd, icpState);
 }
 
index d8be53e9b470a7c49300b77c2dc1a5d669994b37..7db3b77c4c5916545a9945b07f972b3c2dfa15b5 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: comm.cc,v 1.94 1996/10/29 02:38:16 wessels Exp $
+ * $Id: comm.cc,v 1.95 1996/10/30 21:56:35 wessels Exp $
  *
  * DEBUG: section 5     Socket Functions
  * AUTHOR: Harvest Derived
@@ -496,11 +496,22 @@ comm_accept(int fd, struct sockaddr_in *peer, struct sockaddr_in *me)
     return sock;
 }
 
+void
+commCallCloseHandlers(int fd)
+{
+    FD_ENTRY *conn = &fd_table[fd];
+    struct close_handler *ch;
+    while ((ch = conn->close_handler) != NULL) {
+       conn->close_handler = ch->next;
+       ch->handler(fd, ch->data);
+       safe_free(ch);
+    }
+}
+
 void
 comm_close(int fd)
 {
     FD_ENTRY *conn = NULL;
-    struct close_handler *ch = NULL;
     debug(5, 5, "comm_close: FD %d\n", fd);
     if (fd < 0 || fd >= FD_SETSIZE)
        return;
@@ -515,11 +526,7 @@ comm_close(int fd)
     RWStateCallbackAndFree(fd, COMM_ERROR);
     comm_set_fd_lifetime(fd, -1);      /* invalidate the lifetime */
     fdstat_close(fd);          /* update fdstat */
-    while ((ch = conn->close_handler) != NULL) {       /* Call close handlers */
-       conn->close_handler = ch->next;
-       ch->handler(fd, ch->data);
-       safe_free(ch);
-    }
+    commCallCloseHandlers(fd);
     memset(conn, '\0', sizeof(FD_ENTRY));
     close(fd);
 }