diff -ruN squid-2.6.STABLE4/ChangeLog squid-2.6.STABLE5/ChangeLog --- squid-2.6.STABLE4/ChangeLog Fri Sep 22 05:10:14 2006 +++ squid-2.6.STABLE5/ChangeLog Fri Nov 3 06:16:21 2006 @@ -1,4 +1,34 @@ -Changes to squid-2.6.STABLE4 (Sep 22 2006) +Changes to squid-2.6.STABLE5 (Now 3 2006) + + - Bug #1776: 2.6.STABLE4 aufs fails to compile if coss isn't enabled + - COSS improvements and cleanups + - SNMP linking issue resolved, enabling SNMP support to be build in all platforms + - Bug #1784: access_log syslog results in blanks syslog lines between every entry + - Bug #1719: Incorrect error message on invalid cache_peer specifications + - Bug #1785: Memory leak in handling of negatively cached objects + - Bug #1780: Incorrect Vary processing in combination with collapsed_forwarding + - Bug #1782: Memory leak in ncsa_auth on password changes + - Suppress some annoying coss startup messages raising the debug level to 2. + - Clarify the external_acl_helper concurrency= change. + - aioDone() could be called twice from aufs and from coss (when using AIOPS) during shutdown. + - Bug #1794: Accept 00:00-24:00 as a valid time specification even if redundand and the same as 00:00-23:59 + - Bug #1795: Theoretical memory leak in storeSetPublicKey + - Removing port 563 from the default SSL_ports and Safe_ports ACLs + - Bug #1724: Automatically enable Linux Netfilter support with --enable-linux-tproxy. + - Bug #1800: squid -k reconfigure crash when using req/rep_header acls + - Clarify the select/poll/kqueue/epoll configure --enable/disable options + - Bug #1779: Delay pools fairness when multiple connections compete for bandwidth + - Bug #1802: Crash on exit in certain conditions where cache.log is not writeable + - Bug #1796: Assertion error HttpHeader.c:914: "str" + - Bug #1790: Crash on wccp2 + mask assignement + standard wccp service + - Silence harmless gcc compile warning. + - Clean up poll memory on shutdown + - Ported select, poll and win32 to new comm event framework + - Windows port: Correctly identify Windows Vista and Windows Server Longhorn + - Added a basic comm_select_simple comm loop only requiring minimal POSIX compliance. + - Safeguard from kb_t counter overflows on 32-bit platforms + +Changes to squid-2.6.STABLE4 (Sep 23 2006) - Bug #1736: Missing Italian translation of ERR_TOO_BIG error page - Windows port enhancement: added native exception handler with signal emulation diff -ruN squid-2.6.STABLE4/Makefile.in squid-2.6.STABLE5/Makefile.in --- squid-2.6.STABLE4/Makefile.in Fri Sep 22 03:09:34 2006 +++ squid-2.6.STABLE5/Makefile.in Sun Oct 29 19:21:09 2006 @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $Id: Makefile.in,v 1.48 2006/09/22 09:09:34 hno Exp $ +# $Id: Makefile.in,v 1.50 2006/10/30 02:21:09 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -120,7 +120,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -204,6 +203,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/RELEASENOTES.html squid-2.6.STABLE5/RELEASENOTES.html --- squid-2.6.STABLE4/RELEASENOTES.html Sat Sep 23 11:50:05 2006 +++ squid-2.6.STABLE5/RELEASENOTES.html Fri Nov 3 06:20:46 2006 @@ -7,7 +7,7 @@

Squid 2.6 release notes

-

Squid Developers

$Id: release-2.6.html,v 1.35 2006/09/22 11:10:14 hno Exp $ +

Squid Developers

$Id: release-2.6.html,v 1.36 2006/11/03 13:16:22 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. @@ -39,6 +39,9 @@

9. Key changes squid-2.6.STABLE3 to 2.6.STABLE4

+

+

10. Key changes squid-2.6.STABLE4 to 2.6.STABLE5

+

1. Key changes from squid 2.5

@@ -165,10 +168,7 @@

There is a few known issues in this version of Squid which we hope to correct in a later release

@@ -475,6 +475,23 @@
  • Bug #1699: assertion failed: authenticate.c:836: "auth_user_request != NULL"
  • a number of other minor and cosmetic bugfixes. See the list of squid-2.6.STABLE4 changes and the +ChangeLog file for details.
  • + +

    + +

    10. Key changes squid-2.6.STABLE4 to 2.6.STABLE5

    + +

    +

    diff -ruN squid-2.6.STABLE4/configure squid-2.6.STABLE5/configure --- squid-2.6.STABLE4/configure Sat Sep 23 11:49:33 2006 +++ squid-2.6.STABLE5/configure Fri Nov 3 06:20:14 2006 @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.in Revision: 1.402 . +# From configure.in Revision: 1.410 . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.STABLE4. +# Generated by GNU Autoconf 2.59 for Squid Web Proxy 2.6.STABLE5. # # Report bugs to . # @@ -270,8 +270,8 @@ # Identity of this package. PACKAGE_NAME='Squid Web Proxy' PACKAGE_TARNAME='squid' -PACKAGE_VERSION='2.6.STABLE4' -PACKAGE_STRING='Squid Web Proxy 2.6.STABLE4' +PACKAGE_VERSION='2.6.STABLE5' +PACKAGE_STRING='Squid Web Proxy 2.6.STABLE5' PACKAGE_BUGREPORT='http://www.squid-cache.org/bugs/' ac_default_prefix=/usr/local/squid @@ -312,7 +312,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os PKGCONFIG CGIEXT ENABLE_WIN32SPECIFIC_TRUE ENABLE_WIN32SPECIFIC_FALSE ENABLE_MINGW32SPECIFIC_TRUE ENABLE_MINGW32SPECIFIC_FALSE WIN32_PSAPI CACHE_HTTP_PORT CACHE_ICP_PORT LIBDLMALLOC LIB_MALLOC STORE_OBJS STORE_LIBS STORE_MODULES NEED_DISKD_TRUE NEED_DISKD_FALSE USE_AIOPS_WIN32_TRUE USE_AIOPS_WIN32_FALSE NEED_COSSDUMP_TRUE NEED_COSSDUMP_FALSE REPL_POLICIES REPL_OBJS REPL_LIBS ENABLE_PINGER_TRUE ENABLE_PINGER_FALSE USE_DELAY_POOLS_TRUE USE_DELAY_POOLS_FALSE USE_SNMP_TRUE USE_SNMP_FALSE SNMPLIB makesnmplib ENABLE_HTCP_TRUE ENABLE_HTCP_FALSE ENABLE_SSL_TRUE ENABLE_SSL_FALSE NEED_OWN_MD5_TRUE NEED_OWN_MD5_FALSE SSLLIB ERR_DEFAULT_LANGUAGE ERR_LANGUAGES MAKE_LEAKFINDER_TRUE MAKE_LEAKFINDER_FALSE USE_DNSSERVER_TRUE USE_DNSSERVER_FALSE OPT_DEFAULT_HOSTS AUTH_MODULES AUTH_OBJS AUTH_LIBS BASIC_AUTH_HELPERS NTLM_AUTH_HELPERS DIGEST_AUTH_HELPERS NEGOTIATE_AUTH_HELPERS EXTERNAL_ACL_HELPERS CPP EGREP LIBSASL ENABLE_UNLINKD_TRUE ENABLE_UNLINKD_FALSE RANLIB ac_ct_RANLIB LN_S SH FALSE TRUE RM MV MKDIR LN PERL AR AR_R ALLOCA CRYPTLIB LIB_EPOLL LIB_LDAP LIB_LBER LIB_DB EPOLL_LIBS USE_POLL_TRUE USE_POLL_FALSE USE_EPOLL_TRUE USE_EPOLL_FALSE USE_SELECT_TRUE USE_SELECT_FALSE USE_SELECT_WIN32_TRUE USE_SELECT_WIN32_FALSE USE_KQUEUE_TRUE USE_KQUEUE_FALSE NEED_OWN_SNPRINTF_TRUE NEED_OWN_SNPRINTF_FALSE NEED_OWN_STRSEP_TRUE NEED_OWN_STRSEP_FALSE REGEXLIB LIBREGEX LIBOBJS XTRA_OBJS XTRA_LIBS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os PKGCONFIG CGIEXT ENABLE_WIN32SPECIFIC_TRUE ENABLE_WIN32SPECIFIC_FALSE ENABLE_MINGW32SPECIFIC_TRUE ENABLE_MINGW32SPECIFIC_FALSE WIN32_PSAPI CACHE_HTTP_PORT CACHE_ICP_PORT LIBDLMALLOC LIB_MALLOC STORE_OBJS STORE_LIBS STORE_MODULES NEED_DISKD_TRUE NEED_DISKD_FALSE USE_AIOPS_WIN32_TRUE USE_AIOPS_WIN32_FALSE NEED_COSSDUMP_TRUE NEED_COSSDUMP_FALSE REPL_POLICIES REPL_OBJS REPL_LIBS ENABLE_PINGER_TRUE ENABLE_PINGER_FALSE USE_DELAY_POOLS_TRUE USE_DELAY_POOLS_FALSE USE_SNMP_TRUE USE_SNMP_FALSE SNMPLIB makesnmplib ENABLE_HTCP_TRUE ENABLE_HTCP_FALSE ENABLE_SSL_TRUE ENABLE_SSL_FALSE NEED_OWN_MD5_TRUE NEED_OWN_MD5_FALSE SSLLIB ERR_DEFAULT_LANGUAGE ERR_LANGUAGES MAKE_LEAKFINDER_TRUE MAKE_LEAKFINDER_FALSE USE_DNSSERVER_TRUE USE_DNSSERVER_FALSE OPT_DEFAULT_HOSTS AUTH_MODULES AUTH_OBJS AUTH_LIBS BASIC_AUTH_HELPERS NTLM_AUTH_HELPERS DIGEST_AUTH_HELPERS NEGOTIATE_AUTH_HELPERS EXTERNAL_ACL_HELPERS CPP EGREP LIBSASL ENABLE_UNLINKD_TRUE ENABLE_UNLINKD_FALSE RANLIB ac_ct_RANLIB LN_S SH FALSE TRUE RM MV MKDIR LN PERL AR AR_R ALLOCA CRYPTLIB LIB_EPOLL LIB_LDAP LIB_LBER LIB_DB USE_POLL_TRUE USE_POLL_FALSE USE_EPOLL_TRUE USE_EPOLL_FALSE USE_SELECT_TRUE USE_SELECT_FALSE USE_SELECT_SIMPLE_TRUE USE_SELECT_SIMPLE_FALSE USE_SELECT_WIN32_TRUE USE_SELECT_WIN32_FALSE USE_KQUEUE_TRUE USE_KQUEUE_FALSE NEED_OWN_SNPRINTF_TRUE NEED_OWN_SNPRINTF_FALSE NEED_OWN_STRSEP_TRUE NEED_OWN_STRSEP_FALSE REGEXLIB LIBREGEX LIBOBJS XTRA_OBJS XTRA_LIBS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -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.STABLE4 to adapt to many kinds of systems. +\`configure' configures Squid Web Proxy 2.6.STABLE5 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.STABLE4:";; + short | recursive ) echo "Configuration of Squid Web Proxy 2.6.STABLE5:";; esac cat <<\_ACEOF @@ -914,19 +914,22 @@ Select languages to be installed. (All will be installed by default) --enable-coss-aio-ops Enable COSS I/O with Posix AIO (default is aufs I/O) - --enable-select Enable select() support. - --disable-select Disable select() support. - --enable-poll Enable poll() instead of select(). Normally poll - is preferred over select, but configure knows poll - is broken on some platforms. If you think you are - smarter than the configure script, you may enable - poll with this option. - --disable-poll Disable the use of poll(). - --enable-epoll Enable epoll() instead of poll() or select(). - epoll() is best where available, but must be - explicitly set at the moment. - --disable-epoll Disable the use of epoll(). - --enable-kqueue Enable kqueue support. + --enable-select Force the use of select support. + Normally configure automatically selects a better + alternative if available. + --disable-select Disable select support, causing configure to fail + if a better alternative is not available + --enable-select-simple Force the use of select support (POSIX). + Useful if your system only supports the bare minium + POSIX select requirements without fds_bits. + --enable-poll Force the use of poll even if automatic checks + indicate poll may be broken on your plaform. + --disable-poll Disable the use of poll. + --enable-epoll Force the use of epoll even if automatic checks + indicate epoll may not be supported. + --disable-epoll Disable the use of epoll. + --enable-kqueue Force the use of kqueue even if automatic checks + indicate kqueue may not be supported. --disable-kqueue Disable kqueue support. --disable-http-violations This allows you to remove code which is known to @@ -1155,7 +1158,7 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -Squid Web Proxy configure 2.6.STABLE4 +Squid Web Proxy configure 2.6.STABLE5 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1169,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.STABLE4, which was +It was created by Squid Web Proxy $as_me 2.6.STABLE5, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1815,7 +1818,7 @@ # Define the identity of the package. PACKAGE='squid' - VERSION='2.6.STABLE4' + VERSION='2.6.STABLE5' cat >>confdefs.h <<_ACEOF @@ -4078,7 +4081,7 @@ #define SQUID_SNMP 1 _ACEOF - SNMPLIB='-L../snmplib -lsnmp' + SNMPLIB='../snmplib/libsnmp.a' if true; then @@ -4421,6 +4424,24 @@ fi; +# Check whether --enable-select-simple or --disable-select-simple was given. +if test "${enable_select_simple+set}" = set; then + enableval="$enable_select_simple" + + case "$enableval" in + yes) + echo "Forcing select() to be enabled in simple POSIX mode" + SELECT_TYPE="select_simple" + ac_cv_func_select='yes' + ;; + no) + echo "Forcing select() to be disabled" + ac_cv_func_select='no' + ;; + esac + +fi; + # Check whether --enable-poll or --disable-poll was given. if test "${enable_poll+set}" = set; then enableval="$enable_poll" @@ -4647,6 +4668,10 @@ _ACEOF LINUX_TPROXY="yes" + if test -z "$LINUX_NETFILTER"; then + echo "Linux-Netfilter Transparent Proxy automatically enabled" + LINUX_NETFILTER="yes" + fi fi fi; @@ -16254,116 +16279,6 @@ SELECT_TYPE="select" fi -case "$SELECT_TYPE" in -epoll) - -cat >>confdefs.h <<\_ACEOF -#define USE_EPOLL 1 -_ACEOF - - echo "$as_me:$LINENO: checking for epoll_create in -lepoll" >&5 -echo $ECHO_N "checking for epoll_create in -lepoll... $ECHO_C" >&6 -if test "${ac_cv_lib_epoll_epoll_create+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lepoll $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char epoll_create (); -int -main () -{ -epoll_create (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_epoll_epoll_create=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_epoll_epoll_create=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_epoll_epoll_create" >&5 -echo "${ECHO_T}$ac_cv_lib_epoll_epoll_create" >&6 -if test $ac_cv_lib_epoll_epoll_create = yes; then - EPOLL_LIBS="-lepoll" -fi - - - ;; -poll) - -cat >>confdefs.h <<\_ACEOF -#define USE_POLL 1 -_ACEOF - - ;; -select) - -cat >>confdefs.h <<\_ACEOF -#define USE_SELECT 1 -_ACEOF - - ;; -select_win32) - -cat >>confdefs.h <<\_ACEOF -#define USE_SELECT_WIN32 1 -_ACEOF - - ;; -kqueue) - -cat >>confdefs.h <<\_ACEOF -#define USE_KQUEUE 1 -_ACEOF - - ;; -*) - echo "ERROR: Unknown IO loop type '$SELECT_TYPE'" - exit 1 -esac - echo "Using ${SELECT_TYPE} for the IO loop." @@ -16397,6 +16312,16 @@ +if test $SELECT_TYPE = select_simple; then + USE_SELECT_SIMPLE_TRUE= + USE_SELECT_SIMPLE_FALSE='#' +else + USE_SELECT_SIMPLE_TRUE='#' + USE_SELECT_SIMPLE_FALSE= +fi + + + if test $SELECT_TYPE = select_win32; then USE_SELECT_WIN32_TRUE= USE_SELECT_WIN32_FALSE='#' @@ -16766,7 +16691,7 @@ echo "$as_me:$LINENO: checking if TPROXY header files are installed" >&5 echo $ECHO_N "checking if TPROXY header files are installed... $ECHO_C" >&6 # hold on to your hats... - if test "$ac_cv_header_linux_netfilter_ipv4_ip_tproxy_h" = "yes"; then + if test "$ac_cv_header_linux_netfilter_ipv4_ip_tproxy_h" = "yes" && test "$LINUX_NETFILTER" = "yes"; then LINUX_TPROXY="yes" cat >>confdefs.h <<\_ACEOF @@ -16784,7 +16709,7 @@ echo "$as_me:$LINENO: result: $LINUX_TPROXY" >&5 echo "${ECHO_T}$LINUX_TPROXY" >&6 fi -if test "$LINUX_TPROXY" = "no" ; then +if test "$LINUX_TPROXY" = "no" && test "$LINUX_NETFILTER" = "yes"; then echo "WARNING: Cannot find TPROXY headers, you need to install the" echo "tproxy package from:" echo " - lynx http://www.balabit.com/downloads/tproxy/" @@ -18141,6 +18066,13 @@ Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${USE_SELECT_SIMPLE_TRUE}" && test -z "${USE_SELECT_SIMPLE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"USE_SELECT_SIMPLE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"USE_SELECT_SIMPLE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${USE_SELECT_WIN32_TRUE}" && test -z "${USE_SELECT_WIN32_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"USE_SELECT_WIN32\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -18454,7 +18386,7 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by Squid Web Proxy $as_me 2.6.STABLE4, which was +This file was extended by Squid Web Proxy $as_me 2.6.STABLE5, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18517,7 +18449,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -Squid Web Proxy config.status 2.6.STABLE4 +Squid Web Proxy config.status 2.6.STABLE5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" @@ -18884,13 +18816,14 @@ s,@LIB_LDAP@,$LIB_LDAP,;t t s,@LIB_LBER@,$LIB_LBER,;t t s,@LIB_DB@,$LIB_DB,;t t -s,@EPOLL_LIBS@,$EPOLL_LIBS,;t t s,@USE_POLL_TRUE@,$USE_POLL_TRUE,;t t s,@USE_POLL_FALSE@,$USE_POLL_FALSE,;t t s,@USE_EPOLL_TRUE@,$USE_EPOLL_TRUE,;t t s,@USE_EPOLL_FALSE@,$USE_EPOLL_FALSE,;t t s,@USE_SELECT_TRUE@,$USE_SELECT_TRUE,;t t s,@USE_SELECT_FALSE@,$USE_SELECT_FALSE,;t t +s,@USE_SELECT_SIMPLE_TRUE@,$USE_SELECT_SIMPLE_TRUE,;t t +s,@USE_SELECT_SIMPLE_FALSE@,$USE_SELECT_SIMPLE_FALSE,;t t s,@USE_SELECT_WIN32_TRUE@,$USE_SELECT_WIN32_TRUE,;t t s,@USE_SELECT_WIN32_FALSE@,$USE_SELECT_WIN32_FALSE,;t t s,@USE_KQUEUE_TRUE@,$USE_KQUEUE_TRUE,;t t diff -ruN squid-2.6.STABLE4/configure.in squid-2.6.STABLE5/configure.in --- squid-2.6.STABLE4/configure.in Sat Sep 23 11:49:33 2006 +++ squid-2.6.STABLE5/configure.in Fri Nov 3 06:20:14 2006 @@ -1,16 +1,16 @@ dnl dnl Configuration input file for Squid dnl -dnl $Id: configure.in,v 1.402 2006/09/22 11:10:14 hno Exp $ +dnl $Id: configure.in,v 1.410 2006/11/03 13:16:21 hno Exp $ dnl dnl dnl -AC_INIT(Squid Web Proxy, 2.6.STABLE4, http://www.squid-cache.org/bugs/, squid) +AC_INIT(Squid Web Proxy, 2.6.STABLE5, 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.402 $)dnl +AC_REVISION($Revision: 1.410 $)dnl AC_PREFIX_DEFAULT(/usr/local/squid) AM_MAINTAINER_MODE @@ -615,7 +615,7 @@ [ if test "$enableval" = "yes" ; then echo "SNMP monitoring enabled" AC_DEFINE(SQUID_SNMP, 1, [Define to enable SNMP monitoring of Squid]) - SNMPLIB='-L../snmplib -lsnmp' + SNMPLIB='../snmplib/libsnmp.a' AM_CONDITIONAL(USE_SNMP, true) SNMP_MAKEFILE=./snmplib/Makefile makesnmplib=snmplib @@ -828,8 +828,11 @@ dnl Enable select() AC_ARG_ENABLE(select, -[ --enable-select Enable select() support. - --disable-select Disable select() support. ], +[ --enable-select Force the use of select support. + Normally configure automatically selects a better + alternative if available. + --disable-select Disable select support, causing configure to fail + if a better alternative is not available], [ case "$enableval" in @@ -845,14 +848,30 @@ esac ]) +dnl Enable select() +AC_ARG_ENABLE(select-simple, +[ --enable-select-simple Force the use of select support (POSIX). + Useful if your system only supports the bare minium + POSIX select requirements without fds_bits.], +[ + case "$enableval" in + yes) + echo "Forcing select() to be enabled in simple POSIX mode" + SELECT_TYPE="select_simple" + ac_cv_func_select='yes' + ;; + no) + echo "Forcing select() to be disabled" + ac_cv_func_select='no' + ;; + esac +]) + dnl Enable poll() AC_ARG_ENABLE(poll, -[ --enable-poll Enable poll() instead of select(). Normally poll - is preferred over select, but configure knows poll - is broken on some platforms. If you think you are - smarter than the configure script, you may enable - poll with this option. - --disable-poll Disable the use of poll().], +[ --enable-poll Force the use of poll even if automatic checks + indicate poll may be broken on your plaform. + --disable-poll Disable the use of poll.], [ case "$enableval" in yes) @@ -869,10 +888,9 @@ dnl Enable epoll() AC_ARG_ENABLE(epoll, -[ --enable-epoll Enable epoll() instead of poll() or select(). - epoll() is best where available, but must be - explicitly set at the moment. - --disable-epoll Disable the use of epoll().], +[ --enable-epoll Force the use of epoll even if automatic checks + indicate epoll may not be supported. + --disable-epoll Disable the use of epoll.], [ case "$enableval" in yes) @@ -889,7 +907,8 @@ dnl Enable kqueue AC_ARG_ENABLE(kqueue, -[ --enable-kqueue Enable kqueue support. +[ --enable-kqueue Force the use of kqueue even if automatic checks + indicate kqueue may not be supported. --disable-kqueue Disable kqueue support. ], [ @@ -1081,6 +1100,10 @@ echo "Linux Netfilter/TPROXY enabled" AC_DEFINE(LINUX_TPROXY, 1, [Enable real Transparent Proxy support for Netfilter TPROXY.]) LINUX_TPROXY="yes" + if test -z "$LINUX_NETFILTER"; then + echo "Linux-Netfilter Transparent Proxy automatically enabled" + LINUX_NETFILTER="yes" + fi fi ]) @@ -2392,33 +2415,11 @@ SELECT_TYPE="select" fi -case "$SELECT_TYPE" in -epoll) - AC_DEFINE(USE_EPOLL,1,[Use epoll() for the IO loop]) - AC_CHECK_LIB(epoll, epoll_create, [EPOLL_LIBS="-lepoll"]) - AC_SUBST(EPOLL_LIBS) - ;; -poll) - AC_DEFINE(USE_POLL,1,[Use poll() for the IO loop]) - ;; -select) - AC_DEFINE(USE_SELECT,1,[Use select() for the IO loop]) - ;; -select_win32) - AC_DEFINE(USE_SELECT_WIN32,1,[Use Winsock select() for the IO loop]) - ;; -kqueue) - AC_DEFINE(USE_KQUEUE,1,[Use kqueue() for the IO loop]) - ;; -*) - echo "ERROR: Unknown IO loop type '$SELECT_TYPE'" - exit 1 -esac - echo "Using ${SELECT_TYPE} for the IO loop." AM_CONDITIONAL([USE_POLL], [test $SELECT_TYPE = poll]) AM_CONDITIONAL([USE_EPOLL], [test $SELECT_TYPE = epoll]) AM_CONDITIONAL([USE_SELECT], [test $SELECT_TYPE = select]) +AM_CONDITIONAL([USE_SELECT_SIMPLE], [test $SELECT_TYPE = select_simple]) AM_CONDITIONAL([USE_SELECT_WIN32], [test $SELECT_TYPE = select_win32]) AM_CONDITIONAL([USE_KQUEUE], [test $SELECT_TYPE = kqueue]) @@ -2587,7 +2588,7 @@ if test "$LINUX_TPROXY" ; then AC_MSG_CHECKING(if TPROXY header files are installed) # hold on to your hats... - if test "$ac_cv_header_linux_netfilter_ipv4_ip_tproxy_h" = "yes"; then + if test "$ac_cv_header_linux_netfilter_ipv4_ip_tproxy_h" = "yes" && test "$LINUX_NETFILTER" = "yes"; then LINUX_TPROXY="yes" AC_DEFINE(LINUX_TPROXY, 1, [Enable real Transparent Proxy support for Netfilter TPROXY.]) else @@ -2596,7 +2597,7 @@ fi AC_MSG_RESULT($LINUX_TPROXY) fi -if test "$LINUX_TPROXY" = "no" ; then +if test "$LINUX_TPROXY" = "no" && test "$LINUX_NETFILTER" = "yes"; then echo "WARNING: Cannot find TPROXY headers, you need to install the" echo "tproxy package from:" echo " - lynx http://www.balabit.com/downloads/tproxy/" diff -ruN squid-2.6.STABLE4/contrib/Makefile.in squid-2.6.STABLE5/contrib/Makefile.in --- squid-2.6.STABLE4/contrib/Makefile.in Fri Sep 22 03:09:34 2006 +++ squid-2.6.STABLE5/contrib/Makefile.in Sun Oct 29 19:21:10 2006 @@ -97,7 +97,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -181,6 +180,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/doc/Makefile.in squid-2.6.STABLE5/doc/Makefile.in --- squid-2.6.STABLE4/doc/Makefile.in Fri Sep 22 03:09:36 2006 +++ squid-2.6.STABLE5/doc/Makefile.in Sun Oct 29 19:21:11 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.29 2006/09/22 09:09:36 hno Exp $ +# $Id: Makefile.in,v 1.31 2006/10/30 02:21:11 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -104,7 +104,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -188,6 +187,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/errors/Makefile.in squid-2.6.STABLE5/errors/Makefile.in --- squid-2.6.STABLE4/errors/Makefile.in Fri Sep 22 03:09:37 2006 +++ squid-2.6.STABLE5/errors/Makefile.in Sun Oct 29 19:21:13 2006 @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $Id: Makefile.in,v 1.45 2006/09/22 09:09:37 hno Exp $ +# $Id: Makefile.in,v 1.47 2006/10/30 02:21:13 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -96,7 +96,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -180,6 +179,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/Makefile.in squid-2.6.STABLE5/helpers/Makefile.in --- squid-2.6.STABLE4/helpers/Makefile.in Fri Sep 22 03:09:38 2006 +++ squid-2.6.STABLE5/helpers/Makefile.in Sun Oct 29 19:21:14 2006 @@ -101,7 +101,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -185,6 +184,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/LDAP/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/LDAP/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/LDAP/Makefile.in Fri Sep 22 03:09:39 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/LDAP/Makefile.in Sun Oct 29 19:21:16 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.37 2006/09/22 09:09:39 hno Exp $ +# $Id: Makefile.in,v 1.39 2006/10/30 02:21:16 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -123,7 +123,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -207,6 +206,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/MSNT/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/MSNT/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/MSNT/Makefile.in Fri Sep 22 03:09:39 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/MSNT/Makefile.in Sun Oct 29 19:21:17 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.40 2006/09/22 09:09:39 hno Exp $ +# $Id: Makefile.in,v 1.42 2006/10/30 02:21:17 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -132,7 +132,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -216,6 +215,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/Makefile.in Fri Sep 22 03:09:39 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/Makefile.in Sun Oct 29 19:21:15 2006 @@ -16,7 +16,7 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.36 2006/09/22 09:09:39 hno Exp $ +# $Id: Makefile.in,v 1.38 2006/10/30 02:21:15 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/NCSA/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/NCSA/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/NCSA/Makefile.in Fri Sep 22 03:09:40 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/NCSA/Makefile.in Sun Oct 29 19:21:17 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.37 2006/09/22 09:09:40 hno Exp $ +# $Id: Makefile.in,v 1.39 2006/10/30 02:21:17 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -123,7 +123,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -207,6 +206,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/NCSA/ncsa_auth.c squid-2.6.STABLE5/helpers/basic_auth/NCSA/ncsa_auth.c --- squid-2.6.STABLE4/helpers/basic_auth/NCSA/ncsa_auth.c Thu Sep 21 20:18:00 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/NCSA/ncsa_auth.c Sat Sep 30 15:25:01 2006 @@ -73,6 +73,7 @@ char *passwd; if (hash != NULL) { hashFreeItems(hash, my_free); + hashFreeMemory(hash); } /* initial setup */ hash = hash_create((HASHCMP *) strcmp, 7921, hash_string); @@ -149,6 +150,10 @@ } else { printf("ERR Wrong password\n"); } + } + if (hash != NULL) { + hashFreeItems(hash, my_free); + hashFreeMemory(hash); } exit(0); } diff -ruN squid-2.6.STABLE4/helpers/basic_auth/PAM/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/PAM/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/PAM/Makefile.in Fri Sep 22 03:09:40 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/PAM/Makefile.in Sun Oct 29 19:21:18 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid PAM authentication helper # -# $Id: Makefile.in,v 1.36 2006/09/22 09:09:40 hno Exp $ +# $Id: Makefile.in,v 1.38 2006/10/30 02:21:18 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -122,7 +122,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -206,6 +205,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/SASL/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/SASL/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/SASL/Makefile.in Fri Sep 22 03:09:40 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/SASL/Makefile.in Sun Oct 29 19:21:19 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid SASL authentication helper # -# $Id: Makefile.in,v 1.33 2006/09/22 09:09:40 hno Exp $ +# $Id: Makefile.in,v 1.35 2006/10/30 02:21:19 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -119,7 +119,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -203,6 +202,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/SMB/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/SMB/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/SMB/Makefile.in Fri Sep 22 03:09:41 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/SMB/Makefile.in Sun Oct 29 19:21:19 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.36 2006/09/22 09:09:41 hno Exp $ +# $Id: Makefile.in,v 1.38 2006/10/30 02:21:19 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -128,7 +128,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -212,6 +211,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/YP/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/YP/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/YP/Makefile.in Fri Sep 22 03:09:41 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/YP/Makefile.in Sun Oct 29 19:21:20 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.37 2006/09/22 09:09:41 hno Exp $ +# $Id: Makefile.in,v 1.39 2006/10/30 02:21:20 hno Exp $ # # @@ -118,7 +118,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -202,6 +201,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/getpwnam/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/getpwnam/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/getpwnam/Makefile.in Fri Sep 22 03:09:41 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/getpwnam/Makefile.in Sun Oct 29 19:21:20 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.35 2006/09/22 09:09:41 hno Exp $ +# $Id: Makefile.in,v 1.37 2006/10/30 02:21:20 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -120,7 +120,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -204,6 +203,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/mswin_sspi/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/mswin_sspi/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/mswin_sspi/Makefile.in Fri Sep 22 03:09:41 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/mswin_sspi/Makefile.in Sun Oct 29 19:21:22 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.9 2006/09/22 09:09:41 hno Exp $ +# $Id: Makefile.in,v 1.11 2006/10/30 02:21:22 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -119,7 +119,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -203,6 +202,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/basic_auth/multi-domain-NTLM/Makefile.in squid-2.6.STABLE5/helpers/basic_auth/multi-domain-NTLM/Makefile.in --- squid-2.6.STABLE4/helpers/basic_auth/multi-domain-NTLM/Makefile.in Fri Sep 22 03:09:42 2006 +++ squid-2.6.STABLE5/helpers/basic_auth/multi-domain-NTLM/Makefile.in Sun Oct 29 19:21:22 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.33 2006/09/22 09:09:42 hno Exp $ +# $Id: Makefile.in,v 1.35 2006/10/30 02:21:22 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -104,7 +104,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -188,6 +187,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/digest_auth/Makefile.in squid-2.6.STABLE5/helpers/digest_auth/Makefile.in --- squid-2.6.STABLE4/helpers/digest_auth/Makefile.in Fri Sep 22 03:09:42 2006 +++ squid-2.6.STABLE5/helpers/digest_auth/Makefile.in Sun Oct 29 19:21:22 2006 @@ -16,7 +16,7 @@ # Makefile for digest auth helpers in the Squid Object Cache server # -# $Id: Makefile.in,v 1.33 2006/09/22 09:09:42 hno Exp $ +# $Id: Makefile.in,v 1.35 2006/10/30 02:21:22 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/digest_auth/ldap/Makefile.in squid-2.6.STABLE5/helpers/digest_auth/ldap/Makefile.in --- squid-2.6.STABLE4/helpers/digest_auth/ldap/Makefile.in Fri Sep 22 03:09:43 2006 +++ squid-2.6.STABLE5/helpers/digest_auth/ldap/Makefile.in Sun Oct 29 19:21:22 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.14 2006/09/22 09:09:43 hno Exp $ +# $Id: Makefile.in,v 1.16 2006/10/30 02:21:22 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -122,7 +122,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -206,6 +205,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/digest_auth/password/Makefile.in squid-2.6.STABLE5/helpers/digest_auth/password/Makefile.in --- squid-2.6.STABLE4/helpers/digest_auth/password/Makefile.in Fri Sep 22 03:09:43 2006 +++ squid-2.6.STABLE5/helpers/digest_auth/password/Makefile.in Sun Oct 29 19:21:23 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.35 2006/09/22 09:09:43 hno Exp $ +# $Id: Makefile.in,v 1.37 2006/10/30 02:21:23 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -121,7 +121,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -205,6 +204,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/Makefile.in squid-2.6.STABLE5/helpers/external_acl/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/Makefile.in Fri Sep 22 03:09:43 2006 +++ squid-2.6.STABLE5/helpers/external_acl/Makefile.in Sun Oct 29 19:21:23 2006 @@ -16,7 +16,7 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.23 2006/09/22 09:09:43 hno Exp $ +# $Id: Makefile.in,v 1.25 2006/10/30 02:21:23 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/ip_user/Makefile.in squid-2.6.STABLE5/helpers/external_acl/ip_user/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/ip_user/Makefile.in Fri Sep 22 03:09:43 2006 +++ squid-2.6.STABLE5/helpers/external_acl/ip_user/Makefile.in Sun Oct 29 19:21:24 2006 @@ -17,7 +17,7 @@ # # Makefile for the ip_user external_acl helper by Rodrigo Campos # -# $Id: Makefile.in,v 1.22 2006/09/22 09:09:43 hno Exp $ +# $Id: Makefile.in,v 1.24 2006/10/30 02:21:24 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -119,7 +119,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -203,6 +202,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/ldap_group/Makefile.in squid-2.6.STABLE5/helpers/external_acl/ldap_group/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/ldap_group/Makefile.in Fri Sep 22 03:09:44 2006 +++ squid-2.6.STABLE5/helpers/external_acl/ldap_group/Makefile.in Sun Oct 29 19:21:24 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.23 2006/09/22 09:09:44 hno Exp $ +# $Id: Makefile.in,v 1.25 2006/10/30 02:21:24 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -124,7 +124,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -208,6 +207,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/mswin_lm_group/Makefile.in squid-2.6.STABLE5/helpers/external_acl/mswin_lm_group/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/mswin_lm_group/Makefile.in Fri Sep 22 03:09:44 2006 +++ squid-2.6.STABLE5/helpers/external_acl/mswin_lm_group/Makefile.in Sun Oct 29 19:21:25 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.8 2006/09/22 09:09:44 hno Exp $ +# $Id: Makefile.in,v 1.10 2006/10/30 02:21:25 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -119,7 +119,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -203,6 +202,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/session/Makefile.in squid-2.6.STABLE5/helpers/external_acl/session/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/session/Makefile.in Fri Sep 22 03:09:44 2006 +++ squid-2.6.STABLE5/helpers/external_acl/session/Makefile.in Sun Oct 29 19:21:26 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.9 2006/09/22 09:09:44 hno Exp $ +# $Id: Makefile.in,v 1.11 2006/10/30 02:21:26 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -122,7 +122,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -206,6 +205,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/unix_group/Makefile.in squid-2.6.STABLE5/helpers/external_acl/unix_group/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/unix_group/Makefile.in Fri Sep 22 03:09:44 2006 +++ squid-2.6.STABLE5/helpers/external_acl/unix_group/Makefile.in Sun Oct 29 19:21:27 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.22 2006/09/22 09:09:44 hno Exp $ +# $Id: Makefile.in,v 1.24 2006/10/30 02:21:27 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -121,7 +121,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -205,6 +204,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/external_acl/wbinfo_group/Makefile.in squid-2.6.STABLE5/helpers/external_acl/wbinfo_group/Makefile.in --- squid-2.6.STABLE4/helpers/external_acl/wbinfo_group/Makefile.in Fri Sep 22 03:09:44 2006 +++ squid-2.6.STABLE5/helpers/external_acl/wbinfo_group/Makefile.in Sun Oct 29 19:21:28 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid LDAP authentication helper # -# $Id: Makefile.in,v 1.21 2006/09/22 09:09:44 hno Exp $ +# $Id: Makefile.in,v 1.23 2006/10/30 02:21:28 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -104,7 +104,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -188,6 +187,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/negotiate_auth/Makefile.in squid-2.6.STABLE5/helpers/negotiate_auth/Makefile.in --- squid-2.6.STABLE4/helpers/negotiate_auth/Makefile.in Fri Sep 22 03:09:45 2006 +++ squid-2.6.STABLE5/helpers/negotiate_auth/Makefile.in Sun Oct 29 19:21:28 2006 @@ -16,7 +16,7 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.10 2006/09/22 09:09:45 hno Exp $ +# $Id: Makefile.in,v 1.12 2006/10/30 02:21:28 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/negotiate_auth/mswin_sspi/Makefile.in squid-2.6.STABLE5/helpers/negotiate_auth/mswin_sspi/Makefile.in --- squid-2.6.STABLE4/helpers/negotiate_auth/mswin_sspi/Makefile.in Fri Sep 22 03:09:45 2006 +++ squid-2.6.STABLE5/helpers/negotiate_auth/mswin_sspi/Makefile.in Sun Oct 29 19:21:29 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.8 2006/09/22 09:09:45 hno Exp $ +# $Id: Makefile.in,v 1.10 2006/10/30 02:21:29 hno Exp $ # srcdir = @srcdir@ @@ -118,7 +118,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -202,6 +201,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/Makefile.in Fri Sep 22 03:09:46 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/Makefile.in Sun Oct 29 19:21:30 2006 @@ -16,7 +16,7 @@ # Makefile for storage modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.36 2006/09/22 09:09:46 hno Exp $ +# $Id: Makefile.in,v 1.38 2006/10/30 02:21:30 hno Exp $ # srcdir = @srcdir@ top_srcdir = @top_srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/SMB/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/SMB/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/SMB/Makefile.in Fri Sep 22 03:09:46 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/SMB/Makefile.in Sun Oct 29 19:21:30 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.35 2006/09/22 09:09:46 hno Exp $ +# $Id: Makefile.in,v 1.37 2006/10/30 02:21:30 hno Exp $ # srcdir = @srcdir@ @@ -125,7 +125,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -209,6 +208,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/SMB/smbval/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/SMB/smbval/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/SMB/smbval/Makefile.in Fri Sep 22 03:09:46 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/SMB/smbval/Makefile.in Sun Oct 29 19:21:30 2006 @@ -113,7 +113,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -197,6 +196,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/fakeauth/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/fakeauth/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/fakeauth/Makefile.in Fri Sep 22 03:09:47 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/fakeauth/Makefile.in Sun Oct 29 19:21:31 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.34 2006/09/22 09:09:47 hno Exp $ +# $Id: Makefile.in,v 1.36 2006/10/30 02:21:31 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -120,7 +120,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -204,6 +203,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/mswin_sspi/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/mswin_sspi/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/mswin_sspi/Makefile.in Fri Sep 22 03:09:47 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/mswin_sspi/Makefile.in Sun Oct 29 19:21:31 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.8 2006/09/22 09:09:47 hno Exp $ +# $Id: Makefile.in,v 1.10 2006/10/30 02:21:31 hno Exp $ # srcdir = @srcdir@ @@ -117,7 +117,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -201,6 +200,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/helpers/ntlm_auth/no_check/Makefile.in squid-2.6.STABLE5/helpers/ntlm_auth/no_check/Makefile.in --- squid-2.6.STABLE4/helpers/ntlm_auth/no_check/Makefile.in Fri Sep 22 03:09:47 2006 +++ squid-2.6.STABLE5/helpers/ntlm_auth/no_check/Makefile.in Sun Oct 29 19:21:31 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.36 2006/09/22 09:09:47 hno Exp $ +# $Id: Makefile.in,v 1.38 2006/10/30 02:21:31 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -104,7 +104,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -188,6 +187,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/icons/Makefile.in squid-2.6.STABLE5/icons/Makefile.in --- squid-2.6.STABLE4/icons/Makefile.in Fri Sep 22 03:09:47 2006 +++ squid-2.6.STABLE5/icons/Makefile.in Sun Oct 29 19:21:32 2006 @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.in,v 1.46 2006/09/22 09:09:47 hno Exp $ +# $Id: Makefile.in,v 1.48 2006/10/30 02:21:32 hno Exp $ # srcdir = @srcdir@ @@ -105,7 +105,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -189,6 +188,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/include/autoconf.h.in squid-2.6.STABLE5/include/autoconf.h.in --- squid-2.6.STABLE4/include/autoconf.h.in Sat Sep 16 14:30:43 2006 +++ squid-2.6.STABLE5/include/autoconf.h.in Sun Oct 29 19:21:33 2006 @@ -772,9 +772,6 @@ dnsserver processes instead. */ #undef USE_DNSSERVERS -/* Use epoll() for the IO loop */ -#undef USE_EPOLL - /* Define if we should use GNU regex */ #undef USE_GNUREGEX @@ -792,9 +789,6 @@ /* Compile in support for Ident (RFC 931) lookups? Enabled by default. */ #undef USE_IDENT -/* Use kqueue() for the IO loop */ -#undef USE_KQUEUE - /* Enable code for assiting in finding memory leaks. Hacker stuff only. */ #undef USE_LEAKFINDER @@ -803,18 +797,9 @@ (USE_SSL) */ #undef USE_OPENSSL -/* Use poll() for the IO loop */ -#undef USE_POLL - /* If you want to log Referer request header values, define this. By default, they are written to referer.log in the Squid log directory. */ #undef USE_REFERER_LOG - -/* Use select() for the IO loop */ -#undef USE_SELECT - -/* Use Winsock select() for the IO loop */ -#undef USE_SELECT_WIN32 /* Define this to include code for SSL encryption. */ #undef USE_SSL diff -ruN squid-2.6.STABLE4/include/version.h squid-2.6.STABLE5/include/version.h --- squid-2.6.STABLE4/include/version.h Sat Sep 23 11:49:33 2006 +++ squid-2.6.STABLE5/include/version.h Fri Nov 3 06:20:14 2006 @@ -9,5 +9,5 @@ */ #ifndef SQUID_RELEASE_TIME -#define SQUID_RELEASE_TIME 1159033770 +#define SQUID_RELEASE_TIME 1162560011 #endif diff -ruN squid-2.6.STABLE4/lib/Makefile.in squid-2.6.STABLE5/lib/Makefile.in --- squid-2.6.STABLE4/lib/Makefile.in Fri Sep 22 03:09:48 2006 +++ squid-2.6.STABLE5/lib/Makefile.in Sun Oct 29 19:21:33 2006 @@ -15,7 +15,7 @@ @SET_MAKE@ # -# $Id: Makefile.in,v 1.85 2006/09/22 09:09:48 hno Exp $ +# $Id: Makefile.in,v 1.87 2006/10/30 02:21:33 hno Exp $ # srcdir = @srcdir@ @@ -150,7 +150,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -234,6 +233,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/scripts/Makefile.in squid-2.6.STABLE5/scripts/Makefile.in --- squid-2.6.STABLE4/scripts/Makefile.in Fri Sep 22 03:09:48 2006 +++ squid-2.6.STABLE5/scripts/Makefile.in Sun Oct 29 19:21:33 2006 @@ -102,7 +102,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -186,6 +185,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/snmplib/Makefile.in squid-2.6.STABLE5/snmplib/Makefile.in --- squid-2.6.STABLE4/snmplib/Makefile.in Fri Sep 22 03:09:48 2006 +++ squid-2.6.STABLE5/snmplib/Makefile.in Sun Oct 29 19:21:33 2006 @@ -111,7 +111,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -195,6 +194,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ diff -ruN squid-2.6.STABLE4/src/Makefile.am squid-2.6.STABLE5/src/Makefile.am --- squid-2.6.STABLE4/src/Makefile.am Fri Sep 8 13:41:24 2006 +++ squid-2.6.STABLE5/src/Makefile.am Sun Oct 29 17:07:33 2006 @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.55 2006/09/08 19:41:24 serassio Exp $ +# $Id: Makefile.am,v 1.56 2006/10/30 00:07:33 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -79,6 +79,9 @@ if USE_SELECT COMMLOOP_SOURCE = comm_select.c endif +if USE_SELECT_SIMPLE +COMMLOOP_SOURCE = comm_select_simple.c +endif if USE_SELECT_WIN32 COMMLOOP_SOURCE = comm_select_win32.c endif @@ -127,6 +130,7 @@ comm_poll.c \ comm_select.c \ comm_select_win32.c \ + comm_select_simple.c \ comm_kqueue.c \ comm_generic.c \ ipc.c \ diff -ruN squid-2.6.STABLE4/src/Makefile.in squid-2.6.STABLE5/src/Makefile.in --- squid-2.6.STABLE4/src/Makefile.in Fri Sep 22 03:09:48 2006 +++ squid-2.6.STABLE5/src/Makefile.in Sun Oct 29 19:21:34 2006 @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.278 2006/09/22 09:09:48 hno Exp $ +# $Id: Makefile.in,v 1.280 2006/10/30 02:21:34 hno Exp $ # # Uncomment and customize the following to suit your needs: # @@ -84,27 +84,28 @@ am__squid_SOURCES_DIST = access_log.c acl.c asn.c authenticate.c \ cache_cf.c CacheDigest.c cache_manager.c carp.c cbdata.c \ client_db.c client_side.c comm.c comm_epoll.c comm_kqueue.c \ - comm_poll.c comm_select.c comm_select_win32.c debug.c \ - defines.h delay_pools.c disk.c dns_internal.c dns.c enums.h \ - errorpage.c event.c errormap.c external_acl.c fd.c filemap.c \ - forward.c fqdncache.c ftp.c globals.h gopher.c helper.c htcp.c \ - http.c HttpStatusLine.c HttpHdrCc.c HttpHdrRange.c \ - HttpHdrContRange.c HttpHeader.c HttpHeaderTools.c HttpBody.c \ - HttpMsg.c HttpReply.c HttpRequest.c icmp.c icp_v2.c icp_v3.c \ - ident.c internal.c ipc.c ipc_win32.c ipcache.c leakfinder.c \ - locrewrite.c logfile.c main.c mem.c MemPool.c MemBuf.c mime.c \ - multicast.c neighbors.c net_db.c Packer.c pconn.c \ - peer_digest.c peer_monitor.c peer_select.c peer_sourcehash.c \ - peer_userhash.c protos.h redirect.c referer.c refresh.c \ - send-announce.c snmp_core.c snmp_agent.c squid.h ssl.c \ - ssl_support.c stat.c StatHist.c String.c stmem.c store.c \ - store_io.c store_client.c store_digest.c store_dir.c \ - store_key_md5.c store_log.c store_rebuild.c store_swapin.c \ - store_swapmeta.c store_swapout.c structs.h tools.c typedefs.h \ - unlinkd.c url.c urn.c useragent.c wais.c wccp.c wccp2.c \ - whois.c win32.c -@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_FALSE@@USE_SELECT_WIN32_TRUE@am__objects_1 = comm_select_win32.$(OBJEXT) -@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_TRUE@am__objects_1 = comm_select.$(OBJEXT) + comm_poll.c comm_select_simple.c comm_select.c \ + comm_select_win32.c debug.c defines.h delay_pools.c disk.c \ + dns_internal.c dns.c enums.h errorpage.c event.c errormap.c \ + external_acl.c fd.c filemap.c forward.c fqdncache.c ftp.c \ + globals.h gopher.c helper.c htcp.c http.c HttpStatusLine.c \ + HttpHdrCc.c HttpHdrRange.c HttpHdrContRange.c HttpHeader.c \ + HttpHeaderTools.c HttpBody.c HttpMsg.c HttpReply.c \ + HttpRequest.c icmp.c icp_v2.c icp_v3.c ident.c internal.c \ + ipc.c ipc_win32.c ipcache.c leakfinder.c locrewrite.c \ + logfile.c main.c mem.c MemPool.c MemBuf.c mime.c multicast.c \ + neighbors.c net_db.c Packer.c pconn.c peer_digest.c \ + peer_monitor.c peer_select.c peer_sourcehash.c peer_userhash.c \ + protos.h redirect.c referer.c refresh.c send-announce.c \ + snmp_core.c snmp_agent.c squid.h ssl.c ssl_support.c stat.c \ + StatHist.c String.c stmem.c store.c store_io.c store_client.c \ + store_digest.c store_dir.c store_key_md5.c store_log.c \ + store_rebuild.c store_swapin.c store_swapmeta.c \ + store_swapout.c structs.h tools.c typedefs.h unlinkd.c url.c \ + urn.c useragent.c wais.c wccp.c wccp2.c whois.c win32.c +@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_FALSE@@USE_SELECT_SIMPLE_FALSE@@USE_SELECT_WIN32_TRUE@am__objects_1 = comm_select_win32.$(OBJEXT) +@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_SIMPLE_FALSE@@USE_SELECT_TRUE@am__objects_1 = comm_select.$(OBJEXT) +@USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_FALSE@@USE_SELECT_SIMPLE_TRUE@am__objects_1 = comm_select_simple.$(OBJEXT) @USE_EPOLL_FALSE@@USE_KQUEUE_FALSE@@USE_POLL_TRUE@am__objects_1 = comm_poll.$(OBJEXT) @USE_EPOLL_FALSE@@USE_KQUEUE_TRUE@am__objects_1 = \ @USE_EPOLL_FALSE@@USE_KQUEUE_TRUE@ comm_kqueue.$(OBJEXT) @@ -242,7 +243,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -326,6 +326,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ @@ -402,6 +404,7 @@ @USE_EPOLL_TRUE@COMMLOOP_SOURCE = comm_epoll.c @USE_KQUEUE_TRUE@COMMLOOP_SOURCE = comm_kqueue.c @USE_POLL_TRUE@COMMLOOP_SOURCE = comm_poll.c +@USE_SELECT_SIMPLE_TRUE@COMMLOOP_SOURCE = comm_select_simple.c @USE_SELECT_TRUE@COMMLOOP_SOURCE = comm_select.c @USE_SELECT_WIN32_TRUE@COMMLOOP_SOURCE = comm_select_win32.c SUBDIRS = fs repl auth @@ -425,6 +428,7 @@ comm_poll.c \ comm_select.c \ comm_select_win32.c \ + comm_select_simple.c \ comm_kqueue.c \ comm_generic.c \ ipc.c \ @@ -765,6 +769,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_kqueue.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_poll.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_select.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_select_simple.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm_select_win32.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/debug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/delay_pools.Po@am__quote@ diff -ruN squid-2.6.STABLE4/src/access_log.c squid-2.6.STABLE5/src/access_log.c --- squid-2.6.STABLE4/src/access_log.c Sat Sep 2 08:08:42 2006 +++ squid-2.6.STABLE5/src/access_log.c Thu Sep 28 15:55:37 2006 @@ -1,6 +1,6 @@ /* - * $Id: access_log.c,v 1.92 2006/09/02 14:08:42 hno Exp $ + * $Id: access_log.c,v 1.93 2006/09/28 21:55:37 hno Exp $ * * DEBUG: section 46 Access Log * AUTHOR: Duane Wessels @@ -1031,31 +1031,46 @@ #endif if (user && !*user) safe_free(user); - logfilePrintf(logfile, "%9ld.%03d %6d %s %s/%03d %" PRINTF_OFF_T " %s %s %s %s%s/%s %s", - (long int) current_time.tv_sec, - (int) current_time.tv_usec / 1000, - al->cache.msec, - client, - log_tags[al->cache.code], - al->http.code, - al->cache.size, - al->private.method_str, - al->url, - user ? user : dash_str, - al->hier.ping.timedout ? "TIMEOUT_" : "", - hier_strings[al->hier.code], - al->hier.host, - al->http.content_type); - safe_free(user); - if (Config.onoff.log_mime_hdrs) { + if (!Config.onoff.log_mime_hdrs) { + logfilePrintf(logfile, "%9ld.%03d %6d %s %s/%03d %" PRINTF_OFF_T " %s %s %s %s%s/%s %s\n", + (long int) current_time.tv_sec, + (int) current_time.tv_usec / 1000, + al->cache.msec, + client, + log_tags[al->cache.code], + al->http.code, + al->cache.size, + al->private.method_str, + al->url, + user ? user : dash_str, + al->hier.ping.timedout ? "TIMEOUT_" : "", + hier_strings[al->hier.code], + al->hier.host, + al->http.content_type); + } else { char *ereq = log_quote(al->headers.request); char *erep = log_quote(al->headers.reply); - logfilePrintf(logfile, " [%s] [%s]\n", ereq, erep); + logfilePrintf(logfile, "%9ld.%03d %6d %s %s/%03d %" PRINTF_OFF_T " %s %s %s %s%s/%s %s [%s] [%s]\n", + (long int) current_time.tv_sec, + (int) current_time.tv_usec / 1000, + al->cache.msec, + client, + log_tags[al->cache.code], + al->http.code, + al->cache.size, + al->private.method_str, + al->url, + user ? user : dash_str, + al->hier.ping.timedout ? "TIMEOUT_" : "", + hier_strings[al->hier.code], + al->hier.host, + al->http.content_type, + ereq, + erep); safe_free(ereq); safe_free(erep); - } else { - logfilePrintf(logfile, "\n"); } + safe_free(user); } static void diff -ruN squid-2.6.STABLE4/src/acl.c squid-2.6.STABLE5/src/acl.c --- squid-2.6.STABLE4/src/acl.c Fri Sep 22 04:44:24 2006 +++ squid-2.6.STABLE5/src/acl.c Mon Oct 16 14:11:41 2006 @@ -1,6 +1,6 @@ /* - * $Id: acl.c,v 1.314 2006/09/22 10:44:24 hno Exp $ + * $Id: acl.c,v 1.316 2006/10/16 20:11:41 serassio Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -623,7 +623,7 @@ } } else { /* assume its time-of-day spec */ - if ((sscanf(t, "%d:%d-%d:%d", &h1, &m1, &h2, &m2) < 4) || (!((h1 >= 0 && h1 < 24) && (h2 >= 0 && h2 < 24) && (m1 >= 0 && m1 < 60) && (m2 >= 0 && m2 < 60)))) { + if ((sscanf(t, "%d:%d-%d:%d", &h1, &m1, &h2, &m2) < 4) || (!((h1 >= 0 && h1 < 24) && ((h2 >= 0 && h2 < 24) || (h2 == 24 && m2 == 0)) && (m1 >= 0 && m1 < 60) && (m2 >= 0 && m2 < 60)))) { debug(28, 0) ("aclParseTimeSpec: ERROR: Bad time range '%s'\n", t); self_destruct(); } @@ -747,7 +747,7 @@ acl_hdr_data *q = *acldata; *acldata = q->next; if (q->reglist) - aclDestroyRegexList((*acldata)->reglist); + aclDestroyRegexList(q->reglist); safe_free(q); } } diff -ruN squid-2.6.STABLE4/src/auth/Makefile.in squid-2.6.STABLE5/src/auth/Makefile.in --- squid-2.6.STABLE4/src/auth/Makefile.in Fri Sep 22 03:09:49 2006 +++ squid-2.6.STABLE5/src/auth/Makefile.in Sun Oct 29 19:21:35 2006 @@ -123,7 +123,6 @@ ENABLE_UNLINKD_TRUE = @ENABLE_UNLINKD_TRUE@ ENABLE_WIN32SPECIFIC_FALSE = @ENABLE_WIN32SPECIFIC_FALSE@ ENABLE_WIN32SPECIFIC_TRUE = @ENABLE_WIN32SPECIFIC_TRUE@ -EPOLL_LIBS = @EPOLL_LIBS@ ERR_DEFAULT_LANGUAGE = @ERR_DEFAULT_LANGUAGE@ ERR_LANGUAGES = @ERR_LANGUAGES@ EXEEXT = @EXEEXT@ @@ -207,6 +206,8 @@ USE_POLL_FALSE = @USE_POLL_FALSE@ USE_POLL_TRUE = @USE_POLL_TRUE@ USE_SELECT_FALSE = @USE_SELECT_FALSE@ +USE_SELECT_SIMPLE_FALSE = @USE_SELECT_SIMPLE_FALSE@ +USE_SELECT_SIMPLE_TRUE = @USE_SELECT_SIMPLE_TRUE@ USE_SELECT_TRUE = @USE_SELECT_TRUE@ USE_SELECT_WIN32_FALSE = @USE_SELECT_WIN32_FALSE@ USE_SELECT_WIN32_TRUE = @USE_SELECT_WIN32_TRUE@ @@ -258,7 +259,7 @@ # Makefile for authentication modules in the Squid Object Cache server # -# $Id: Makefile.in,v 1.35 2006/09/22 09:09:49 hno Exp $ +# $Id: Makefile.in,v 1.37 2006/10/30 02:21:35 hno Exp $ # AUTOMAKE_OPTIONS = subdir-objects EXTRA_LIBRARIES = libbasic.a libdigest.a libntlm.a libnegotiate.a diff -ruN squid-2.6.STABLE4/src/cache_cf.c squid-2.6.STABLE5/src/cache_cf.c --- squid-2.6.STABLE4/src/cache_cf.c Fri Sep 22 04:47:04 2006 +++ squid-2.6.STABLE5/src/cache_cf.c Sat Sep 30 15:01:08 2006 @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.c,v 1.457 2006/09/22 10:47:04 hno Exp $ + * $Id: cache_cf.c,v 1.458 2006/09/30 21:01:08 hno Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -277,6 +277,15 @@ return i; } +static u_short +GetShort(void) +{ + char *token = strtok(NULL, w_space); + if (token == NULL) + self_destruct(); + return xatos(token); +} + static squid_off_t GetOffT(void) { @@ -1583,7 +1592,6 @@ { char *token = NULL; peer *p; - int i; p = cbdataAlloc(peer); p->http_port = CACHE_HTTP_PORT; p->icp.port = CACHE_ICP_PORT; @@ -1597,10 +1605,10 @@ if ((token = strtok(NULL, w_space)) == NULL) self_destruct(); p->type = parseNeighborType(token); - i = GetInteger(); - p->http_port = (u_short) i; - i = GetInteger(); - p->icp.port = (u_short) i; + p->http_port = GetShort(); + if (!p->http_port) + self_destruct(); + p->icp.port = GetShort(); p->connection_auth = -1; /* auto */ while ((token = strtok(NULL, w_space))) { if (!strcasecmp(token, "proxy-only")) { @@ -1979,16 +1987,13 @@ parse_ushortlist(ushortlist ** P) { char *token; - int i; + u_short i; ushortlist *u; ushortlist **U; while ((token = strtok(NULL, w_space))) { - if (sscanf(token, "%d", &i) != 1) - self_destruct(); - if (i < 0) - i = 0; + i = GetShort(); u = xcalloc(1, sizeof(ushortlist)); - u->i = (u_short) i; + u->i = i; for (U = P; *U; U = &(*U)->next); *U = u; } @@ -2413,12 +2418,7 @@ static void parse_ushort(u_short * var) { - int i; - - i = GetInteger(); - if (i < 0) - i = 0; - *var = (u_short) i; + *var = GetShort(); } static void diff -ruN squid-2.6.STABLE4/src/cf.data.pre squid-2.6.STABLE5/src/cf.data.pre --- squid-2.6.STABLE4/src/cf.data.pre Fri Sep 22 00:36:51 2006 +++ squid-2.6.STABLE5/src/cf.data.pre Thu Oct 12 14:48:48 2006 @@ -1,6 +1,6 @@ # -# $Id: cf.data.pre,v 1.371 2006/09/22 06:36:51 swilton Exp $ +# $Id: cf.data.pre,v 1.374 2006/10/12 20:48:48 wessels Exp $ # # # SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -1062,10 +1062,13 @@ see the --enable-storeio configure option. 'Directory' is a top-level directory where cache swap - files will be stored. If you want to use an entire disk + files will be stored. If you want to use an entire disk for caching, this can be the mount-point directory. The directory must exist and be writable by the Squid - process. Squid will NOT create this directory for you. + process. Squid will NOT create this directory for you. + Only using COSS, a raw disk device or a stripe file can + be specified, but the configuration of the "cache_wap_log" + tag is mandatory. The ufs store type: @@ -2120,9 +2123,9 @@ as ttl) children=n number of processes spawn to service external acl lookups of this type. - Note: see compatibility note below concurrency=n concurrency level per process. Use 0 for simple helpers who can only process a single request at a time. + Note: see compatibility note below cache=n result cache size, 0 is unbounded (default) grace= Percentage remaining of TTL where a refresh of a cached entry should be initiated without needing to @@ -2186,13 +2189,10 @@ of the above described quoting format. Compatibility Note: The children= option was named concurrency= in - Squid-2.5.STABLE3 and earlier and such syntax is still accepted to - keep compatibility within the Squid-2.5 release. However, the meaning - of concurrency= option has changed in Squid-3 and the old syntax of - the directive is therefore deprecated from Squid-2.5.STABLE4 and later. - If you want to be able to easily downgrade to earlier Squid-2.5 - releases you may want to continue using the old name, if not - please use the new name. + Squid-2.5.STABLE3 and earlier, and was accepted as an alias for the + duration of the Squid-2.5 releases to keep compatibility. However, + the meaning of concurrency= option has changed in Squid-2.6 to match + that of Squid-3 and the old syntax no longer works. DOC_END COMMENT_START @@ -2801,10 +2801,10 @@ acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 -acl SSL_ports port 443 563 +acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp -acl Safe_ports port 443 563 # https, snews +acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports diff -ruN squid-2.6.STABLE4/src/client_side.c squid-2.6.STABLE5/src/client_side.c --- squid-2.6.STABLE4/src/client_side.c Fri Sep 22 03:47:55 2006 +++ squid-2.6.STABLE5/src/client_side.c Sat Sep 30 15:10:48 2006 @@ -1,6 +1,6 @@ /* - * $Id: client_side.c,v 1.678 2006/09/22 09:47:55 hno Exp $ + * $Id: client_side.c,v 1.680 2006/09/30 21:10:48 hno Exp $ * * DEBUG: section 33 Client-side Routines * AUTHOR: Duane Wessels @@ -2154,6 +2154,14 @@ debug(33, 2) ("clientProcessHit: Vary detected!\n"); return; } + case VARY_RESTART: + /* Used on collapsed requests when the main request wasn't + * compatible. Resart processing from the beginning. + */ + safe_free(r->vary_hdr); + safe_free(r->vary_headers); + clientProcessRequest(http); + return; case VARY_CANCEL: /* varyEvaluateMatch found a object loop. Process as miss */ debug(33, 1) ("clientProcessHit: Vary object loop!\n"); @@ -2180,6 +2188,7 @@ http->log_type = LOG_TCP_NEGATIVE_HIT; clientSendMoreHeaderData(data, buf, size); } else { + memFree(buf, MEM_CLIENT_SOCK_BUF); http->log_type = LOG_TCP_MISS; clientProcessMiss(http); } @@ -3306,6 +3315,9 @@ http->entry = NULL; return LOG_TCP_MISS; } + if (EBIT_TEST(e->flags, KEY_EARLY_PUBLIC)) { + r->flags.collapsed = 1; /* Don't trust the store entry */ + } if (EBIT_TEST(e->flags, ENTRY_SPECIAL)) { /* Special entries are always hits, no matter what the client says */ debug(33, 3) ("clientProcessRequest2: ENTRY_SPECIAL HIT\n"); @@ -3349,6 +3361,7 @@ debug(33, 4) ("clientProcessRequest: %s '%s'\n", RequestMethodStr[r->method], url); + r->flags.collapsed = 0; if (r->method == METHOD_CONNECT && !http->redirect.status) { http->log_type = LOG_TCP_MISS; #if USE_SSL && SSL_CONNECT_INTERCEPT @@ -3483,6 +3496,15 @@ 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)) { http->entry->mem_obj->refresh_timestamp = squid_curtime; + /* Set the vary object state */ + safe_free(http->entry->mem_obj->vary_headers); + if (r->vary_headers) + http->entry->mem_obj->vary_headers = xstrdup(r->vary_headers); + safe_free(http->entry->mem_obj->vary_encoding); + if (strBuf(r->vary_encoding)) + http->entry->mem_obj->vary_encoding = xstrdup(strBuf(r->vary_encoding)); + http->entry->mem_obj->request = requestLink(r); + EBIT_SET(http->entry->flags, KEY_EARLY_PUBLIC); storeSetPublicKey(http->entry); } fwdStart(http->conn->fd, http->entry, r); @@ -4983,6 +5005,10 @@ /* Ouch.. we cannot handle this kind of variance */ /* XXX This cannot really happen, but just to be complete */ return VARY_CANCEL; + } else if (request->flags.collapsed) { + /* This request was merged before we knew the outcome. Don't trust the response */ + /* restart vary processing from the beginning */ + return VARY_RESTART; } else { return VARY_MATCH; } diff -ruN squid-2.6.STABLE4/src/comm.c squid-2.6.STABLE5/src/comm.c --- squid-2.6.STABLE4/src/comm.c Sat Sep 9 06:45:06 2006 +++ squid-2.6.STABLE5/src/comm.c Mon Oct 23 05:22:21 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm.c,v 1.357 2006/09/09 12:45:06 serassio Exp $ + * $Id: comm.c,v 1.358 2006/10/23 11:22:21 hno Exp $ * * DEBUG: section 5 Socket Functions * AUTHOR: Harvest Derived @@ -1036,8 +1036,7 @@ void comm_init(void) { - fd_table = xcalloc(Squid_MaxFD, sizeof(fde)); - /* XXX account fd_table */ + fd_init(); /* Keep a few file descriptors free so that we don't run out of FD's * after accepting a client but before it opens a socket or a file. * Since Squid_MaxFD can be as high as several thousand, don't waste them */ diff -ruN squid-2.6.STABLE4/src/comm_epoll.c squid-2.6.STABLE5/src/comm_epoll.c --- squid-2.6.STABLE4/src/comm_epoll.c Tue Aug 15 13:27:28 2006 +++ squid-2.6.STABLE5/src/comm_epoll.c Mon Oct 23 05:22:21 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm_epoll.c,v 1.26 2006/08/15 19:27:28 hno Exp $ + * $Id: comm_epoll.c,v 1.27 2006/10/23 11:22:21 hno Exp $ * * DEBUG: section 5 Socket Functions * @@ -65,8 +65,8 @@ } } -void -comm_select_init() +static void +do_select_init() { kdpfd = epoll_create(Squid_MaxFD); if (kdpfd < 0) @@ -83,8 +83,8 @@ debug(5, 1) ("Using epoll for the IO loop\n"); } -void -comm_select_shutdown() +static void +do_select_shutdown() { fd_close(kdpfd); close(kdpfd); @@ -153,37 +153,20 @@ } } -int -comm_select(int msec) +static int +do_comm_select(int msec) { - static time_t last_timeout = 0; int i; int num; int fd; struct epoll_event *cevents; - double start = current_dtime; - - if (msec > MAX_POLL_TIME) - msec = MAX_POLL_TIME; - - debug(5, 3) ("comm_select: timeout %d\n", msec); if (epoll_fds == 0) { assert(shutting_down); return COMM_SHUTDOWN; } - /* Check for disk io callbacks */ - storeDirCallback(); - - /* Check timeouts once per second */ - if (last_timeout != squid_curtime) { - last_timeout = squid_curtime; - checkTimeouts(); - } statCounter.syscalls.polls++; num = epoll_wait(kdpfd, events, MAX_EVENTS, msec); - statCounter.select_loops++; - if (num < 0) { getCurrentTime(); if (ignoreErrno(errno)) @@ -194,17 +177,13 @@ } statHistCount(&statCounter.select_fds_hist, num); - if (num > 0) { - for (i = 0, cevents = events; i < num; i++, cevents++) { - fd = cevents->data.fd; - comm_call_handlers(fd, cevents->events & ~EPOLLOUT, cevents->events & ~EPOLLIN); - } - getCurrentTime(); - statCounter.select_time += (current_dtime - start); - return COMM_OK; - } else { - getCurrentTime(); - debug(5, 8) ("comm_select: time out: %ld.\n", (long int) squid_curtime); + if (num == 0) return COMM_TIMEOUT; + + for (i = 0, cevents = events; i < num; i++, cevents++) { + fd = cevents->data.fd; + comm_call_handlers(fd, cevents->events & ~EPOLLOUT, cevents->events & ~EPOLLIN); } + + return COMM_OK; } diff -ruN squid-2.6.STABLE4/src/comm_generic.c squid-2.6.STABLE5/src/comm_generic.c --- squid-2.6.STABLE4/src/comm_generic.c Tue Jun 27 05:14:22 2006 +++ squid-2.6.STABLE5/src/comm_generic.c Tue Oct 31 11:25:15 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm_generic.c,v 1.5 2006/06/27 11:14:22 hno Exp $ + * $Id: comm_generic.c,v 1.8 2006/10/31 18:25:15 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -39,6 +39,33 @@ static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */ +#if DELAY_POOLS +static int *slow_fds = NULL; +static int n_slow_fds = 0; +#endif + +static void do_select_init(void); + +void +comm_select_init(void) +{ +#if DELAY_POOLS + slow_fds = xmalloc(sizeof(int) * Squid_MaxFD); +#endif + do_select_init(); +} + +static void do_select_shutdown(void); + +void +comm_select_shutdown(void) +{ + do_select_shutdown(); +#if DELAY_POOLS + safe_free(slow_fds); +#endif +} + /* Defer reads from this fd */ void commDeferFD(int fd) @@ -84,10 +111,114 @@ return F->defer_check(fd, F->defer_data); } +#if DELAY_POOLS +static void +commAddSlow(int fd) +{ + fde *F = &fd_table[fd]; + if (F->slow_id) + return; + F->slow_id = ++n_slow_fds; + assert(n_slow_fds < Squid_MaxFD); + slow_fds[n_slow_fds] = fd; +} + +void +commRemoveSlow(int fd) +{ + int fd2; + fde *F = &fd_table[fd]; + if (!F->slow_id) + return; + fd2 = slow_fds[n_slow_fds--]; + if (F->slow_id <= n_slow_fds) { + fde *F2; + slow_fds[F->slow_id] = fd2; + F2 = &fd_table[fd2]; + F2->slow_id = F->slow_id; + } + F->slow_id = 0; +} +#endif + +static int comm_select_handled; + +static inline int do_comm_select(int msec); + +static inline void comm_call_handlers(int fd, int read_event, int write_event); + +static inline void +do_call_incoming(int fd) +{ + fde *F = &fd_table[fd]; + if (!F->flags.backoff) + comm_call_handlers(fd, -1, -1); +} + static void +do_check_incoming(void) +{ + int i; + for (i = 0; i < NHttpSockets; i++) + do_call_incoming(HttpSockets[i]); + if (theInIcpConnection >= 0) + do_call_incoming(theInIcpConnection); + if (theOutIcpConnection != theInIcpConnection) + do_call_incoming(theOutIcpConnection); +} + +static inline void +check_incoming(void) +{ + comm_select_handled++; + if (comm_select_handled > 30 && comm_select_handled > NHttpSockets << 2) { + comm_select_handled = 0; + do_check_incoming(); + } +} + +#if DELAY_POOLS +static void +comm_call_slowfds(void) +{ + while (n_slow_fds) { + int i = (squid_random() % n_slow_fds) + 1; + int fd = slow_fds[i]; + fde *F = &fd_table[fd]; + commRemoveSlow(fd); + if (F->read_handler) { + PF *hdl = F->read_handler; + void *hdl_data = F->read_data; + debug(5, 8) ("comm_call_handlers(): Calling read handler on fd=%d\n", fd); +#if SIMPLE_COMM_HANDLER + commUpdateReadHandler(fd, NULL, NULL); + commResumeFD(fd); + hdl(fd, hdl_data); +#else + /* Optimized version to avoid the fd bouncing in/out of the waited set */ + F->read_handler = NULL; + F->read_data = NULL; + F->read_pending = COMM_PENDING_NORMAL; + hdl(fd, hdl_data); + /* backoff check is for delayed connections kicked alive from checkTimeouts */ + if (F->flags.open && (!F->read_handler || F->flags.backoff)) { + if (F->flags.backoff && commDeferRead(fd) != 1) + F->flags.backoff = 0; + commUpdateEvents(fd); + } +#endif + statCounter.select_fds++; + check_incoming(); + } + } +} +#endif + +static inline void comm_call_handlers(int fd, int read_event, int write_event) { fde *F = &fd_table[fd]; + const int do_incoming = read_event == 1 || write_event == 1; debug(5, 8) ("comm_call_handlers(): got fd=%d read_event=%x write_event=%x F->read_handler=%p F->write_handler=%p\n" ,fd, read_event, write_event, F->read_handler, F->write_handler); if (F->read_handler) { @@ -109,13 +240,18 @@ void *hdl_data = F->read_data; /* If the descriptor is meant to be deferred, don't handle */ switch (commDeferRead(fd)) { - case 1: +#if DELAY_POOLS + case -1: + commAddSlow(fd); + break; +#endif + default: if (!(F->flags.backoff)) { debug(5, 1) ("comm_call_handlers(): WARNING defer handler for fd=%d (desc=%s) does not call commDeferFD() - backing off manually\n", fd, F->desc); commDeferFD(fd); } break; - default: + case 0: debug(5, 8) ("comm_call_handlers(): Calling read handler on fd=%d\n", fd); #if SIMPLE_COMM_HANDLER commUpdateReadHandler(fd, NULL, NULL); @@ -130,6 +266,9 @@ commUpdateEvents(fd); #endif statCounter.select_fds++; + if (do_incoming) + check_incoming(); + break; } } } @@ -163,6 +302,8 @@ commUpdateEvents(fd); #endif statCounter.select_fds++; + if (do_incoming) + check_incoming(); } } } @@ -173,17 +314,32 @@ int fd; fde *F = NULL; PF *callback; +#if DELAY_POOLS + delayPoolsUpdate(NULL); +#endif for (fd = 0; fd <= Biggest_FD; fd++) { F = &fd_table[fd]; if (!F->flags.open) continue; - if (F->flags.backoff) - commResumeFD(fd); + if (F->flags.backoff) { + switch (commDeferRead(fd)) { + case 0: + commResumeFD(fd); + break; +#if DELAY_POOLS + case -1: + commAddSlow(fd); + break; +#endif + } + } if (F->timeout == 0) continue; if (F->timeout > squid_curtime) continue; debug(5, 5) ("checkTimeouts: FD %d Expired\n", fd); + if (F->flags.backoff) + commResumeFD(fd); if (F->timeout_handler) { debug(5, 5) ("checkTimeouts: FD %d: Call timeout handler\n", fd); callback = F->timeout_handler; @@ -196,6 +352,50 @@ } } + +int +comm_select(int msec) +{ + static time_t last_timeout = 0; + int rc; + double start = current_dtime; + + debug(5, 3) ("comm_select: timeout %d\n", msec); + + if (msec > MAX_POLL_TIME) + msec = MAX_POLL_TIME; + +#if DELAY_POOLS + /* We have delayed fds in queue? */ + if (n_slow_fds) + msec = 0; +#endif + + statCounter.select_loops++; + + /* Check for disk io callbacks */ + storeDirCallback(); + + /* Check timeouts once per second */ + if (last_timeout != squid_curtime) { + last_timeout = squid_curtime; + checkTimeouts(); + } + comm_select_handled = 0; + + rc = do_comm_select(msec); + +#if DELAY_POOLS + comm_call_slowfds(); +#endif + getCurrentTime(); + statCounter.select_time += (current_dtime - start); + + if (rc == COMM_TIMEOUT) + debug(5, 8) ("comm_select: time out\n"); + + return rc; +} /* Called by async-io or diskd to speed up the polling */ void diff -ruN squid-2.6.STABLE4/src/comm_kqueue.c squid-2.6.STABLE5/src/comm_kqueue.c --- squid-2.6.STABLE4/src/comm_kqueue.c Tue Aug 15 13:27:28 2006 +++ squid-2.6.STABLE5/src/comm_kqueue.c Mon Oct 23 05:22:21 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm_kqueue.c,v 1.9 2006/08/15 19:27:28 hno Exp $ + * $Id: comm_kqueue.c,v 1.10 2006/10/23 11:22:21 hno Exp $ * * DEBUG: section 5 Socket Functions * @@ -50,8 +50,8 @@ static int kqoff; /* offset into the buffer */ static unsigned *kqueue_state; /* keep track of the kqueue state */ -void -comm_select_init() +static void +do_select_init() { kq = kqueue(); if (kq < 0) @@ -71,8 +71,8 @@ debug(5, 1) ("Using kqueue for the IO loop\n"); } -void -comm_select_shutdown() +static void +do_select_shutdown() { fd_close(kq); close(kq); @@ -123,37 +123,20 @@ } } -int -comm_select(int msec) +static int +do_comm_select(int msec) { - static time_t last_timeout = 0; int i; int num; - double start = current_dtime; static struct kevent ke[KE_LENGTH]; struct timespec timeout; - if (msec > MAX_POLL_TIME) - msec = MAX_POLL_TIME; - timeout.tv_sec = msec / 1000; timeout.tv_nsec = (msec % 1000) * 1000000; - debug(5, 3) ("comm_select: timeout %d\n", msec); - - /* Check for disk io callbacks */ - storeDirCallback(); - - /* Check timeouts once per second */ - if (last_timeout != squid_curtime) { - last_timeout = squid_curtime; - checkTimeouts(); - } statCounter.syscalls.polls++; num = kevent(kq, kqlst, kqoff, ke, KE_LENGTH, &timeout); - statCounter.select_loops++; kqoff = 0; - if (num < 0) { getCurrentTime(); if (ignoreErrno(errno)) @@ -162,11 +145,9 @@ debug(5, 1) ("comm_select: kevent failure: %s\n", xstrerror()); return COMM_ERROR; } - if (num == 0) { - getCurrentTime(); - return COMM_TIMEOUT; - } statHistCount(&statCounter.select_fds_hist, num); + if (num == 0) + return COMM_TIMEOUT; for (i = 0; i < num; i++) { int fd = (int) ke[i].ident; @@ -190,7 +171,5 @@ } } - getCurrentTime(); - statCounter.select_time += (current_dtime - start); return COMM_OK; } diff -ruN squid-2.6.STABLE4/src/comm_poll.c squid-2.6.STABLE5/src/comm_poll.c --- squid-2.6.STABLE4/src/comm_poll.c Tue Aug 15 13:27:28 2006 +++ squid-2.6.STABLE5/src/comm_poll.c Fri Oct 27 18:34:54 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm_poll.c,v 1.21 2006/08/15 19:27:28 hno Exp $ + * $Id: comm_poll.c,v 1.23 2006/10/28 00:34:54 hno Exp $ * * DEBUG: section 5 Socket Functions * @@ -33,6 +33,7 @@ */ #include "squid.h" +#include "comm_generic.c" #if HAVE_SYS_POLL_H #include @@ -40,539 +41,19 @@ #include #endif -static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */ - -/* STATIC */ -static int fdIsHttp(int fd); -static int fdIsIcp(int fd); -static int fdIsDns(int fd); -static int commDeferRead(int fd); -static void checkTimeouts(void); -static OBJH commIncomingStats; -static int comm_check_incoming_poll_handlers(int nfds, int *fds); -static void comm_poll_dns_incoming(void); - -/* - * Automatic tuning for incoming requests: - * - * INCOMING sockets are the ICP and HTTP ports. We need to check these - * fairly regularly, but how often? When the load increases, we - * want to check the incoming sockets more often. If we have a lot - * of incoming ICP, then we need to check these sockets more than - * if we just have HTTP. - * - * The variables 'incoming_icp_interval' and 'incoming_http_interval' - * determine how many normal I/O events to process before checking - * incoming sockets again. Note we store the incoming_interval - * multipled by a factor of (2^INCOMING_FACTOR) to have some - * pseudo-floating point precision. - * - * The variable 'icp_io_events' and 'http_io_events' counts how many normal - * I/O events have been processed since the last check on the incoming - * sockets. When io_events > incoming_interval, its time to check incoming - * sockets. - * - * Every time we check incoming sockets, we count how many new messages - * or connections were processed. This is used to adjust the - * incoming_interval for the next iteration. The new incoming_interval - * is calculated as the current incoming_interval plus what we would - * like to see as an average number of events minus the number of - * events just processed. - * - * incoming_interval = incoming_interval + target_average - number_of_events_processed - * - * There are separate incoming_interval counters for both HTTP and ICP events - * - * You can see the current values of the incoming_interval's, as well as - * a histogram of 'incoming_events' by asking the cache manager - * for 'comm_incoming', e.g.: - * - * % ./client mgr:comm_incoming - * - * Caveats: - * - * - We have MAX_INCOMING_INTEGER as a magic upper limit on - * incoming_interval for both types of sockets. At the - * largest value the cache will effectively be idling. - * - * - The higher the INCOMING_FACTOR, the slower the algorithm will - * respond to load spikes/increases/decreases in demand. A value - * between 3 and 8 is recommended. - */ - -#define MAX_INCOMING_INTEGER 256 -#define INCOMING_FACTOR 5 -#define MAX_INCOMING_INTERVAL (MAX_INCOMING_INTEGER << INCOMING_FACTOR) -static int icp_io_events = 0; -static int dns_io_events = 0; -static int http_io_events = 0; -static int incoming_icp_interval = 16 << INCOMING_FACTOR; -static int incoming_dns_interval = 16 << INCOMING_FACTOR; -static int incoming_http_interval = 16 << INCOMING_FACTOR; -#define commCheckICPIncoming (++icp_io_events > (incoming_icp_interval>> INCOMING_FACTOR)) -#define commCheckDNSIncoming (++dns_io_events > (incoming_dns_interval>> INCOMING_FACTOR)) -#define commCheckHTTPIncoming (++http_io_events > (incoming_http_interval>> INCOMING_FACTOR)) - -static int -fdIsIcp(int fd) -{ - if (fd == theInIcpConnection) - return 1; - if (fd == theOutIcpConnection) - return 1; - return 0; -} - -static int -fdIsDns(int fd) -{ - if (fd == DnsSocket) - return 1; - return 0; -} - -static int -fdIsHttp(int fd) -{ - int j; - for (j = 0; j < NHttpSockets; j++) { - if (fd == HttpSockets[j]) - return 1; - } - return 0; -} - -#if DELAY_POOLS -static int slowfdcnt = 0; -static int slowfdarr[SQUID_MAXFD]; +static struct pollfd *pfds; +static int *pfd_map; +static int nfds = 0; static void -commAddSlowFd(int fd) -{ - assert(slowfdcnt < SQUID_MAXFD); - slowfdarr[slowfdcnt++] = fd; -} - -static int -commGetSlowFd(void) -{ - int whichfd, retfd; - - if (!slowfdcnt) - return -1; - whichfd = squid_random() % slowfdcnt; - retfd = slowfdarr[whichfd]; - slowfdarr[whichfd] = slowfdarr[--slowfdcnt]; - return retfd; -} -#endif - -static int -comm_check_incoming_poll_handlers(int nfds, int *fds) +do_select_init() { int i; - int fd; - PF *hdl = NULL; - int npfds; - struct pollfd pfds[3 + MAXHTTPPORTS]; - incoming_sockets_accepted = 0; - for (i = npfds = 0; i < nfds; i++) { - int events; - fd = fds[i]; - events = 0; - if (fd_table[fd].read_handler) - events |= POLLRDNORM; - if (fd_table[fd].write_handler) - events |= POLLWRNORM; - if (events) { - pfds[npfds].fd = fd; - pfds[npfds].events = events; - pfds[npfds].revents = 0; - npfds++; - } + pfds = xcalloc(sizeof(*pfds), Squid_MaxFD); + pfd_map = xcalloc(sizeof(*pfd_map), Squid_MaxFD); + for (i = 0; i < Squid_MaxFD; i++) { + pfd_map[i] = -1; } - if (!nfds) - return -1; - getCurrentTime(); - statCounter.syscalls.polls++; - if (poll(pfds, npfds, 0) < 1) - return incoming_sockets_accepted; - for (i = 0; i < npfds; i++) { - int revents; - if (((revents = pfds[i].revents) == 0) || ((fd = pfds[i].fd) == -1)) - continue; - if (revents & (POLLRDNORM | POLLIN | POLLHUP | POLLERR)) { - if ((hdl = fd_table[fd].read_handler)) { - fd_table[fd].read_handler = NULL; - hdl(fd, fd_table[fd].read_data); - } else if (pfds[i].events & POLLRDNORM) - debug(5, 1) ("comm_poll_incoming: FD %d NULL read handler\n", - fd); - } - if (revents & (POLLWRNORM | POLLOUT | POLLHUP | POLLERR)) { - if ((hdl = fd_table[fd].write_handler)) { - fd_table[fd].write_handler = NULL; - hdl(fd, fd_table[fd].write_data); - } else if (pfds[i].events & POLLWRNORM) - debug(5, 1) ("comm_poll_incoming: FD %d NULL write_handler\n", - fd); - } - } - return incoming_sockets_accepted; -} - -static void -comm_poll_icp_incoming(void) -{ - int nfds = 0; - int fds[2]; - int nevents; - icp_io_events = 0; - if (theInIcpConnection >= 0) - fds[nfds++] = theInIcpConnection; - if (theInIcpConnection != theOutIcpConnection) - if (theOutIcpConnection >= 0) - fds[nfds++] = theOutIcpConnection; - if (nfds == 0) - return; - nevents = comm_check_incoming_poll_handlers(nfds, fds); - incoming_icp_interval += Config.comm_incoming.icp_average - nevents; - if (incoming_icp_interval < Config.comm_incoming.icp_min_poll) - incoming_icp_interval = Config.comm_incoming.icp_min_poll; - if (incoming_icp_interval > MAX_INCOMING_INTERVAL) - incoming_icp_interval = MAX_INCOMING_INTERVAL; - if (nevents > INCOMING_ICP_MAX) - nevents = INCOMING_ICP_MAX; - statHistCount(&statCounter.comm_icp_incoming, nevents); -} - -static void -comm_poll_http_incoming(void) -{ - int nfds = 0; - int fds[MAXHTTPPORTS]; - int j; - int nevents; - http_io_events = 0; - for (j = 0; j < NHttpSockets; j++) { - if (HttpSockets[j] < 0) - continue; - if (commDeferRead(HttpSockets[j])) - continue; - fds[nfds++] = HttpSockets[j]; - } - nevents = comm_check_incoming_poll_handlers(nfds, fds); - incoming_http_interval = incoming_http_interval - + Config.comm_incoming.http_average - nevents; - if (incoming_http_interval < Config.comm_incoming.http_min_poll) - incoming_http_interval = Config.comm_incoming.http_min_poll; - if (incoming_http_interval > MAX_INCOMING_INTERVAL) - incoming_http_interval = MAX_INCOMING_INTERVAL; - if (nevents > INCOMING_HTTP_MAX) - nevents = INCOMING_HTTP_MAX; - statHistCount(&statCounter.comm_http_incoming, nevents); -} - -/* poll all sockets; call handlers for those that are ready. */ -int -comm_select(int msec) -{ - struct pollfd pfds[SQUID_MAXFD]; -#if DELAY_POOLS - char slowfds[SQUID_MAXFD]; -#endif - int fd; - unsigned int i; - unsigned int maxfd; - unsigned int nfds; - unsigned int npending; - int num; - int callicp = 0, callhttp = 0; - int calldns = 0; - static time_t last_timeout = 0; - double timeout = current_dtime + (msec / 1000.0); - do { - double start; - getCurrentTime(); - start = current_dtime; - /* Handle any fs callbacks that need doing */ - storeDirCallback(); -#if DELAY_POOLS - memset(slowfds, 0, Biggest_FD); -#endif - if (commCheckICPIncoming) - comm_poll_icp_incoming(); - if (commCheckDNSIncoming) - comm_poll_dns_incoming(); - if (commCheckHTTPIncoming) - comm_poll_http_incoming(); - callicp = calldns = callhttp = 0; - nfds = 0; - npending = 0; - maxfd = Biggest_FD + 1; - for (i = 0; i < maxfd; i++) { - int events; - events = 0; - /* Check each open socket for a handler. */ - if (fd_table[i].read_handler) { - int dopoll = 1; - switch (commDeferRead(i)) { - case 0: - break; - case 1: - dopoll = 0; - break; -#if DELAY_POOLS - case -1: - slowfds[i] = 1; - break; -#endif - default: - fatalf("bad return value from commDeferRead(FD %d)\n", i); - /* NOTREACHED */ - } - if (dopoll) { - switch (fd_table[i].read_pending) { - case COMM_PENDING_NORMAL: - events |= POLLRDNORM; - break; - case COMM_PENDING_WANTS_WRITE: - events |= POLLWRNORM; - break; - case COMM_PENDING_WANTS_READ: - events |= POLLRDNORM; - break; - case COMM_PENDING_NOW: - events |= POLLRDNORM; - npending++; - break; - } - } - } - if (fd_table[i].write_handler) { - switch (fd_table[i].write_pending) { - case COMM_PENDING_NORMAL: - events |= POLLWRNORM; - break; - case COMM_PENDING_WANTS_WRITE: - events |= POLLWRNORM; - break; - case COMM_PENDING_WANTS_READ: - events |= POLLRDNORM; - break; - case COMM_PENDING_NOW: - events |= POLLWRNORM; - npending++; - break; - } - } - if (events) { - pfds[nfds].fd = i; - pfds[nfds].events = events; - pfds[nfds].revents = 0; - nfds++; - } - } - if (nfds == 0) { - assert(shutting_down); - return COMM_SHUTDOWN; - } - if (npending) - msec = 0; - if (msec > MAX_POLL_TIME) - msec = MAX_POLL_TIME; - statCounter.syscalls.polls++; - num = poll(pfds, nfds, msec); - statCounter.select_loops++; - if (num < 0 && !ignoreErrno(errno)) { - debug(5, 0) ("comm_select: poll failure: %s\n", xstrerror()); - assert(errno != EINVAL); - return COMM_ERROR; - /* NOTREACHED */ - } - debug(5, num ? 5 : 8) ("comm_select: %d+%u FDs ready\n", num, npending); - statHistCount(&statCounter.select_fds_hist, num); - /* Check timeout handlers ONCE each second. */ - if (squid_curtime > last_timeout) { - last_timeout = squid_curtime; - checkTimeouts(); - } - if (num <= 0 && npending == 0) - continue; - /* scan each socket but the accept socket. Poll this - * more frequently to minimize losses due to the 5 connect - * limit in SunOS */ - for (i = 0; i < nfds; i++) { - fde *F; - int revents = pfds[i].revents; - fd = pfds[i].fd; - if (fd == -1) - continue; - switch (fd_table[fd].read_pending) { - case COMM_PENDING_NORMAL: - case COMM_PENDING_WANTS_READ: - break; - case COMM_PENDING_WANTS_WRITE: - if (pfds[i].revents & (POLLOUT | POLLWRNORM)) - revents |= POLLIN; - break; - case COMM_PENDING_NOW: - revents |= POLLIN; - break; - } - switch (fd_table[fd].write_pending) { - case COMM_PENDING_NORMAL: - case COMM_PENDING_WANTS_WRITE: - break; - case COMM_PENDING_WANTS_READ: - if (pfds[i].revents & (POLLIN | POLLRDNORM)) - revents |= POLLOUT; - break; - case COMM_PENDING_NOW: - revents |= POLLOUT; - break; - } - if (revents == 0) - continue; - if (fdIsIcp(fd)) { - callicp = 1; - continue; - } - if (fdIsDns(fd)) { - calldns = 1; - continue; - } - if (fdIsHttp(fd)) { - callhttp = 1; - continue; - } - F = &fd_table[fd]; - if (revents & (POLLRDNORM | POLLIN | POLLHUP | POLLERR)) { - PF *hdl = F->read_handler; - debug(5, 6) ("comm_select: FD %d ready for reading\n", fd); - if (hdl == NULL) - (void) 0; /* Nothing to do */ -#if DELAY_POOLS - else if (slowfds[i]) - commAddSlowFd(fd); -#endif - else { - F->read_handler = NULL; - F->read_pending = COMM_PENDING_NORMAL; - hdl(fd, F->read_data); - statCounter.select_fds++; - if (commCheckICPIncoming) - comm_poll_icp_incoming(); - if (commCheckDNSIncoming) - comm_poll_dns_incoming(); - if (commCheckHTTPIncoming) - comm_poll_http_incoming(); - } - } - if (revents & (POLLWRNORM | POLLOUT | POLLHUP | POLLERR)) { - PF *hdl = F->write_handler; - debug(5, 5) ("comm_select: FD %d ready for writing\n", fd); - if (hdl != NULL) { - F->write_handler = NULL; - F->write_pending = COMM_PENDING_NORMAL; - hdl(fd, F->write_data); - statCounter.select_fds++; - if (commCheckICPIncoming) - comm_poll_icp_incoming(); - if (commCheckDNSIncoming) - comm_poll_dns_incoming(); - if (commCheckHTTPIncoming) - comm_poll_http_incoming(); - } - } - if (revents & POLLNVAL) { - close_handler *ch; - debug(5, 0) ("WARNING: FD %d has handlers, but it's invalid.\n", fd); - debug(5, 0) ("FD %d is a %s\n", fd, fdTypeStr[F->type]); - debug(5, 0) ("--> %s\n", F->desc); - debug(5, 0) ("tmout:%p read:%p write:%p\n", - F->timeout_handler, - F->read_handler, - F->write_handler); - for (ch = F->close_handler; ch; ch = ch->next) - debug(5, 0) (" close handler: %p\n", ch->handler); - if (F->close_handler) { - commCallCloseHandlers(fd); - } else if (F->timeout_handler) { - debug(5, 0) ("comm_select: Calling Timeout Handler\n"); - F->timeout_handler(fd, F->timeout_data); - } - F->close_handler = NULL; - F->timeout_handler = NULL; - F->read_handler = NULL; - F->write_handler = NULL; - if (F->flags.open) - fd_close(fd); - } - } - if (callicp) - comm_poll_icp_incoming(); - if (calldns) - comm_poll_dns_incoming(); - if (callhttp) - comm_poll_http_incoming(); -#if DELAY_POOLS - while ((fd = commGetSlowFd()) != -1) { - fde *F = &fd_table[fd]; - PF *hdl = F->read_handler; - debug(5, 6) ("comm_select: slow FD %d selected for reading\n", fd); - if (hdl != NULL) { - F->read_handler = NULL; - F->read_pending = COMM_PENDING_NORMAL; - hdl(fd, F->read_data); - statCounter.select_fds++; - if (commCheckICPIncoming) - comm_poll_icp_incoming(); - if (commCheckDNSIncoming) - comm_poll_dns_incoming(); - if (commCheckHTTPIncoming) - comm_poll_http_incoming(); - } - } -#endif - getCurrentTime(); - statCounter.select_time += (current_dtime - start); - return COMM_OK; - } - while (timeout > current_dtime); - debug(5, 8) ("comm_select: time out: %ld.\n", (long int) squid_curtime); - return COMM_TIMEOUT; -} - -static void -comm_poll_dns_incoming(void) -{ - int nfds = 0; - int fds[2]; - int nevents; - dns_io_events = 0; - if (DnsSocket < 0) - return; - fds[nfds++] = DnsSocket; - nevents = comm_check_incoming_poll_handlers(nfds, fds); - if (nevents < 0) - return; - incoming_dns_interval += Config.comm_incoming.dns_average - nevents; - if (incoming_dns_interval < Config.comm_incoming.dns_min_poll) - incoming_dns_interval = Config.comm_incoming.dns_min_poll; - if (incoming_dns_interval > MAX_INCOMING_INTERVAL) - incoming_dns_interval = MAX_INCOMING_INTERVAL; - if (nevents > INCOMING_DNS_MAX) - nevents = INCOMING_DNS_MAX; - statHistCount(&statCounter.comm_dns_incoming, nevents); -} - -void -comm_select_init(void) -{ - cachemgrRegister("comm_incoming", - "comm_incoming() stats", - commIncomingStats, 0, 1); } void @@ -581,9 +62,11 @@ debug(5, 1) ("Using poll for the IO loop\n"); } -void -comm_select_shutdown(void) +static void +do_select_shutdown() { + safe_free(pfds); + safe_free(pfd_map); } void @@ -592,86 +75,76 @@ storeAppendPrintf(sentry, "\tIO loop method: poll\n"); } -static void -commIncomingStats(StoreEntry * sentry) -{ - StatCounters *f = &statCounter; - storeAppendPrintf(sentry, "Current incoming_icp_interval: %d\n", - incoming_icp_interval >> INCOMING_FACTOR); - storeAppendPrintf(sentry, "Current incoming_dns_interval: %d\n", - incoming_dns_interval >> INCOMING_FACTOR); - storeAppendPrintf(sentry, "Current incoming_http_interval: %d\n", - incoming_http_interval >> INCOMING_FACTOR); - storeAppendPrintf(sentry, "\n"); - storeAppendPrintf(sentry, "Histogram of events per incoming socket type\n"); - storeAppendPrintf(sentry, "ICP Messages handled per comm_poll_icp_incoming() call:\n"); - statHistDump(&f->comm_icp_incoming, sentry, statHistIntDumper); - storeAppendPrintf(sentry, "DNS Messages handled per comm_poll_dns_incoming() call:\n"); - statHistDump(&f->comm_dns_incoming, sentry, statHistIntDumper); - storeAppendPrintf(sentry, "HTTP Messages handled per comm_poll_http_incoming() call:\n"); - statHistDump(&f->comm_http_incoming, sentry, statHistIntDumper); -} - void commSetEvents(int fd, int need_read, int need_write) { - /* XXX Here we could optimize the poll arrays quite considerably */ + int pfdn = pfd_map[fd]; + struct pollfd *pfd = pfdn >= 0 ? &pfds[pfdn] : NULL; + short events = (need_read ? POLLRDNORM : 0) | (need_write ? POLLWRNORM : 0); + + if (!pfd && !events) + return; + + if (!pfd) { + pfdn = nfds++; + pfd_map[fd] = pfdn; + pfd = &pfds[pfdn]; + pfd->fd = fd; + pfd->events = events; + } else if (events) { + pfd->events = events; + } else { + pfd_map[fd] = -1; + nfds--; + *pfd = pfds[nfds]; + pfds[nfds].events = 0; + pfds[nfds].revents = 0; + pfds[nfds].fd = -1; + if (pfd->fd >= 0) + pfd_map[pfd->fd] = pfdn; + } } static int -commDeferRead(int fd) +do_comm_select(int msec) { - fde *F = &fd_table[fd]; - if (F->defer_check == NULL) - return 0; - return F->defer_check(fd, F->defer_data); -} + int num; + int i; -static void -checkTimeouts(void) -{ - int fd; - fde *F = NULL; - PF *callback; - for (fd = 0; fd <= Biggest_FD; fd++) { - F = &fd_table[fd]; - if (!F->flags.open) - continue; - if (F->timeout == 0) - continue; - if (F->timeout > squid_curtime) - continue; - debug(5, 5) ("checkTimeouts: FD %d Expired\n", fd); - if (F->timeout_handler) { - debug(5, 5) ("checkTimeouts: FD %d: Call timeout handler\n", fd); - callback = F->timeout_handler; - F->timeout_handler = NULL; - callback(fd, F->timeout_data); - } else { - debug(5, 5) ("checkTimeouts: FD %d: Forcing comm_close()\n", fd); - comm_close(fd); - } + if (nfds == 0) { + assert(shutting_down); + return COMM_SHUTDOWN; + } + statCounter.syscalls.selects++; + num = poll(pfds, nfds, msec); + if (num < 0) { + getCurrentTime(); + if (ignoreErrno(errno)) + return COMM_OK; + + debug(5, 1) ("comm_select: poll failure: %s\n", xstrerror()); + return COMM_ERROR; } -} + statHistCount(&statCounter.select_fds_hist, num); + if (num == 0) + return COMM_TIMEOUT; -/* Called by async-io or diskd to speed up the polling */ -void -comm_quick_poll_required(void) -{ - MAX_POLL_TIME = 10; -} + for (i = nfds - 1; num > 0 && i >= 0; i--) { + struct pollfd *pfd = &pfds[i]; + short read_event, write_event; -/* Defer reads from this fd */ -void -commDeferFD(int fd) -{ - /* Not implemented */ -} + if (!pfd->revents) + continue; -/* Resume reading from the given fd */ -void -commResumeFD(int fd) -{ - /* Not implemented */ + read_event = pfd->revents & (POLLRDNORM | POLLIN | POLLHUP | POLLERR); + write_event = pfd->revents & (POLLWRNORM | POLLOUT | POLLHUP | POLLERR); + + pfd->revents = 0; + + comm_call_handlers(pfd->fd, read_event, write_event); + num--; + } + + return COMM_OK; } diff -ruN squid-2.6.STABLE4/src/comm_select.c squid-2.6.STABLE5/src/comm_select.c --- squid-2.6.STABLE4/src/comm_select.c Tue Aug 15 13:27:28 2006 +++ squid-2.6.STABLE5/src/comm_select.c Sun Oct 29 17:04:52 2006 @@ -1,6 +1,6 @@ /* - * $Id: comm_select.c,v 1.77 2006/08/15 19:27:28 hno Exp $ + * $Id: comm_select.c,v 1.79 2006/10/30 00:04:52 hno Exp $ * * DEBUG: section 5 Socket Functions * @@ -33,13 +33,16 @@ */ #include "squid.h" +#include "comm_generic.c" + +#if HAVE_SYS_TIME_H +#include +#endif #if HAVE_SYS_SELECT_H #include #endif -static int MAX_POLL_TIME = 1000; /* see also comm_quick_poll_required() */ - #ifndef howmany #define howmany(x, y) (((x)+((y)-1))/(y)) #endif @@ -49,522 +52,22 @@ #define FD_MASK_BYTES sizeof(fd_mask) #define FD_MASK_BITS (FD_MASK_BYTES*NBBY) -/* STATIC */ -static int examine_select(fd_set *, fd_set *); -static int fdIsHttp(int fd); -static int fdIsIcp(int fd); -static int fdIsDns(int fd); -static int commDeferRead(int fd); -static void checkTimeouts(void); -static OBJH commIncomingStats; -static int comm_check_incoming_select_handlers(int nfds, int *fds); -static void comm_select_dns_incoming(void); - -static struct timeval zero_tv; -static fd_set global_readfds; -static fd_set global_writefds; +static fd_set *global_readfds; +static fd_set *global_writefds; +static fd_set *current_readfds; +static fd_set *current_writefds; +static fd_set *current_errfds; static int nreadfds; static int nwritefds; -/* - * Automatic tuning for incoming requests: - * - * INCOMING sockets are the ICP and HTTP ports. We need to check these - * fairly regularly, but how often? When the load increases, we - * want to check the incoming sockets more often. If we have a lot - * of incoming ICP, then we need to check these sockets more than - * if we just have HTTP. - * - * The variables 'incoming_icp_interval' and 'incoming_http_interval' - * determine how many normal I/O events to process before checking - * incoming sockets again. Note we store the incoming_interval - * multipled by a factor of (2^INCOMING_FACTOR) to have some - * pseudo-floating point precision. - * - * The variable 'icp_io_events' and 'http_io_events' counts how many normal - * I/O events have been processed since the last check on the incoming - * sockets. When io_events > incoming_interval, its time to check incoming - * sockets. - * - * Every time we check incoming sockets, we count how many new messages - * or connections were processed. This is used to adjust the - * incoming_interval for the next iteration. The new incoming_interval - * is calculated as the current incoming_interval plus what we would - * like to see as an average number of events minus the number of - * events just processed. - * - * incoming_interval = incoming_interval + target_average - number_of_events_processed - * - * There are separate incoming_interval counters for both HTTP and ICP events - * - * You can see the current values of the incoming_interval's, as well as - * a histogram of 'incoming_events' by asking the cache manager - * for 'comm_incoming', e.g.: - * - * % ./client mgr:comm_incoming - * - * Caveats: - * - * - We have MAX_INCOMING_INTEGER as a magic upper limit on - * incoming_interval for both types of sockets. At the - * largest value the cache will effectively be idling. - * - * - The higher the INCOMING_FACTOR, the slower the algorithm will - * respond to load spikes/increases/decreases in demand. A value - * between 3 and 8 is recommended. - */ - -#define MAX_INCOMING_INTEGER 256 -#define INCOMING_FACTOR 5 -#define MAX_INCOMING_INTERVAL (MAX_INCOMING_INTEGER << INCOMING_FACTOR) -static int icp_io_events = 0; -static int dns_io_events = 0; -static int http_io_events = 0; -static int incoming_icp_interval = 16 << INCOMING_FACTOR; -static int incoming_dns_interval = 16 << INCOMING_FACTOR; -static int incoming_http_interval = 16 << INCOMING_FACTOR; -#define commCheckICPIncoming (++icp_io_events > (incoming_icp_interval>> INCOMING_FACTOR)) -#define commCheckDNSIncoming (++dns_io_events > (incoming_dns_interval>> INCOMING_FACTOR)) -#define commCheckHTTPIncoming (++http_io_events > (incoming_http_interval>> INCOMING_FACTOR)) - -static int -fdIsIcp(int fd) -{ - if (fd == theInIcpConnection) - return 1; - if (fd == theOutIcpConnection) - return 1; - return 0; -} - -static int -fdIsDns(int fd) -{ - if (fd == DnsSocket) - return 1; - return 0; -} - -static int -fdIsHttp(int fd) -{ - int j; - for (j = 0; j < NHttpSockets; j++) { - if (fd == HttpSockets[j]) - return 1; - } - return 0; -} - -#if DELAY_POOLS -static int slowfdcnt = 0; -static int slowfdarr[SQUID_MAXFD]; - -static void -commAddSlowFd(int fd) -{ - assert(slowfdcnt < SQUID_MAXFD); - slowfdarr[slowfdcnt++] = fd; -} - -static int -commGetSlowFd(void) -{ - int whichfd, retfd; - - if (!slowfdcnt) - return -1; - whichfd = squid_random() % slowfdcnt; - retfd = slowfdarr[whichfd]; - slowfdarr[whichfd] = slowfdarr[--slowfdcnt]; - return retfd; -} -#endif - -static int -comm_check_incoming_select_handlers(int nfds, int *fds) -{ - int i; - int fd; - int maxfd = 0; - fd_set read_mask; - fd_set write_mask; - FD_ZERO(&read_mask); - FD_ZERO(&write_mask); - incoming_sockets_accepted = 0; - for (i = 0; i < nfds; i++) { - fd = fds[i]; - if (fd_table[fd].read_handler) { - FD_SET(fd, &read_mask); - if (fd > maxfd) - maxfd = fd; - } - if (fd_table[fd].write_handler) { - FD_SET(fd, &write_mask); - if (fd > maxfd) - maxfd = fd; - } - } - if (maxfd++ == 0) - return -1; - getCurrentTime(); - statCounter.syscalls.selects++; - if (select(maxfd, &read_mask, &write_mask, NULL, &zero_tv) < 1) - return incoming_sockets_accepted; - for (i = 0; i < nfds; i++) { - fd = fds[i]; - if (FD_ISSET(fd, &read_mask)) { - PF *hdl = fd_table[fd].read_handler; - void *hdl_data = fd_table[fd].read_data; - commUpdateReadHandler(fd, NULL, NULL); - if (hdl) - hdl(fd, hdl_data); - else - debug(5, 1) ("comm_select_incoming: FD %d NULL read handler\