Only to confirm that there seems to be a problem with the interaction
between Squid and IE on some redirects. I will look into the detail of
this during the upcoming week. A preleminary quess is that it has
something to do with persistent connections.
Problematic URL:s from reports on squid-users:
http://www.iwon.com/ (verified on logon failure/registration)
http://www.amazon.de/exec/obidos/subst/home/home.html/028-1573285-5712244
http://www.hotmail.com/
http://cbs.marketwatch.com/news/newsroom.htx
I would appreciate if someone with readily access to IE could test if
disabling persistent connections works around the problem. After
applying the attached squid-2.2.STABLE5 patch, set pconn_timeout to 0 to
fully disable the use of persistent connections, and then retry the
problematic site(s). Please report the outcome to squid-bugs@ircache.net
or directly to me.
-- Henrik Nordstrom Squid hacker
Index: squid-2.2/src/HttpMsg.c
===================================================================
RCS file: /home/CVSROOT/squid/src/HttpMsg.c,v
retrieving revision 1.1.1.3
diff -u -w -r1.1.1.3 HttpMsg.c
--- squid-2.2/src/HttpMsg.c	1998/08/19 01:20:21	1.1.1.3
+++ squid-2.2/src/HttpMsg.c	1999/12/12 16:55:39
@@ -91,7 +91,12 @@
 int
 httpMsgIsPersistent(float http_ver, const HttpHeader * hdr)
 {
-    if (http_ver >= 1.1) {
+    if (Config.Timeout.pconn < 10) {
+	/*
+	 * Persistent connections are disabled by configuration
+	 */
+	return 0;
+    } else if (http_ver >= 1.1) {
         /*
          * for modern versions of HTTP: persistent unless there is
          * a "Connection: close" header.
Index: squid-2.2/src/cf.data.pre
===================================================================
RCS file: /home/CVSROOT/squid/src/cf.data.pre,v
retrieving revision 1.1.1.40.2.11
diff -u -w -r1.1.1.40.2.11 cf.data.pre
--- squid-2.2/src/cf.data.pre	1999/11/27 00:16:43	1.1.1.40.2.11
+++ squid-2.2/src/cf.data.pre	1999/12/12 17:25:16
@@ -1350,13 +1350,14 @@
 NAME: request_timeout
 TYPE: time_t
 LOC: Config.Timeout.request
-DEFAULT: 30 seconds
+DEFAULT: 5 minutes
 DOC_START
-	How long to wait for an HTTP request after connection
-	establishment.  For persistent connections, wait this long
-	after the previous request completes.
+	How long to wait for the first HTTP request after connection
+	establishment.
 
-request_timeout 30 seconds
+	For persistent connections idle timeout, see pconn_timeout.
+
+request_timeout 5 minutes
 DOC_END
 
 
@@ -1406,8 +1407,12 @@
 LOC: Config.Timeout.pconn
 DEFAULT: 120 seconds
 DOC_START
-	Timeout for idle persistent connections to servers and other
-	proxies.
+	Timeout for idle persistent connections to clients, servers
+	and other proxies.
+	
+	Persistent connections will be disabled if this is less than 10
+	seconds.
+
 pconn_timeout 120 seconds
 DOC_END
 
Index: squid-2.2/src/client_side.c
===================================================================
RCS file: /home/CVSROOT/squid/src/client_side.c,v
retrieving revision 1.1.1.45.2.12
diff -u -w -r1.1.1.45.2.12 client_side.c
--- squid-2.2/src/client_side.c	1999/11/24 21:19:14	1.1.1.45.2.12
+++ squid-2.2/src/client_side.c	1999/12/12 16:54:46
@@ -1610,7 +1610,7 @@
         /*
          * Set the timeout BEFORE calling clientReadRequest().
          */
-	commSetTimeout(conn->fd, 15, requestTimeout, conn);
+	commSetTimeout(conn->fd, Config.Timeout.pconn, requestTimeout, conn);
         clientReadRequest(conn->fd, conn);	/* Read next request */
         /*
          * Note, the FD may be closed at this point.
@@ -2194,10 +2194,9 @@
     }
     /*
      * Don't reset the timeout value here.  The timeout value will be
-     * set to Config.Timeout.request by httpAccept() and
-     * clientWriteComplete(), and should apply to the request as a
-     * whole, not individual read() calls.  Plus, it breaks our
-     * lame half-close detection
+     * set to by httpAccept() and clientWriteComplete(), and should
+     * apply to the request headers as a whole, not individual read()
+     * calls. Plus, it breaks our lame half-close detection
      */
     commSetSelect(fd, COMM_SELECT_READ, clientReadRequest, conn, 0);
     if (size == 0) {
Index: squid-2.2/src/http.c
===================================================================
RCS file: /home/CVSROOT/squid/src/http.c,v
retrieving revision 1.1.1.38.2.6
diff -u -w -r1.1.1.38.2.6 http.c
--- squid-2.2/src/http.c	1999/11/19 08:27:51	1.1.1.38.2.6
+++ squid-2.2/src/http.c	1999/12/12 17:11:57
@@ -852,7 +852,9 @@
     /*
      * Is keep-alive okay for all request methods?
      */
-    if (p == NULL)
+    if (Config.Timeout.pconn < 10)
+	httpState->flags.keepalive = 0;
+    else if (p == NULL)
         httpState->flags.keepalive = 1;
     else if (p->stats.n_keepalives_sent < 10)
         httpState->flags.keepalive = 1;
Received on Sun Dec 12 1999 - 11:01:06 MST
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:49:51 MST