The unified diff between revisions [24a6de80..] and [718cfb3b..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "configure"
#  from [90ce6b51a826374b92dae5ce5d4705b701257b80]
#    to [d11a62d61ba798a867f99bc7254e96dafa31e860]
#
# patch "configure.in"
#  from [905c235650c23ccd4f42fb2ef884037330f06161]
#    to [cdb446006a4d51b315d0115d3e3ec35b1e7b2627]
#
# patch "src/client_side.c"
#  from [4b258b7a5b5bedb849df5fd524f799b736235972]
#    to [671e6d455044433ea7cf317f99e7faeb3dadb80f]
#
# patch "src/pconn.c"
#  from [5f83c46e535d572c2a6d6f55389e635926c3feee]
#    to [8c9ab2458a98fedd3b53d1e42fdef52ea0235e66]
#
# patch "src/protos.h"
#  from [34f7ae0742503a4d1ac822ee6940db755e7aec81]
#    to [345c19f5811b2febe234b902164a09614d9c55a4]
#
============================================================
--- configure	90ce6b51a826374b92dae5ce5d4705b701257b80
+++ configure	d11a62d61ba798a867f99bc7254e96dafa31e860
@@ -1026,7 +1026,7 @@ PACKAGE=squid

 # Define the identity of the package.
 PACKAGE=squid
-VERSION=2.5.STABLE13-CVS-CACHEBOY
+VERSION=2.5.STABLE13-CACHEBOY_1.0.PRE1
 cat >> confdefs.h <<EOF
 #define PACKAGE "$PACKAGE"
 EOF
============================================================
--- configure.in	905c235650c23ccd4f42fb2ef884037330f06161
+++ configure.in	cdb446006a4d51b315d0115d3e3ec35b1e7b2627
@@ -9,7 +9,7 @@ AC_CONFIG_AUX_DIR(cfgaux)
 dnl
 AC_INIT(src/main.c)
 AC_CONFIG_AUX_DIR(cfgaux)
-AM_INIT_AUTOMAKE(squid, 2.5.STABLE13-CVS-CACHEBOY)
+AM_INIT_AUTOMAKE(squid, 2.5.STABLE13-CACHEBOY_1.0.PRE1)
 AM_CONFIG_HEADER(include/autoconf.h)
 AC_REVISION($Revision: 1.251.2.107 $)dnl
 AC_PREFIX_DEFAULT(/usr/local/squid)
============================================================
--- src/client_side.c	4b258b7a5b5bedb849df5fd524f799b736235972
+++ src/client_side.c	671e6d455044433ea7cf317f99e7faeb3dadb80f
@@ -1033,14 +1033,18 @@ clientInterpretRequestHeaders(clientHttp
 	if (request->range)
 	    request->flags.range = 1;
     }
+    /* If any conneciton has been pinned to this client, force keep alive */
     if(http->conn->pinned) {
-	request->flags.auth = 1;
-	request->flags.pinned = 1;
 	request->flags.must_keepalive = 1;
+	/* If this specific host/port has been pinned to this client, flag */
+	if(pconnLookup(request->host,request->port,&request->client_addr,request->client_port)) {
+	    request->flags.auth = 1;
+	    request->flags.pinned = 1;
+	}
     }
-    if (httpHeaderHas(req_hdr, HDR_AUTHORIZATION))
+    else if (httpHeaderHas(req_hdr, HDR_AUTHORIZATION))
 	request->flags.auth = 1;
-    if (request->login[0] != '\0')
+    else if (request->login[0] != '\0')
 	request->flags.auth = 1;
     if (httpHeaderHas(req_hdr, HDR_VIA)) {
 	String s = httpHeaderGetList(req_hdr, HDR_VIA);
@@ -1449,7 +1453,11 @@ clientBuildReplyHeader(clientHttpRequest
 		    ||
 		    (strncasecmp(value, "Negotiate", 9) == 0 &&
 			(value[9] == '\0' || value[9] == ' '))) {
-		    httpHeaderPutStr(hdr, HDR_PROXY_SUPPORT, "Session-Based-Authentication");
+
+		    if(!request->flags.accelerated) {
+			    httpHeaderPutStr(hdr, HDR_PROXY_SUPPORT, "Session-Based-Authentication");
+			    httpHeaderPutStr(hdr, HDR_CONNECTION, "Proxy-support");
+		    }
 		    request->flags.pinned=1;
 		    request->flags.must_keepalive = 1;
 		    http->conn->pinned=1;
============================================================
--- src/pconn.c	5f83c46e535d572c2a6d6f55389e635926c3feee
+++ src/pconn.c	8c9ab2458a98fedd3b53d1e42fdef52ea0235e66
@@ -232,10 +232,7 @@ pconnPop(const char *peer, u_short port,
     struct _pconn *p;
     hash_link *hptr;
     int fd = -1;
-    LOCAL_ARRAY(char, key, PCONN_KEYLEN);
-    assert(table != NULL);
-    pconnKey(key, peer, port, client_address, client_port);
-    hptr = hash_lookup(table, key);
+    hptr = pconnLookup( peer, port, client_address, client_port);
     if (hptr != NULL) {
 	p = (struct _pconn *) hptr;
 	assert(p->nfds > 0);
@@ -247,6 +244,15 @@ pconnPop(const char *peer, u_short port,
     return fd;
 }

+hash_link *
+pconnLookup(const char *peer, u_short port, struct in_addr *client_address, u_short client_port)
+{
+    LOCAL_ARRAY(char, key, PCONN_KEYLEN);
+    assert(table != NULL);
+    pconnKey(key, peer, port, client_address, client_port);
+    return hash_lookup(table, key);
+}
+
 void
 pconnHistCount(int what, int i)
 {
============================================================
--- src/protos.h	34f7ae0742503a4d1ac822ee6940db755e7aec81
+++ src/protos.h	345c19f5811b2febe234b902164a09614d9c55a4
@@ -1148,6 +1148,7 @@ extern int pconnPop(const char *peer, u_

 extern void pconnPush(int, const char *peer, u_short port, struct in_addr *client_address, u_short client_port);
 extern int pconnPop(const char *peer, u_short port, struct in_addr *client_address, u_short client_port);
+extern hash_link *pconnLookup(const char *peer, u_short port, struct in_addr *client_address, u_short client_port);
 extern void pconnInit(void);

 extern int asnMatchIp(void *, struct in_addr);