The unified diff between revisions [f133e7ea..] and [b9ef2977..] 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 [882d42c7767308a3036106324457a687d15d52b0]
# to [f2f0d2e1e191ffeec9c101a29a66353d9b9cdc0d]
#
# patch "src/pconn.c"
# from [5f83c46e535d572c2a6d6f55389e635926c3feee]
# to [8c9ab2458a98fedd3b53d1e42fdef52ea0235e66]
#
# patch "src/protos.h"
# from [822ab2931a4c6df49be0b07f482586d3a7bf04cb]
# to [aa65dda706bf16d368332b30fcdf514d4a6ed0b3]
#
============================================================
--- 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 882d42c7767308a3036106324457a687d15d52b0
+++ src/client_side.c f2f0d2e1e191ffeec9c101a29a66353d9b9cdc0d
@@ -1043,14 +1043,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);
@@ -1459,7 +1463,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 822ab2931a4c6df49be0b07f482586d3a7bf04cb
+++ src/protos.h aa65dda706bf16d368332b30fcdf514d4a6ed0b3
@@ -1151,6 +1151,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);