IE and redirects

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Sun, 12 Dec 1999 18:36:23 +0100

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