diff -ruN squid-2.6.STABLE10/ChangeLog squid-2.6.STABLE11/ChangeLog
--- squid-2.6.STABLE10/ChangeLog Sat Mar 3 11:43:44 2007
+++ squid-2.6.STABLE11/ChangeLog Fri Mar 16 17:48:38 2007
@@ -1,3 +1,15 @@
+Changes to squid-2.6.STABLE11 (Mar 17 2007)
+
+ - Bug #1915: assertion failed: client_side.c:4055: "buf != NULL ||
+ !conn->body.request"
+ - Handle garbage helper responses better in concurrent protocol format
+ - Fix kqueue when overflowing the changes queue
+ - Make sure the child worker process commits suicide if it could
+ not start up
+ - Don't log short responses at debug level 1
+ - Fix bswap16 & bwsap32 error on NetBSD
+ - Fix collapsed_forwarding for non-GET requests
+
Changes to squid-2.6.STABLE10 (Mar 4 2007)
- Upgrade HTTP/0.9 responses to our HTTP version (HTTP/1.0)
@@ -20,6 +32,7 @@
the path
- Bug #1875, #1420. Cleanup of refresh logics when dealing with
non-refreshable content
+ - Gopher cleanups and bugfixes
- Negotiate authentication fixed again. Broken since STABLE7 by the
patch for Bug #1792.
- Bug #1892: COSS tries to shut down the same directory twice on exit
diff -ruN squid-2.6.STABLE10/RELEASENOTES.html squid-2.6.STABLE11/RELEASENOTES.html
--- squid-2.6.STABLE10/RELEASENOTES.html Sat Mar 3 14:56:36 2007
+++ squid-2.6.STABLE11/RELEASENOTES.html Fri Mar 16 17:52:07 2007
@@ -2,12 +2,12 @@
- Squid 2.6.STABLE10 release notes
+ Squid 2.6.STABLE11 release notes
-Squid 2.6.STABLE10 release notes
+Squid 2.6.STABLE11 release notes
-Squid Developers
$Id: release-2.6.html,v 1.44.2.4 2007/03/03 21:37:29 hno Exp $
+Squid Developers
$Id: release-2.6.html,v 1.44.2.5 2007/03/12 22:52:40 hno Exp $
This document contains the release notes for version 2.6 of Squid.
Squid is a WWW Cache application developed by the Web Caching community.
@@ -57,6 +57,9 @@
+
+
+
@@ -67,10 +70,10 @@
and transparent proxy requests to make it easier to configure transparent and
acceleration functionality. The default behaviour is to function as a standard
HTTP proxy on each port that Squid is configured to listen on, but in addition
-in this release the keywords "accelerated" and "transparent" can be specified
+in this release the keywords "accel" and "transparent" can be specified
after each port to indicate to Squid the functionality that is to be enabled on
that port. This means that the old config directives relating to httpd_accel_*
-are now deprecated.
+are now deprecated. See below for more details about these options.
WCCPv2 support multiple cache engines registering with multiple WCCP
routers and switches. WCCPv2 is preferred over WCCPv1 for performance and
flexibility reasons if your router or switch is able to support it (all recent
@@ -137,7 +140,7 @@
- http_port
Now takes a list of options in addition to the port address, specifying the purpose of this http_port. Default is plain Internet proxy as usual.
- httpd_accel_* for transparent proxy
Now implemented by the "transparent" http_port option
-- httpd_accel_* for accelerator mode
Nov implemented by other options. See individual directives below.
+- httpd_accel_* for accelerator mode
Now implemented by other options and the http_port accel option. See individual directives below.
- httpd_accel_host
Replaced by defaultsite http_port option and cache_peer originserver option.
- httpd_accel_port
No longer needed. Server port defined by the cache_peer port.
- httpd_accel_uses_host_header
Replaced by vhost http_port option
@@ -623,6 +626,23 @@
ChangeLog file for details.
+
+
+
+
+
+- Bug #1915: assertion failed: client_side.c:4055: "buf != NULL ||
+!conn->body.request"
+- Handle garbage helper responses better in concurrent protocol format
+- Fix kqueue when overflowing the changes queue
+- Make sure the child worker process commits suicide if it could not start up
+- Don't log short responses at debug level 1
+- See also the list of
+squid-2.6.STABLE11 changes and the
+ChangeLog file for details.
+
+
+
diff -ruN squid-2.6.STABLE10/configure squid-2.6.STABLE11/configure
--- squid-2.6.STABLE10/configure Sat Mar 3 14:56:03 2007
+++ squid-2.6.STABLE11/configure Fri Mar 16 17:51:34 2007
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.in Revision: 1.416.2.5 .
+# From configure.in Revision: 1.416.2.7 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.STABLE10.
+# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.STABLE11.
#
# Report bugs to .
#
@@ -270,8 +270,8 @@
# Identity of this package.
PACKAGE_NAME='Squid Web Proxy'
PACKAGE_TARNAME='squid'
-PACKAGE_VERSION='2.6.STABLE10'
-PACKAGE_STRING='Squid Web Proxy 2.6.STABLE10'
+PACKAGE_VERSION='2.6.STABLE11'
+PACKAGE_STRING='Squid Web Proxy 2.6.STABLE11'
PACKAGE_BUGREPORT='http://www.squid-cache.org/bugs/'
ac_default_prefix=/usr/local/squid
@@ -781,7 +781,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures Squid Web Proxy 2.6.STABLE10 to adapt to many kinds of systems.
+\`configure' configures Squid Web Proxy 2.6.STABLE11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -847,7 +847,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of Squid Web Proxy 2.6.STABLE10:";;
+ short | recursive ) echo "Configuration of Squid Web Proxy 2.6.STABLE11:";;
esac
cat <<\_ACEOF
@@ -1158,7 +1158,7 @@
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-Squid Web Proxy configure 2.6.STABLE10
+Squid Web Proxy configure 2.6.STABLE11
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1172,7 +1172,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by Squid Web Proxy $as_me 2.6.STABLE10, which was
+It was created by Squid Web Proxy $as_me 2.6.STABLE11, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1818,7 +1818,7 @@
# Define the identity of the package.
PACKAGE='squid'
- VERSION='2.6.STABLE10'
+ VERSION='2.6.STABLE11'
cat >>confdefs.h <<_ACEOF
@@ -15923,8 +15923,6 @@
-
-
for ac_func in \
bcopy \
backtrace_symbols_fd \
@@ -15979,8 +15977,6 @@
syslog \
timegm \
vsnprintf \
- bswap_16 \
- bswap_32 \
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -18616,7 +18612,7 @@
} >&5
cat >&5 <<_CSEOF
-This file was extended by Squid Web Proxy $as_me 2.6.STABLE10, which was
+This file was extended by Squid Web Proxy $as_me 2.6.STABLE11, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -18679,7 +18675,7 @@
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-Squid Web Proxy config.status 2.6.STABLE10
+Squid Web Proxy config.status 2.6.STABLE11
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
diff -ruN squid-2.6.STABLE10/configure.in squid-2.6.STABLE11/configure.in
--- squid-2.6.STABLE10/configure.in Sat Mar 3 14:56:03 2007
+++ squid-2.6.STABLE11/configure.in Fri Mar 16 17:51:34 2007
@@ -1,16 +1,16 @@
dnl
dnl Configuration input file for Squid
dnl
-dnl $Id: configure.in,v 1.416.2.5 2007/03/03 21:53:31 hno Exp $
+dnl $Id: configure.in,v 1.416.2.7 2007/03/16 23:48:38 hno Exp $
dnl
dnl
dnl
-AC_INIT(Squid Web Proxy, 2.6.STABLE10, http://www.squid-cache.org/bugs/, squid)
+AC_INIT(Squid Web Proxy, 2.6.STABLE11, http://www.squid-cache.org/bugs/, squid)
AC_PREREQ(2.52)
AM_CONFIG_HEADER(include/autoconf.h)
AC_CONFIG_AUX_DIR(cfgaux)
AM_INIT_AUTOMAKE
-AC_REVISION($Revision: 1.416.2.5 $)dnl
+AC_REVISION($Revision: 1.416.2.7 $)dnl
AC_PREFIX_DEFAULT(/usr/local/squid)
AM_MAINTAINER_MODE
@@ -2354,8 +2354,6 @@
syslog \
timegm \
vsnprintf \
- bswap_16 \
- bswap_32 \
)
SAVED_LIBS="$LIBS"
diff -ruN squid-2.6.STABLE10/include/autoconf.h.in squid-2.6.STABLE11/include/autoconf.h.in
--- squid-2.6.STABLE10/include/autoconf.h.in Mon Feb 5 14:36:44 2007
+++ squid-2.6.STABLE11/include/autoconf.h.in Mon Mar 12 20:36:39 2007
@@ -76,12 +76,6 @@
/* Define to 1 if you have the header file. */
#undef HAVE_BSTRING_H
-/* Define to 1 if you have the `bswap_16' function. */
-#undef HAVE_BSWAP_16
-
-/* Define to 1 if you have the `bswap_32' function. */
-#undef HAVE_BSWAP_32
-
/* Define to 1 if you have the header file. */
#undef HAVE_BYTESWAP_H
diff -ruN squid-2.6.STABLE10/include/ntlmauth.h squid-2.6.STABLE11/include/ntlmauth.h
--- squid-2.6.STABLE10/include/ntlmauth.h Tue May 17 10:56:35 2005
+++ squid-2.6.STABLE11/include/ntlmauth.h Mon Mar 12 20:12:39 2007
@@ -1,5 +1,5 @@
/*
- * $Id: ntlmauth.h,v 1.10 2005/05/17 16:56:35 hno Exp $
+ * $Id: ntlmauth.h,v 1.10.2.1 2007/03/13 02:12:39 hno Exp $
*
* * * * * * * * Legal stuff * * * * * * *
*
@@ -70,10 +70,14 @@
#define bswap16(x) bswap_16(x)
#define bswap32(x) bswap_32(x)
#else /* HAVE_BISTWAP_H */
+#ifndef bswap16
#define bswap16(x) (((((u_int16_t)x) >> 8) & 0xff) | ((((u_int16_t)x) & 0xff) << 8))
+#endif
+#ifndef bswap32
#define bswap32(x) \
(((((u_int32_t)x) & 0xff000000) >> 24) | ((((u_int32_t)x) & 0x00ff0000) >> 8) | \
((((u_int32_t)x) & 0x0000ff00) << 8) | ((((u_int32_t)x) & 0x000000ff) << 24))
+#endif
#endif /* HAVE_BITSWAP_H */
/* Used internally. Microsoft seems to think this is right, I believe them.
diff -ruN squid-2.6.STABLE10/include/version.h squid-2.6.STABLE11/include/version.h
--- squid-2.6.STABLE10/include/version.h Sat Mar 3 14:56:03 2007
+++ squid-2.6.STABLE11/include/version.h Fri Mar 16 17:51:34 2007
@@ -9,5 +9,5 @@
*/
#ifndef SQUID_RELEASE_TIME
-#define SQUID_RELEASE_TIME 1172958959
+#define SQUID_RELEASE_TIME 1174089090
#endif
diff -ruN squid-2.6.STABLE10/src/client_side.c squid-2.6.STABLE11/src/client_side.c
--- squid-2.6.STABLE10/src/client_side.c Mon Feb 26 19:08:10 2007
+++ squid-2.6.STABLE11/src/client_side.c Wed Mar 14 08:11:26 2007
@@ -1,6 +1,6 @@
/*
- * $Id: client_side.c,v 1.693.2.9 2007/02/27 02:08:10 hno Exp $
+ * $Id: client_side.c,v 1.693.2.11 2007/03/14 14:11:26 hno Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
@@ -3104,7 +3104,10 @@
} else if ((done = clientCheckTransferDone(http)) != 0 || size == 0) {
debug(33, 5) ("clientWriteComplete: FD %d transfer is DONE\n", fd);
/* We're finished case */
- if (!done) {
+ if (httpReplyBodySize(http->request->method, entry->mem_obj->reply) < 0) {
+ debug(33, 5) ("clientWriteComplete: closing, content_length < 0\n");
+ comm_close(fd);
+ } else if (!done) {
debug(33, 5) ("clientWriteComplete: closing, !done\n");
comm_close(fd);
} else if (clientGotNotEnough(http)) {
@@ -3441,7 +3444,7 @@
return;
}
http->entry = clientCreateStoreEntry(http, r->method, r->flags);
- if (Config.onoff.collapsed_forwarding && r->flags.cachable && !r->flags.need_validation && (r->method = METHOD_GET || r->method == METHOD_HEAD)) {
+ if (Config.onoff.collapsed_forwarding && r->flags.cachable && !r->flags.need_validation && (r->method == METHOD_GET || r->method == METHOD_HEAD)) {
http->entry->mem_obj->refresh_timestamp = squid_curtime;
/* Set the vary object state */
safe_free(http->entry->mem_obj->vary_headers);
diff -ruN squid-2.6.STABLE10/src/comm_kqueue.c squid-2.6.STABLE11/src/comm_kqueue.c
--- squid-2.6.STABLE10/src/comm_kqueue.c Mon Oct 23 05:22:21 2006
+++ squid-2.6.STABLE11/src/comm_kqueue.c Mon Mar 12 16:23:04 2007
@@ -1,6 +1,6 @@
/*
- * $Id: comm_kqueue.c,v 1.10 2006/10/23 11:22:21 hno Exp $
+ * $Id: comm_kqueue.c,v 1.10.2.1 2007/03/12 22:23:04 hno Exp $
*
* DEBUG: section 5 Socket Functions
*
@@ -39,16 +39,17 @@
#include
#endif
-#define KE_LENGTH 128
+#define KE_QUEUE_STEP 128
#define STATE_READ 1
#define STATE_WRITE 2
static int kq;
static struct timespec zero_timespec;
-static struct kevent *kqlst; /* kevent buffer */
+static struct kevent *kqlst; /* change buffer */
+static struct kevent *ke; /* event buffer */
static int kqmax; /* max structs to buffer */
static int kqoff; /* offset into the buffer */
-static unsigned *kqueue_state; /* keep track of the kqueue state */
+static unsigned char *kqueue_state; /* keep track of the kqueue state */
static void
do_select_init()
@@ -58,8 +59,9 @@
fatalf("comm_select_init: kqueue(): %s\n", xstrerror());
fd_open(kq, FD_UNKNOWN, "kqueue ctl");
commSetCloseOnExec(kq);
- kqmax = getdtablesize();
+ kqmax = KE_QUEUE_STEP;
kqlst = xmalloc(sizeof(*kqlst) * kqmax);
+ ke = xmalloc(sizeof(*ke) * kqmax);
kqueue_state = xcalloc(Squid_MaxFD, sizeof(*kqueue_state));
zero_timespec.tv_sec = 0;
zero_timespec.tv_nsec = 0;
@@ -90,37 +92,38 @@
commSetEvents(int fd, int need_read, int need_write)
{
struct kevent *kep;
- int st_read = (kqueue_state[fd] & STATE_READ) != 0;
- int st_write = (kqueue_state[fd] & STATE_WRITE) != 0;
+ int st_new = (need_read ? STATE_READ : 0) |
+ (need_write ? STATE_WRITE : 0);
+ int st_change;
assert(fd >= 0);
- debug(5, 8) ("commSetEvents(fd=%d)\n", fd);
+ debug(5, 8) ("commSetEvents(fd=%d, read=%d, write=%d)\n", fd, need_read, need_write);
+ st_change = kqueue_state[fd] ^ st_new;
+ if (!st_change)
+ return;
+
+ if (kqoff >= kqmax - 2) {
+ kqmax = kqmax + KE_QUEUE_STEP;
+ assert(kqmax < Squid_MaxFD * 4);
+ kqlst = xrealloc(kqlst, sizeof(*kqlst) * kqmax);
+ ke = xrealloc(ke, sizeof(*ke) * kqmax);
+ }
kep = kqlst + kqoff;
- if (need_read != st_read) {
+ if (st_change & STATE_READ) {
EV_SET(kep, (uintptr_t) fd, EVFILT_READ,
need_read ? EV_ADD : EV_DELETE, 0, 0, 0);
kqoff++;
kep++;
}
- if (need_write != st_write) {
+ if (st_change & STATE_WRITE) {
EV_SET(kep, (uintptr_t) fd, EVFILT_WRITE,
need_write ? EV_ADD : EV_DELETE, 0, 0, 0);
kqoff++;
kep++;
}
- kqueue_state[fd] = (need_read ? STATE_READ : 0) |
- (need_write ? STATE_WRITE : 0);
-
- if (kqoff >= kqmax - 2) {
- if (kevent(kq, kqlst, kqoff, NULL, 0, &zero_timespec) == -1) {
- debug(5, 1) ("commSetEvents(): kevent() failed on fd=%d: %s\n",
- fd, xstrerror());
- return;
- }
- kqoff = 0;
- }
+ kqueue_state[fd] = st_new;
}
static int
@@ -128,14 +131,13 @@
{
int i;
int num;
- static struct kevent ke[KE_LENGTH];
struct timespec timeout;
timeout.tv_sec = msec / 1000;
timeout.tv_nsec = (msec % 1000) * 1000000;
statCounter.syscalls.polls++;
- num = kevent(kq, kqlst, kqoff, ke, KE_LENGTH, &timeout);
+ num = kevent(kq, kqlst, kqoff, ke, kqmax, &timeout);
kqoff = 0;
if (num < 0) {
getCurrentTime();
@@ -171,5 +173,10 @@
}
}
+ if (num >= kqmax) {
+ kqmax = kqmax + KE_QUEUE_STEP;
+ kqlst = xrealloc(kqlst, sizeof(*kqlst) * kqmax);
+ ke = xrealloc(ke, sizeof(*ke) * kqmax);
+ }
return COMM_OK;
}
diff -ruN squid-2.6.STABLE10/src/helper.c squid-2.6.STABLE11/src/helper.c
--- squid-2.6.STABLE10/src/helper.c Fri Sep 8 13:41:24 2006
+++ squid-2.6.STABLE11/src/helper.c Wed Mar 14 06:08:42 2007
@@ -1,6 +1,6 @@
/*
- * $Id: helper.c,v 1.62 2006/09/08 19:41:24 serassio Exp $
+ * $Id: helper.c,v 1.62.2.2 2007/03/14 12:08:42 hno Exp $
*
* DEBUG: section 84 Helper process maintenance
* AUTHOR: Harvest Derived?
@@ -752,11 +752,17 @@
t[-1] = '\0';
*t++ = '\0';
if (hlp->concurrency) {
+ errno = 0;
i = strtol(msg, &msg, 10);
+ if (msg == srv->rbuf || errno)
+ i = -1;
while (*msg && isspace((int) *msg))
msg++;
}
- r = srv->requests[i];
+ if ((!hlp->concurrency) || (i >= 0 && i < hlp->concurrency))
+ r = srv->requests[i];
+ else
+ r = NULL;
if (r) {
srv->requests[i] = NULL;
if (cbdataValid(r->data))
diff -ruN squid-2.6.STABLE10/src/http.c squid-2.6.STABLE11/src/http.c
--- squid-2.6.STABLE10/src/http.c Mon Feb 26 15:41:46 2007
+++ squid-2.6.STABLE11/src/http.c Mon Mar 12 16:27:09 2007
@@ -1,6 +1,6 @@
/*
- * $Id: http.c,v 1.419.2.5 2007/02/26 22:41:46 hno Exp $
+ * $Id: http.c,v 1.419.2.6 2007/03/12 22:27:09 hno Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
@@ -721,7 +721,7 @@
}
/* Is it a incomplete reply? */
if (httpState->chunk_size > 0) {
- debug(11, 1) ("Short response on port %d. Expecting %" PRINTF_OFF_T " octets more\n", comm_local_port(fd), httpState->chunk_size);
+ debug(11, 2) ("Short response from '%s' on port %d. Expecting %" PRINTF_OFF_T " octets more\n", storeUrl(entry), comm_local_port(fd), httpState->chunk_size);
comm_close(fd);
return;
}
diff -ruN squid-2.6.STABLE10/src/main.c squid-2.6.STABLE11/src/main.c
--- squid-2.6.STABLE10/src/main.c Sat Feb 3 14:55:42 2007
+++ squid-2.6.STABLE11/src/main.c Mon Mar 12 16:25:40 2007
@@ -1,6 +1,6 @@
/*
- * $Id: main.c,v 1.393.2.1 2007/02/03 21:55:42 hno Exp $
+ * $Id: main.c,v 1.393.2.2 2007/03/12 22:25:40 hno Exp $
*
* DEBUG: section 1 Startup and Main Loop
* AUTHOR: Harvest Derived
@@ -1013,6 +1013,7 @@
argv[0] = xstrdup("(squid)");
execvp(prog, argv);
syslog(LOG_ALERT, "execvp failed: %s", xstrerror());
+ exit(1);
}
/* parent */
openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);