Changes to Squid-2.4.DEVEL1 ():
+Changes to Squid-2.3.STABLE3 (May 15, 2000):
+
+ - Fixed malloc linking problems on Solaris. The configure
+ script incorrectly set options for dlmalloc.
+ - Added a configure check to remove compiler optimization
+ for GCC 2.95.x.
+ - Updated MSNT authenticator module.
+ - Updated Estonian error pages.
+ - Updated Japanese error pages.
+ - Fixed expires bug in httpReplyHdrCacheInit. It was
+ incorrectly setting expires based on max-age. It was using
+ the current time as a basis, instead of the response date.
+ - Fixed "USE_DNSSERVER" typos.
+ - Added a workaround for getpwnam() problems on Solaris.
+ getpwnam() could fail if there are fewer than 256 FDs
+ available. This causes root to own some disk files.
+ - Added an 'offline_toggle' option via the cache manager.
+ - Added a 'minimum_object_size' option. Files smaller than
+ this size are not stored.
+ - Added 'passive_ftp' option to disable passive FTP transfers.
+ - Added 'wccp_version' option because some Cisco IOS versions
+ require WCCP version 3.
+ - The 'client' program in ping mode (-g) now prints transfer
+ throughput.
+ - Fixed logging of proxy auth username for redirected
+ requests.
+ - Fixed bogus Age values for IMS requests.
+ - Fixed persistent connection timeout for client-side
+ connections. It was hard-coded to 15 seconds, now uses
+ the 'pconn_timeout' value.
+ - Fixed up httpAcceptDefer. It wasn't being used properly
+ and caused high CPU usage when Squid gets close to the FD
+ limit.
+ - Numerous delay_pools fixes and checks.
+ - Fixed SNMP coredumps from running snmpwalk.
+ - Added a check for errno == EPIPE in icmp.c when pinger uses
+ a Unix socket instead of a UDP socket.
+ - Fixed ACL checklist memory initialization bugs.
+ - Cleaned up the MIB file. Replaced contact information and
+ checked description fields.
+ - Removed LRU reference_age hard-coded upper limit.
+ - Fixed async I/O FD leak.
+ - Made getMyHostname() more robust.
+ - Fixed domain list matching bug. "x-foo.com" wasn't properly
+ compared to ".foo.com" and confused splay tree ordering.
+ - Added a check for whitespace in hostnames and optionally
+ strip whitespace if 'uri_whitespace' setting allows.
+ - Added status code and checking to ASN/whois queries.
+
+Changes to Squid-2.3.STABLE2 (Mar 2, 2000):
+
+ - Changed Copyright text.
+ - Changed configure so that some IRIX-6.4 hacks apply to
+ all IRIX-6.* versions.
+ - Cleaned up HTML bugs in error pages.
+ - Told configure to check for netinet/if_ether.h, which
+ is used in ARP ACL code, but might not be required.
+ - Added "Cookie" to known HTTP headers so it can be
+ used in anonymizer configuration.
+ - Added optional TCP_REDIRECT log code for logging
+ of 301/302 responses returned by Squid.
+ - Added a check for a currently running Squid process.
+ If the pid file exists, and the pid is running,
+ Squid complains and refuses to start another instance.
+ - Changed async I/O scope to PTHREAD_SCOPE_PROCESS for
+ IRIX.
+ - Fixed a bug with the PURGE method. The purge enable
+ flag was not getting cleared during reconfigure.
+ Also required PURGE method to be used in http_access
+ list before enabling.
+ - Fixed async I/O assertions for file open errors.
+ - Fixed internal DNS assertion when unpacking truncated
+ messages.
+ - Fixed anonymize_headers bug that caused all headers
+ to be allowed after a reconfigure.
+ - Fixed an access denied bug for accelerator-only installations.
+ - Fixed internal DNS initialization so that it uses
+ 'dns_nameservers' settings in squid.conf if set.
+ - Fixed 'maxconn' ACL bug that caused it to work backwards
+ (Pedro Ribeiro).
+ - Fixed syslog bug for daemon mode on Linux.
+ - Fixed 'http_port' parsing bugs.
+ - Fixed internal DNS byte ordering bugs for PTR queries.
+ - Fixed internal DNS queue getting stuck during periods
+ of low activity (Henrik).
+ - Fixed byte ordering bugs for parsing EPLF FTP listings
+ on 64-bit systems.
+ - Fixed 'request_body_max_size' bug that caused all
+ POST, PUT requests to be denied if max size is set
+ to zero.
+ - Fixed 'redirector_access' bug when using 'myport' ACLs.
+ - Fixed CARP neighbor selection bugs for down peers.
+ - Added 'client_persistent_connections' and
+ 'server_persistent_connections' flags to disable persistent
+ connections for clients and servers.
+ - Fixed access logging bug that caused many requests to be
+ logged as TCP_MISS.
+ - Added some bounds checking to delay pools code.
+
Changes to Squid-2.3.STABLE1 (Jan 9, 2000):
- Updated PAM authentication module from Henrik Nordstrom.
- Added 'peer_connect_timeout' squid.conf option.
- Added 'redirector_bypass' squid.conf option.
- Added RFC 2518 (WEBDAV) request methods.
-
+
Changes to Squid-2.2 (April 19, 1999):
- Removed all SNMP specific ACL code
-# From configure.in Revision: 1.186
+# From configure.in Revision
ac_aux_dir=
for ac_dir in cfgaux $srcdir/cfgaux; do
if test -f $ac_dir/install-sh; then
i386-*-solaris2.*)
echo "Enabling dlmalloc for $host"
use_dlmalloc="yes"
+ LIBDLMALLOC="libdlmalloc.a"
+ LIB_MALLOC="-L../lib -ldlmalloc"
;;
esac
fi
esac
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1696: checking how to run the C preprocessor" >&5
+echo "configure:1698: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1711 "configure"
+#line 1713 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1728 "configure"
+#line 1730 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1745 "configure"
+#line 1747 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1753: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1787: checking for a BSD compatible install" >&5
+echo "configure:1789: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1842: checking for $ac_word" >&5
+echo "configure:1844: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1870: checking whether ln -s works" >&5
+echo "configure:1872: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "sh", so it can be a program name with args.
set dummy sh; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1893: checking for $ac_word" >&5
+echo "configure:1895: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "false", so it can be a program name with args.
set dummy false; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1929: checking for $ac_word" >&5
+echo "configure:1931: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_FALSE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "true", so it can be a program name with args.
set dummy true; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1965: checking for $ac_word" >&5
+echo "configure:1967: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_TRUE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "rm", so it can be a program name with args.
set dummy rm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2001: checking for $ac_word" >&5
+echo "configure:2003: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "mv", so it can be a program name with args.
set dummy mv; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2037: checking for $ac_word" >&5
+echo "configure:2039: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "mkdir", so it can be a program name with args.
set dummy mkdir; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2073: checking for $ac_word" >&5
+echo "configure:2075: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "ln", so it can be a program name with args.
set dummy ln; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2109: checking for $ac_word" >&5
+echo "configure:2111: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2145: checking for $ac_word" >&5
+echo "configure:2147: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "makedepend", so it can be a program name with args.
set dummy makedepend; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2181: checking for $ac_word" >&5
+echo "configure:2183: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MAKEDEPEND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2217: checking for $ac_word" >&5
+echo "configure:2219: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:2271: checking for $ac_hdr that defines DIR" >&5
+echo "configure:2273: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2276 "configure"
+#line 2278 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:2284: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2286: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:2309: checking for opendir in -ldir" >&5
+echo "configure:2311: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2317 "configure"
+#line 2319 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:2328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:2350: checking for opendir in -lx" >&5
+echo "configure:2352: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2358 "configure"
+#line 2360 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:2369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:2392: checking for ANSI C header files" >&5
+echo "configure:2394: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2397 "configure"
+#line 2399 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2422 "configure"
+#line 2424 "configure"
#include "confdefs.h"
#include <string.h>
EOF
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 2440 "configure"
+#line 2442 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
:
else
cat > conftest.$ac_ext <<EOF
-#line 2461 "configure"
+#line 2463 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
exit (0); }
EOF
-if { (eval echo configure:2472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2563: checking for $ac_hdr" >&5
+echo "configure:2565: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2568 "configure"
+#line 2570 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2575: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:2601: checking for working const" >&5
+echo "configure:2603: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2606 "configure"
+#line 2608 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2655: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2657: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
fi
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:2676: checking whether byte ordering is bigendian" >&5
+echo "configure:2678: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <<EOF
-#line 2683 "configure"
+#line 2685 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#endif
; return 0; }
EOF
-if { (eval echo configure:2694: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <<EOF
-#line 2698 "configure"
+#line 2700 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/param.h>
#endif
; return 0; }
EOF
-if { (eval echo configure:2709: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2711: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 2729 "configure"
+#line 2731 "configure"
#include "confdefs.h"
main () {
/* Are we little or big endian? From Harbison&Steele. */
exit (u.c[sizeof (long) - 1] == 1);
}
EOF
-if { (eval echo configure:2742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2744: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
echo $ac_n "checking if ANSI prototypes work""... $ac_c" 1>&6
-echo "configure:2767: checking if ANSI prototypes work" >&5
+echo "configure:2769: checking if ANSI prototypes work" >&5
if eval "test \"`echo '$''{'ac_cv_have_ansi_prototypes'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2773 "configure"
+#line 2775 "configure"
#include "confdefs.h"
int foo(char *); int foo (char *bar) {return 1;}
int main() {
foo("bar")
; return 0; }
EOF
-if { (eval echo configure:2780: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_ansi_prototypes="yes"
else
fi
echo $ac_n "checking for tm->tm_gmtoff""... $ac_c" 1>&6
-echo "configure:2802: checking for tm->tm_gmtoff" >&5
+echo "configure:2804: checking for tm->tm_gmtoff" >&5
if eval "test \"`echo '$''{'ac_cv_have_tm_gmoff'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2808 "configure"
+#line 2810 "configure"
#include "confdefs.h"
#include <time.h>
#include <sys/time.h>
foo.tm_gmtoff = 0;
; return 0; }
EOF
-if { (eval echo configure:2817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2819: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_tm_gmoff="yes"
else
fi
echo $ac_n "checking for struct mallinfo""... $ac_c" 1>&6
-echo "configure:2839: checking for struct mallinfo" >&5
+echo "configure:2841: checking for struct mallinfo" >&5
if eval "test \"`echo '$''{'ac_cv_have_struct_mallinfo'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2845 "configure"
+#line 2847 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if HAVE_MALLOC_H
foo.keepcost = 0;
; return 0; }
EOF
-if { (eval echo configure:2863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2865: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_struct_mallinfo="yes"
else
fi
echo $ac_n "checking for extended mallinfo""... $ac_c" 1>&6
-echo "configure:2885: checking for extended mallinfo" >&5
+echo "configure:2887: checking for extended mallinfo" >&5
if eval "test \"`echo '$''{'ac_cv_have_ext_mallinfo'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2891 "configure"
+#line 2893 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <malloc.h>
foo.mxfast = 0;
; return 0; }
EOF
-if { (eval echo configure:2900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_ext_mallinfo="yes"
else
fi
echo $ac_n "checking for struct rusage""... $ac_c" 1>&6
-echo "configure:2922: checking for struct rusage" >&5
+echo "configure:2924: checking for struct rusage" >&5
if eval "test \"`echo '$''{'ac_cv_have_struct_rusage'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2928 "configure"
+#line 2930 "configure"
#include "confdefs.h"
#if HAVE_SYS_TIME_H
struct rusage R;
; return 0; }
EOF
-if { (eval echo configure:2941: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2943: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_struct_rusage="yes"
else
fi
echo $ac_n "checking for ip->ip_hl""... $ac_c" 1>&6
-echo "configure:2963: checking for ip->ip_hl" >&5
+echo "configure:2965: checking for ip->ip_hl" >&5
if eval "test \"`echo '$''{'ac_cv_have_ip_hl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2969 "configure"
+#line 2971 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <netinet/in.h>
ip.ip_hl= 0;
; return 0; }
EOF
-if { (eval echo configure:2986: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2988: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_ip_hl="yes"
else
fi
echo $ac_n "checking size of int""... $ac_c" 1>&6
-echo "configure:3008: checking size of int" >&5
+echo "configure:3010: checking size of int" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3016 "configure"
+#line 3018 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:3027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_int=`cat conftestval`
else
echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:3047: checking size of long" >&5
+echo "configure:3049: checking size of long" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3055 "configure"
+#line 3057 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:3066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_long=`cat conftestval`
else
echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:3086: checking size of void *" >&5
+echo "configure:3088: checking size of void *" >&5
if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 3094 "configure"
+#line 3096 "configure"
#include "confdefs.h"
#include <stdio.h>
main()
exit(0);
}
EOF
-if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_sizeof_void_p=`cat conftestval`
else
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:3128: checking for working alloca.h" >&5
+echo "configure:3130: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3133 "configure"
+#line 3135 "configure"
#include "confdefs.h"
#include <alloca.h>
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:3140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:3161: checking for alloca" >&5
+echo "configure:3163: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3166 "configure"
+#line 3168 "configure"
#include "confdefs.h"
#ifdef __GNUC__
char *p = (char *) alloca(1);
; return 0; }
EOF
-if { (eval echo configure:3194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:3226: checking whether alloca needs Cray hooks" >&5
+echo "configure:3228: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3231 "configure"
+#line 3233 "configure"
#include "confdefs.h"
#if defined(CRAY) && ! defined(CRAY2)
webecray
if test $ac_cv_os_cray = yes; then
for ac_func in _getb67 GETB67 getb67; do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3256: checking for $ac_func" >&5
+echo "configure:3258: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3261 "configure"
+#line 3263 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:3284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3286: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:3311: checking stack direction for C alloca" >&5
+echo "configure:3313: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <<EOF
-#line 3319 "configure"
+#line 3321 "configure"
#include "confdefs.h"
find_stack_direction ()
{
exit (find_stack_direction() < 0);
}
EOF
-if { (eval echo configure:3338: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3361: checking for pid_t" >&5
+echo "configure:3363: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3366 "configure"
+#line 3368 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3394: checking for size_t" >&5
+echo "configure:3396: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3399 "configure"
+#line 3401 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3427: checking for ssize_t" >&5
+echo "configure:3429: checking for ssize_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_ssize_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3432 "configure"
+#line 3434 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3460: checking for off_t" >&5
+echo "configure:3462: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3465 "configure"
+#line 3467 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3493: checking for mode_t" >&5
+echo "configure:3495: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3498 "configure"
+#line 3500 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for fd_mask""... $ac_c" 1>&6
-echo "configure:3526: checking for fd_mask" >&5
+echo "configure:3528: checking for fd_mask" >&5
if eval "test \"`echo '$''{'ac_cv_type_fd_mask'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3531 "configure"
+#line 3533 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
fi
echo $ac_n "checking for mtyp_t""... $ac_c" 1>&6
-echo "configure:3559: checking for mtyp_t" >&5
+echo "configure:3561: checking for mtyp_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mtyp_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3564 "configure"
+#line 3566 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
echo $ac_n "checking for socklen_t""... $ac_c" 1>&6
-echo "configure:3593: checking for socklen_t" >&5
+echo "configure:3595: checking for socklen_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_socklen_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3599 "configure"
+#line 3601 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/socket.h>
fi
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:3630: checking for main in -lnsl" >&5
+echo "configure:3632: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3638 "configure"
+#line 3640 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3647: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:3673: checking for main in -lsocket" >&5
+echo "configure:3675: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3681 "configure"
+#line 3683 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo "skipping libmalloc check (--enable-dlmalloc specified)"
else
echo $ac_n "checking for main in -lgnumalloc""... $ac_c" 1>&6
-echo "configure:3720: checking for main in -lgnumalloc" >&5
+echo "configure:3722: checking for main in -lgnumalloc" >&5
ac_lib_var=`echo gnumalloc'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lgnumalloc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3728 "configure"
+#line 3730 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3735: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
*)
echo $ac_n "checking for main in -lmalloc""... $ac_c" 1>&6
-echo "configure:3778: checking for main in -lmalloc" >&5
+echo "configure:3780: checking for main in -lmalloc" >&5
ac_lib_var=`echo malloc'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lmalloc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3786 "configure"
+#line 3788 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for main in -lbsd""... $ac_c" 1>&6
-echo "configure:3826: checking for main in -lbsd" >&5
+echo "configure:3828: checking for main in -lbsd" >&5
ac_lib_var=`echo bsd'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3834 "configure"
+#line 3836 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3841: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for main in -lregex""... $ac_c" 1>&6
-echo "configure:3869: checking for main in -lregex" >&5
+echo "configure:3871: checking for main in -lregex" >&5
ac_lib_var=`echo regex'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lregex $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3877 "configure"
+#line 3879 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3884: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for gethostbyname in -lbind""... $ac_c" 1>&6
-echo "configure:3905: checking for gethostbyname in -lbind" >&5
+echo "configure:3907: checking for gethostbyname in -lbind" >&5
ac_lib_var=`echo bind'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lbind $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3913 "configure"
+#line 3915 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:3924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
;;
*)
echo $ac_n "checking for inet_aton in -lresolv""... $ac_c" 1>&6
-echo "configure:3958: checking for inet_aton in -lresolv" >&5
+echo "configure:3960: checking for inet_aton in -lresolv" >&5
ac_lib_var=`echo resolv'_'inet_aton | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3966 "configure"
+#line 3968 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
inet_aton()
; return 0; }
EOF
-if { (eval echo configure:3977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for inet_aton in -l44bsd""... $ac_c" 1>&6
-echo "configure:3993: checking for inet_aton in -l44bsd" >&5
+echo "configure:3995: checking for inet_aton in -l44bsd" >&5
ac_lib_var=`echo 44bsd'_'inet_aton | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-l44bsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4001 "configure"
+#line 4003 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
inet_aton()
; return 0; }
EOF
-if { (eval echo configure:4012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for main in -lresolv""... $ac_c" 1>&6
-echo "configure:4044: checking for main in -lresolv" >&5
+echo "configure:4046: checking for main in -lresolv" >&5
ac_lib_var=`echo resolv'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lresolv $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4052 "configure"
+#line 4054 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4059: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4061: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
esac
fi
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
-echo "configure:4090: checking for main in -lm" >&5
+echo "configure:4092: checking for main in -lm" >&5
ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4098 "configure"
+#line 4100 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4107: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:4134: checking for crypt in -lcrypt" >&5
+echo "configure:4136: checking for crypt in -lcrypt" >&5
ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lcrypt $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4142 "configure"
+#line 4144 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
crypt()
; return 0; }
EOF
-if { (eval echo configure:4153: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo $ac_n "checking for main in -lpthread""... $ac_c" 1>&6
-echo "configure:4186: checking for main in -lpthread" >&5
+echo "configure:4188: checking for main in -lpthread" >&5
ac_lib_var=`echo pthread'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4194 "configure"
+#line 4196 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
case "$host" in
*-pc-sco3.2*)
echo $ac_n "checking for strftime in -lintl""... $ac_c" 1>&6
-echo "configure:4236: checking for strftime in -lintl" >&5
+echo "configure:4238: checking for strftime in -lintl" >&5
ac_lib_var=`echo intl'_'strftime | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4244 "configure"
+#line 4246 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
strftime()
; return 0; }
EOF
-if { (eval echo configure:4255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
;;
esac
+# Remove optimization for GCC 2.95.[12]
+# gcc -O[2] on *BSD and Linux (x86) causes pointers to magically become NULL
+if test "$GCC" = "yes"; then
+ GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
+ case "$GCCVER" in
+ 2.95.[12])
+ echo "Removing -O for gcc on $host with GCC $GCCVER"
+ CFLAGS="`echo $CFLAGS | sed -e 's/-O[0-9]*//'`"
+ ;;
+ esac
+fi
+
# Recommended by Balint Nagy Endre <bne@CareNet.hu>
case "$host" in
*-univel-sysv4.2MP)
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4423: checking for $ac_func" >&5
+echo "configure:4437: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4428 "configure"
+#line 4442 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:4451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo $ac_n "checking if setresuid is implemented""... $ac_c" 1>&6
-echo "configure:4477: checking if setresuid is implemented" >&5
+echo "configure:4491: checking if setresuid is implemented" >&5
if eval "test \"`echo '$''{'ac_cv_func_setresuid'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 4485 "configure"
+#line 4499 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:4498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_setresuid="yes"
else
if test "$IPF_TRANSPARENT" ; then
echo $ac_n "checking if IP-Filter header files are installed""... $ac_c" 1>&6
-echo "configure:4523: checking if IP-Filter header files are installed" >&5
+echo "configure:4537: checking if IP-Filter header files are installed" >&5
if test "$ac_cv_header_ip_compat_h" = "yes" &&
test "$ac_cv_header_ip_fil_h" = "yes" &&
test "$ac_cv_header_ip_nat_h" = "yes" ; then
esac
fi
echo $ac_n "checking if GNUregex needs to be compiled""... $ac_c" 1>&6
-echo "configure:4566: checking if GNUregex needs to be compiled" >&5
+echo "configure:4580: checking if GNUregex needs to be compiled" >&5
if test -z "$USE_GNUREGEX"; then
if test "$ac_cv_func_regcomp" = "no" || test "$USE_GNUREGEX" = "yes" ; then
USE_GNUREGEX="yes"
else
cat > conftest.$ac_ext <<EOF
-#line 4572 "configure"
+#line 4586 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <regex.h>
regex_t t; regcomp(&t,"",0);
; return 0; }
EOF
-if { (eval echo configure:4580: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
USE_GNUREGEX="no"
else
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4611: checking for $ac_func" >&5
+echo "configure:4625: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4616 "configure"
+#line 4630 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:4639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
echo $ac_n "checking Default FD_SETSIZE value""... $ac_c" 1>&6
-echo "configure:4667: checking Default FD_SETSIZE value" >&5
+echo "configure:4681: checking Default FD_SETSIZE value" >&5
if test "$cross_compiling" = yes; then
DEFAULT_FD_SETSIZE=256
else
cat > conftest.$ac_ext <<EOF
-#line 4672 "configure"
+#line 4686 "configure"
#include "confdefs.h"
#if HAVE_STDIO_H
}
EOF
-if { (eval echo configure:4697: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
DEFAULT_FD_SETSIZE=`cat conftestval`
else
echo $ac_n "checking Maximum number of filedescriptors we can open""... $ac_c" 1>&6
-echo "configure:4716: checking Maximum number of filedescriptors we can open" >&5
+echo "configure:4730: checking Maximum number of filedescriptors we can open" >&5
TLDFLAGS="$LDFLAGS"
case $host in
i386-unknown-freebsd*)
SQUID_MAXFD=256
else
cat > conftest.$ac_ext <<EOF
-#line 4728 "configure"
+#line 4742 "configure"
#include "confdefs.h"
#include <stdio.h>
}
EOF
-if { (eval echo configure:4785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SQUID_MAXFD=`cat conftestval`
else
LDFLAGS="$TLDFLAGS"
echo $ac_n "checking Default UDP send buffer size""... $ac_c" 1>&6
-echo "configure:4812: checking Default UDP send buffer size" >&5
+echo "configure:4826: checking Default UDP send buffer size" >&5
if test "$cross_compiling" = yes; then
SQUID_UDP_SO_SNDBUF=16384
else
cat > conftest.$ac_ext <<EOF
-#line 4817 "configure"
+#line 4831 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:4838: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SQUID_UDP_SO_SNDBUF=`cat conftestval`
else
echo $ac_n "checking Default UDP receive buffer size""... $ac_c" 1>&6
-echo "configure:4857: checking Default UDP receive buffer size" >&5
+echo "configure:4871: checking Default UDP receive buffer size" >&5
if test "$cross_compiling" = yes; then
SQUID_UDP_SO_RCVBUF=16384
else
cat > conftest.$ac_ext <<EOF
-#line 4862 "configure"
+#line 4876 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:4883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4897: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SQUID_UDP_SO_RCVBUF=`cat conftestval`
else
echo $ac_n "checking Default TCP send buffer size""... $ac_c" 1>&6
-echo "configure:4902: checking Default TCP send buffer size" >&5
+echo "configure:4916: checking Default TCP send buffer size" >&5
if test "$cross_compiling" = yes; then
SQUID_TCP_SO_SNDBUF=16384
else
cat > conftest.$ac_ext <<EOF
-#line 4907 "configure"
+#line 4921 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:4928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SQUID_TCP_SO_SNDBUF=`cat conftestval`
else
echo $ac_n "checking Default TCP receive buffer size""... $ac_c" 1>&6
-echo "configure:4947: checking Default TCP receive buffer size" >&5
+echo "configure:4961: checking Default TCP receive buffer size" >&5
if test "$cross_compiling" = yes; then
SQUID_TCP_SO_RCVBUF=16384
else
cat > conftest.$ac_ext <<EOF
-#line 4952 "configure"
+#line 4966 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:4973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
SQUID_TCP_SO_RCVBUF=`cat conftestval`
else
echo $ac_n "checking if sys_errlist is already defined""... $ac_c" 1>&6
-echo "configure:4992: checking if sys_errlist is already defined" >&5
+echo "configure:5006: checking if sys_errlist is already defined" >&5
if eval "test \"`echo '$''{'ac_cv_needs_sys_errlist'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4997 "configure"
+#line 5011 "configure"
#include "confdefs.h"
#include <stdio.h>
int main() {
char *s = sys_errlist;
; return 0; }
EOF
-if { (eval echo configure:5004: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_needs_sys_errlist="no"
else
fi
echo $ac_n "checking for libresolv _dns_ttl_ hack""... $ac_c" 1>&6
-echo "configure:5026: checking for libresolv _dns_ttl_ hack" >&5
+echo "configure:5040: checking for libresolv _dns_ttl_ hack" >&5
cat > conftest.$ac_ext <<EOF
-#line 5028 "configure"
+#line 5042 "configure"
#include "confdefs.h"
extern int _dns_ttl_;
int main() {
return _dns_ttl_;
; return 0; }
EOF
-if { (eval echo configure:5035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
cat >> confdefs.h <<\EOF
rm -f conftest*
echo $ac_n "checking if inet_ntoa() actually works""... $ac_c" 1>&6
-echo "configure:5051: checking if inet_ntoa() actually works" >&5
+echo "configure:5065: checking if inet_ntoa() actually works" >&5
if test "$cross_compiling" = yes; then
INET_NTOA_RESULT="broken"
else
cat > conftest.$ac_ext <<EOF
-#line 5056 "configure"
+#line 5070 "configure"
#include "confdefs.h"
#include <stdlib.h>
}
EOF
-if { (eval echo configure:5075: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
INET_NTOA_RESULT=`cat conftestval`
else
if test "$ac_cv_header_sys_statvfs_h" = "yes" ; then
echo $ac_n "checking for working statvfs() interface""... $ac_c" 1>&6
-echo "configure:5101: checking for working statvfs() interface" >&5
+echo "configure:5115: checking for working statvfs() interface" >&5
cat > conftest.$ac_ext <<EOF
-#line 5103 "configure"
+#line 5117 "configure"
#include "confdefs.h"
#include <stdlib.h>
; return 0; }
EOF
-if { (eval echo configure:5120: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_func_statvfs=yes
else
fi
echo $ac_n "checking for _res.nsaddr_list""... $ac_c" 1>&6
-echo "configure:5140: checking for _res.nsaddr_list" >&5
+echo "configure:5154: checking for _res.nsaddr_list" >&5
if eval "test \"`echo '$''{'ac_cv_have_res_nsaddr_list'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5145 "configure"
+#line 5159 "configure"
#include "confdefs.h"
#if HAVE_SYS_TYPES_H
_res.nsaddr_list[0];
; return 0; }
EOF
-if { (eval echo configure:5168: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5182: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_res_nsaddr_list="yes"
else
if test $ac_cv_have_res_nsaddr_list = "no" ; then
echo $ac_n "checking for _res.ns_list""... $ac_c" 1>&6
-echo "configure:5190: checking for _res.ns_list" >&5
+echo "configure:5204: checking for _res.ns_list" >&5
if eval "test \"`echo '$''{'ac_cv_have_res_ns_list'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5195 "configure"
+#line 5209 "configure"
#include "confdefs.h"
#if HAVE_SYS_TYPES_H
_res.ns_list[0].addr;
; return 0; }
EOF
-if { (eval echo configure:5218: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_have_res_ns_list="yes"
else
dnl
dnl Duane Wessels, wessels@nlanr.net, February 1996 (autoconf v2.9)
dnl
-dnl $Id: configure.in,v 1.187 2000/05/05 10:24:15 adrian Exp $
+dnl $Id: configure.in,v 1.188 2000/05/16 07:05:52 wessels Exp $
dnl
dnl
dnl
AC_INIT(src/main.c)
AC_CONFIG_HEADER(include/autoconf.h)
-AC_REVISION($Revision: 1.187 $)dnl
+AC_REVISION($Revision: 1.188 $)dnl
AC_PREFIX_DEFAULT(/usr/local/squid)
AC_CONFIG_AUX_DIR(cfgaux)
i386-*-solaris2.*)
echo "Enabling dlmalloc for $host"
use_dlmalloc="yes"
+ LIBDLMALLOC="libdlmalloc.a"
+ LIB_MALLOC="-L../lib -ldlmalloc"
;;
esac
fi
;;
esac
+# Remove optimization for GCC 2.95.[12]
+# gcc -O[2] on *BSD and Linux (x86) causes pointers to magically become NULL
+if test "$GCC" = "yes"; then
+ GCCVER=`$CC -v 2>&1 | awk '$2 == "version" {print $3}'`
+ case "$GCCVER" in
+ [2.95.[12]])
+ echo "Removing -O for gcc on $host with GCC $GCCVER"
+ CFLAGS="`echo $CFLAGS | sed -e 's/-O[[0-9]]*//'`"
+ ;;
+ esac
+fi
+
# Recommended by Balint Nagy Endre <bne@CareNet.hu>
case "$host" in
*-univel-sysv4.2MP)
Unable to determine IP address from host name for
<I>%H</I>
</BLOCKQUOTE>
-</UL>
<P>
The dnsserver returned:
<H1>Operation successful</H1>
<H2>File created</H2>
<HR>
-<P>
-</P>
-
<H1>Operation successful</H1>
<H2>File updated</H2>
<HR>
-<P>
-</P>
-
<A HREF="%U">%U</A>
<P>
The following error was encountered:
-<UL>
<P>
This cache is in the process of shutting down and can not
service your request at this time. Please retry your
Juurdepääsu kontrolli konfiguratsioon blokeerib teie päringut.
Kui te arvate, et blokeering pole õige, kontakteeruge palun teenuse pakkujaga.
</UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<HTML><HEAD>
-<TITLE>VIGA: Cache kasutamine blokeeritud</TITLE>
+<TITLE>VIGA: Vahemälu serveri kasutamine blokeeritud</TITLE>
</HEAD>
<BODY>
<H1>VIGA</H1>
-<H2>Cache kasutamine keelatud</H2>
+<H2>Vahemälu serveri kasutamine keelatud</H2>
<HR>
<P>
Sooritades päringut URLile
<UL>
<LI>
<STRONG>
-Cache kasutamine keelatud.
+Vahemälu serveri kasutamine keelatud.
</STRONG>
</UL>
</P>
<P>
Autoriseerimiseks on teil vaja brauserit mis toetab HTTP/1.1 standardit,
nagu Netscape versioon 2.0 või uuem, või MS Internet Explorer
-3.0. Palun kontakteeruge <A HREF="mailto:%w">cache administraatoriga</a>,
+3.0. Palun kontakteeruge <A HREF="mailto:%w">vahemälu serveri administraatoriga</a>,
kui teil on probleeme autoriseerimisega või
<A HREF="http://%h/cgi-bin/chpasswd.cgi\">vahetage/a> oma parool.
</P>
<HTML><HEAD>
-<TITLE>VIGA: Cache haldaja kasutamine blokeeritud</TITLE>
+<TITLE>VIGA: Vahemälu serveri haldaja kasutamine blokeeritud</TITLE>
</HEAD>
<BODY>
<H1>VIGA</H1>
-<H2>Cache haldaja kasutamine blokeeritud</H2>
+<H2>Vahemälu serveri haldaja kasutamine blokeeritud</H2>
<HR>
<P>
Sooritades päringut URLile
<UL>
<LI>
<STRONG>
-Cache haldaja kasutamine keelatud.
+Vahemälu serveri haldaja kasutamine keelatud.
</STRONG>
</UL>
</P>
<P>Vabandust, teil pole õigust päringule:
<PRE> %U</PRE>
-sellele cache haldajale, kuni te pole läbinud autoriseerimist.
+sellele vahemälu serveri haldajale, kuni te pole läbinud autoriseerimist.
</P>
<P> Autoriseerimiseks on teil vaja brauserit mis toetab HTTP/1.1 standardit,
nagu Netscape versioon 2.0 või uuem, või MS Internet Explorer
-3.0. Palun kontakteeruge <A HREF="mailto:%w">cache administraatoriga</a>,
+3.0. Palun kontakteeruge <A HREF="mailto:%w">vahemälu serveri administraatoriga</a>,
kui teil on probleeme autoriseerimisega või kui te <em>olete</em>
-administraator, lugege Squidi dokumentatsiooni cache haldaja interfeisi kohta
-ja kontrollige cache logi vea täpsema kirjelduse saamiseks.</P>
+administraator, lugege Squidi dokumentatsiooni vahemälu serveri haldaja interfeisi kohta
+ja kontrollige vahemälu serveri logi täpsema veakirjelduse saamiseks.</P>
<P>
Päringut ei õnnestunud edastada ei originaali serverile ega
-ühelegi vanem cache serverile. Ilmselt on põhjus:
+ühelegi vanem vahemälu serverile. Ilmselt on põhjus:
<UL>
-<LI>Cache administraator ei võimalda teha otseseid päringuid
+<LI>Vahemälu serveri administraator ei võimalda teha otseseid päringuid
originaali serverile ja
-<LI>Kõik kirjeldatud vanem vanem cached on hetkel kättesaamatud.
+<LI>Kõik kirjeldatud vanem vahemälu serverid on hetkel kättesaamatud.
</UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Server või arvutivõrk ei tööta. Palun korrake
päringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Mis tähendab:
<PRE>
- Cache ei suutnud lahendada URLis antud hosti nime. Palun kontrollige
+ Vahemälu server ei suutnud lahendada URLis antud hosti nime. Palun kontrollige
aadressi korrektsust.
</PRE>
-</P>
-
+<P>Teie teenuseVahemälu serve aadress on <A HREF="mailto:%w">%w</A>.
</UL>
<P>
-Meie cache ei edasta teie päringut, kuna ta kasutab andmete edastamisel
-ainult naaber cache meetodit. Ilmselt on %i vigaselt konfigureeritud cache.
-</P>
+Meie vahemälu server ei edasta teie päringut, kuna ta kasutab andmete edastamisel
+ainult naaber vahemälu serverite meetodit. Ilmselt on %i vigaselt konfigureeritud vahemälu server.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
</UL>
<P>
-See cache ei toeta FTPd.
-</P>
+See vahemälu server ei toeta FTPd.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
See olukord võib olla tekkinud, kui FTP URL on antud absoluutse
teega (mis on vastuolus RFC 1738-ga). Kui see on nii, siis saab faili
aadressilt <A HREF="%B">%B</A>.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
ja sai sellise vastuse
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
See olukord võib olla tekkinud, kui FTP URL on antud absoluutse
teega (mis on vastuolus RFC 1738-ga). Kui see on nii, siis saab faili
aadressilt <A HREF="%B">%B</A>.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<PRE>
Kontrolli failiteed, õiguseid, ketta ruumi ja proovi uuesti.
</PRE>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
ja sai sellise vastuse
<blockquote><strong><pre>%F</pre></strong></blockquote>
<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<LI>POST või PUT päringutel puudub Content-Length
<LI>keelatud sümbolid hosti nimes; alakriipsud pole lubatud
</UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<LI>Vigane topelt-kaldkriips URLi teel
<LI>Vigane sümbol hosti nimes; alakriipsud pole lubatud
</UL>
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Squid katkestas päringu, kuna see kestis liiga kaua.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
</UL>
<P>
-Selles Caches on WAISi edastav host kirjeldamata! Kontakteeruge
+Selles vahemälu serveris on WAISi edastav host kirjeldamata! Kontakteeruge
administraatoriga.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<UL>
<LI>
<STRONG>
-Kehtiv dokument puudub cachest ja <code>only-if-cached</code>
-Valid document was not found in the cache and päring sisaldas
+Kehtiv dokument puudub vahemälu serverist ja päring sisaldas
<code>only-if-cached</code> direktiivi.
</STRONG>
</UL>
<P>
-Te edastasite päringu <code>only-if-cached</code> cache kontrolli
-direktiiviga. Dokumenti ei leitud cachest <em>või</em>ta
+Te edastasite päringu <code>only-if-cached</code> vahemälu kontrolli
+direktiiviga. Dokumenti ei leitud vahemälu serverist <em>või</em>ta
nõudis uuendamist, mis on aga keelatud <code>only-if-cached</code>
direktiiviga.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Andmete lugemisel tekkis veasituatsioon. Palun korrake päringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Lugejal katkes võrgust andmeid lugedes kannatus. Võrk või
server võib olla maas või umbes. Proovige uuesti.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
Meie server on saanud käsu töö lõpetada ja
ei saa teie päringut hetkel teenindada. Palun korrake oma
päringut motilde;ne aja pärast.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Squid ei suuda tekitada TCP pistikut, ilmselt ülekoormuse tõttu.
palun korrake päringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>IGA: Päring URLile ei saa vastust</TITLE>
</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>Viga</H1>
+<H2>Päring URLile ei saa vastust</H2>
<HR>
<P>
-While trying to retrieve the URL:
+Sooritades päringut URLile
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+tekkis järgnev viga:
<UL>
<LI>
<STRONG>
-The request or reply is too large.
+Päring või vastus on liiga suur.
</STRONG>
<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
+Kui te sooritate POST või PUT päringut, siis teie päringu keha
+(see asi, mida te serverisse laete) on liiga suur. Kui te
+sooritate GET päringut, siis on vastuse keha (asi, mida te serverist
+laete) liiga suur. Need piirangus on seadnud teie teenusepakkuja, kes
+haldab seda vahemälu serverit. Kui te arvate, et tegemist on veaga,
+kontakteeruge palun otse oma teenusepakkujaga.
</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w">%w</A>.
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Squid ei toeta kõiki päringu meetodeid kõikide protokollidega.
Näiteks, te ei saa teha POST operatsiooni Gopher päringus.
-</P>
-
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Hei, mida sa ootad URNidelt %T peal:)
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Võrku kirjutades tekkis viga. Palun korrake päringut.
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<P>
Squid ei saanud selle päringu vastuseks midagi...
-</P>
+<P>Teie teenusepakkuja aadress on <A HREF="mailto:%w">%w</A>.
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>HIBA: A kért URL nem tölthetõ le</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2"></HEAD>
</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>HIBA</H1>
+<H2>A kért URL nem tölthetõ le</H2>
<HR>
<P>
-While trying to retrieve the URL:
+Az alábbi URL letöltésekor:
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+a következõ hiba lépett fel:
<UL>
<LI>
<STRONG>
-The request or reply is too large.
+A kérés vagy a válasz túl nagy méretû.
</STRONG>
<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
+POST vagy PUT kérés esetén a kérés törzse (az az anyag
+amit feltöltene) túl nagy méretû. Ha GET típusú
+kérésrõl van szó, akkor a válasz törzse (az az anyag amit éppen
+letöltene) túl nagy méretû. A cache-t mûködtetõ Internet
+szolgáltató vezette be ezeket a korlátozásokat. Kérjük, forduljon
+közvetlenül szolgáltatójához amennyiben a szerver helytelen
+beállításában látja a hiba okát.
</UL>
<P>
-Your cache administrator is <A HREF="mailto:%w">%w</A>.
+A cache adminisztrátora: <A HREF="mailto:%w">%w</A>.
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
+<TITLE>¥¨¥é¡¼: ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H2>¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿</H2>
<HR>
<P>
-While trying to retrieve the URL:
+°Ê²¼¤Î URL ¤ò¼èÆÀ¤·¤¿ºÝ¤Ë:
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+¼¡¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:
<UL>
<P>
-This cache is in the process of shutting down and can not
-service your request at this time. Please retry your
-request again soon.
+¤³¤Î¥¥ã¥Ã¥·¥å¤Ï²ÔƯÄä»ß¤Î½èÍý¤ËÆþ¤Ã¤Æ¤¤¤Æ¡¢
+¸½ºß¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤Ø¤Î¥µ¡¼¥Ó¥¹¤òÄ󶡤Ǥ¤Þ¤»¤ó¡£
+¸å¤ÇºÆÅ٥ꥯ¥¨¥¹¥È¤·¤Æ¤¯¤À¤µ¤¤¡¥
</P>
<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
+<TITLE>¥¨¥é¡¼: ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿</TITLE>
</HEAD><BODY>
<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H2>¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿ URL ¤Ï¼èÆÀ¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿</H2>
<HR>
<P>
-While trying to retrieve the URL:
+°Ê²¼¤Î URL ¤ò¼èÆÀ¤·¤¿ºÝ¤Ë:
<A HREF="%U">%U</A>
<P>
-The following error was encountered:
+¼¡¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿:
<UL>
<LI>
<STRONG>
-The request or reply is too large.
+¥ê¥¯¥¨¥¹¥È¤Þ¤¿¤Ï¥ê¥×¥é¥¤¤¬Â礤¹¤®¤Þ¤¹¡£
</STRONG>
<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large. If you are
-making a GET request, then the reply body (what you are trying
-to download) is too large. These limits have been established
-by the Internet Service Provider who operates this cache. Please
-contact them directly if you feel this is an error.
+POST¤«PUT¤Î¥ê¥¯¥¨¥¹¥È¤ò¤·¤Æ¤¤¤¿¤Ê¤é¡¢¤¢¤Ê¤¿¤Î¥ê¥¯¥¨¥¹¥È¤ÎËÜÂÎ
+(¤¢¤Ê¤¿¤¬¥¢¥Ã¥×¥í¡¼¥É¤ò»î¤ß¤è¤¦¤È¤·¤Æ¤¤¤¿¤â¤Î)¤¬Â礤¹¤®¤Þ¤¹¡£
+GET¤Î¥ê¥¯¥¨¥¹¥È¤ò¤·¤Æ¤¤¤¿¤Ê¤é¡¢¥ê¥×¥é¥¤¤ÎËÜÂÎ(¥À¥¦¥ó¥í¡¼¥É¤·¤è¤¦
+¤È¤·¤Æ¤¤¤¿¤â¤Î)¤¬Â礤¹¤®¤Þ¤¹¡£¤³¤ì¤é¤ÎÀ©¸Â¤Ï¡¢¤³¤Î¥¥ã¥Ã¥·¥å¤Î
+±¿ÍѼԤˤè¤Ã¤Æ²Ý¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
+¤³¤ì¤¬¥¨¥é¡¼¤À¤È´¶¤¸¤ë¤È¤¤ÏľÀܱ¿ÍѼԤËÏ¢Íí¤·¤Æ²¼¤µ¤¤¡£
</UL>
<P>
-Your cache administrator is <A HREF="mailto:%w">%w</A>.
+¥¥ã¥Ã¥·¥å¤Î´ÉÍý¼Ô¤Ï<A HREF="mailto:%w">%w</A>¤Ç¤¹¡£
--- /dev/null
+<HTML><HEAD>
+<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+</HEAD><BODY>
+<H1>ERROR</H1>
+<H2>The requested URL could not be retrieved</H2>
+<HR>
+<P>
+While trying to retrieve the URL:
+<A HREF="%U">%U</A>
+<P>
+The following error was encountered:
+<UL>
+<LI>
+<STRONG>
+The request or reply is too large.
+</STRONG>
+<P>
+If you are making a POST or PUT request, then your request body
+(the thing you are trying to upload) is too large. If you are
+making a GET request, then the reply body (what you are trying
+to download) is too large. These limits have been established
+by the Internet Service Provider who operates this cache. Please
+contact them directly if you feel this is an error.
+</UL>
+<P>
+Your cache administrator is <A HREF="mailto:%w">%w</A>.
--- /dev/null
+<HTML><HEAD>
+<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+</HEAD><BODY>
+<H1>ERROR</H1>
+<H2>The requested URL could not be retrieved</H2>
+<HR>
+<P>
+An FTP authentication failure occurred
+while trying to retrieve the URL:
+<A HREF="%U">%U</A>
+<P>
+Squid sent the following FTP command:
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+and then received this reply
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
--- /dev/null
+<HTML><HEAD>
+<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+</HEAD><BODY>
+<H1>ERROR</H1>
+<H2>The requested URL could not be retrieved</H2>
+<HR>
+<P>
+The following URL could not be retrieved:
+<A HREF="%U">%U</A>
+<P>
+Squid sent the following FTP command:
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+and then received this reply
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>
+This might be caused by an FTP URL with an absolute path (which does
+not comply with RFC 1738). If this is the cause, then the file
+can be found at <A HREF="%B">%B</A>.
+<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
--- /dev/null
+<HTML><HEAD>
+<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+</HEAD><BODY>
+<H1>ERROR</H1>
+<H2>The requested URL could not be retrieved</H2>
+<HR>
+<P>
+The FTP server was too busy while trying to retrieve the URL:
+<A HREF="%U">%U</A>
+<P>
+Squid sent the following FTP command:
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+and then received this reply
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>Your cache administrator is <A HREF="mailto:%w">%w</A>.
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Access Denied.
+<BR>¾Ü¾ø·ÃÎÊ
+</STRONG>
+<P>
+Access control configuration prevents your request from
+being allowed at this time. Please contact your service provider if
+you feel this is incorrect.
+<BR>
+µ±Ç°µÄ´æÈ¡¿ØÖÆÉ趨½ûÖ¹ÄúµÄÇëÇó±»½ÓÊÜ£¬
+Èç¹ûÄú¾õµÃÕâÊÇ´íÎóµÄ£¬ÇëÓëÄúÍø··þÎñµÄÌṩÕßÁªÏµ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
+
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÍøÂ绺´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ</TITLE>
+</HEAD>
+<BODY>
+<H1>´íÎó</H1>
+<H2>ÍøÂ绺´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Cache Access Denied.
+<BR>
+»º´æ·þÎñÆ÷¾Ü¾ø·ÃÎÊ
+</STRONG>
+</UL>
+</P>
+
+<P>
+±§Ç¸£¬Äú²»±»ÔÊÐíͨ¹ý±¾ÍøÂ绺´æ·þÎñÆ÷·ÃÎÊÏÂÁÐλÖãº
+<BR> %U<BR>
+³ý·ÇÄúͨ¹ýÁËÎÒÃǵÄÉí·ÝÑéÖ¤¡£
+</P>
+
+<P>
+You need to use Netscape version 2.0 or greater, or Microsoft Internet
+Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
+contact the <A HREF="mailto:%w">cache administrator</a> if you have
+difficulties authenticating yourself or
+<A HREF="http://%h/cgi-bin/chpasswd.cgi\">change</a> your default password.
+<BR>
+ÄúÐèҪʹÓà Netscape version 2.0 »ò¸üеİ汾£¬»òÊÇʹÓà Microsoft Internet
+Explorer 3.0£¬»òÊÇÒ»¸ö HTTP/1.1 ÏàÈݵÄä¯ÀÀÆ÷À´½øÐй¤×÷¡£Èç¹ûÄúÔÚÉí·ÝÑéÖ¤ÉÏ
+·¢ÉúÀ§ÄÑ£¬ÇëÓë <A HREF="mailto:%w">¹ÜÀíÕß</a> ÁªÏµ¡£
+»òÊÇ<A HREF="http://%h/cgi-bin/chpasswd.cgi\">¸ü¸Ä</a>ÄúµÄÃÜÂë¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎ󣺻º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ</TITLE>
+</HEAD>
+<BODY>
+<H1>´íÎó</H1>
+<H2>»º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Cache Manager Access Denied.
+<BR>
+»º´æ¹ÜÀíÆ÷¾Ü¾ø·ÃÎÊ
+</STRONG>
+</UL>
+</P>
+
+<P>
+±§Ç¸£¬Äú²»±»ÔÊÐíͨ¹ý±¾»º´æ¹ÜÀíÆ÷·ÃÎÊÒÔÏÂλÖãº
+<BR> %U<BR>
+³ý·ÇÄúͨ¹ýÎÒÃǵÄÉí·ÝÑéÖ¤¡£
+</P>
+
+<P> You need to use Netscape version 2.0 or greater, or Microsoft Internet
+Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. Please
+contact the <A HREF="mailto:%w">cache administrator</a> if you have
+difficulties authenticating yourself or, if you <em>are</em> the
+administrator, read Squid documentation on cache manager interface and check
+cache log for more detailed error messages.
+<BR>
+ÄúÐèҪʹÓà Netscape version 2.0 »ò×îеİ汾£¬»òÊÇʹÓà Microsoft Internet
+Explorer 3.0£¬»òÊÇÒ»¸ö HTTP/1.1 ÏàÈݵÄä¯ÀÀÆ÷À´½øÐй¤×÷¡£Èç¹ûÄúÊÇÔÚÉí·ÝÑéÖ¤ÉÏ·¢
+ÉúÎÊÌ⣬ÇëÏÈÈ·¶¨ÄúÓÐȨ¶Ô»º´æʹÓùÜÀíÆ÷¡£
+»òÊÇÓë<A HREF="mailto:%w">¹ÜÀíÕß</a>ÁªÏµ¡£Èç¹ûÄú<em>¾ÍÊÇ</em>¹ÜÀíÕߣ¬ÇëÏêϸÔĶÁ Squid Ëù¸½ÎļþÖÐÓë
+cache manager Óйز¿·Ý»ò¼ì²é cache log ÒÔ±ãµÃµ½¸üÏ꾡µÄϸ½Ú¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£»ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÏÂÃæµÄÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Unable to forward this request at this time.
+<BR>
+Ä¿Ç°ÎÞ·¨½«ÄúµÄÇëÇó½øÐÐתËͲÙ×÷
+</STRONG>
+</UL>
+
+<P>
+This request could not be forwarded to the origin server or to any
+parent caches. The most likely cause for this error is that:
+<UL>
+<LI>The cache administrator does not allow this cache to make
+ direct connections to origin servers, and
+<LI>All configured parent caches are currently unreachable.
+</UL>
+</P>
+<P>
+ÄúµÄÇëÇóÎÞ·¨±»×ªË͵½ÔʼÍøÂç·þÎñÆ÷»òÆäËûµÄÉϲ㻺´æ·þÎñÆ÷£¬·¢ÉúÕâ¸öÎÊÌâ×î¿ÉÄܵÄÔÒòÊÇ£º
+<UL>
+<LI>»º´æ·þÎñÆ÷¹ÜÀíÔ±²»ÔÊÐí±¾·þÎñÆ÷ÓëÔʼÍøÂç·þÎñÆ÷Ö±½ÓÁ¬½á£¬¶ø
+<LI>ËùÓб¾·þÎñÆ÷Ö¸¶¨µÄÉϲ㻺´æ·þÎñÆ÷¶¼ÔÝʱÎÞ·¨Á¬½á¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Connection Failed
+<BR>
+Á¬½Óʧ°Ü
+</STRONG>
+</UL>
+
+<P>
+ϵͳ·µ»ØÒÔÏÂÄÚÈÝ£º
+<PRE><I> %E</I></PRE>
+
+<P>
+The remote host or network may be down. Please try the request again.
+<BR>
+ÄúÒªÁ¬½áµÄÍøÂç·þÎñÆ÷»òÍøÂç¿ÉÄÜ·¢Éú¹ÊÕÏ¡£ÇëÉÔºóÔÙÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<BLOCKQUOTE>
+ÎÞ·¨½«ÄúÊäÈëµÄÖ÷»úÃû³Æ£º<I>%H</I>ת»»³É IP µØÖ·
+</BLOCKQUOTE>
+</UL>
+
+<P>
+ÓòÃû·þÎñÆ÷·µ»ØÒÔÏÂѶϢ£º
+<BLOCKQUOTE>
+%z
+</BLOCKQUOTE>
+
+<P>
+Õâ±íʾ£º
+<PRE>
+ The cache was not able to resolve the hostname presented in the URL.
+ Check if the address is correct.
+ »º´æ·þÎñÆ÷ÎÞ·¨½âÎöÄúÊäÈëÍøÖ·£¨URL£©ÖеÄÖ÷»úÃû³Æ£¬
+ Çë¼ì²é¸ÃÃû³ÆÊÇ·ñÕýÈ·¡£
+</PRE>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Forwarding Denied.
+<BR>
+¾Ü¾øתËÍ
+</STRONG>
+</UL>
+
+<P>
+This cache will not forward your request because it is trying to enforce a
+sibling relationship. Perhaps the client at %i is a cache which has been
+misconfigured.
+<BR>
+±¾»º´æ·þÎñÆ÷ÎÞ·¨×ªËÍÄúµÄÇëÇó£¬Ò²ÐíÄúÊÇͨ¹ýÒ»¸ö²¢Î´±»±¾»º´æ·þÎñÆ÷
+É趨ΪÔÊÐí´æÈ¡µÄ»º´æ·þÎñÆ÷£¨%i£©À´·ÃÎʵġ£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+FTP is Disabled
+<BR>
+½ûֹʹÓÃÎļþ´«ÊäÐÒé
+</STRONG>
+</UL>
+
+<P>
+This cache does not support FTP.
+<BR>
+±¾»º´æ·þÎñÆ÷먦·ÅÎļþ´«Êä·þÎñ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±·¢ÉúÎļþ´«ÊäÐÒé´íÎó£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏ FTP ÃüÁ
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±Îļþ´«ÊäÐÒ飨FTP£©Éí·ÝÑé֤ʧ°Ü£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏ FTP ÃüÁ
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+</P>
+
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+ÒÔÏÂÍøÖ·ÎÞ·¨¶ÁÈ¡£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏ FTP ÃüÁ
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+<P>
+Õâ¿ÉÄÜÊÇÓÉÓÚ FTP ÍøÖ·£¨URL£©Öаüº¬Á˾ø¶Ô·¾¶ËùÖ£¨²»·ûºÏ RFC1738£©¡£Èç¹ûÕæµÄÊÇÕâÑù£¬
+Îļþ¿ÉÒÔ´Ó<A HREF="%B">%B</A>λÖÃÕÒµ½¡£
+</P>
+
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>ÎļþÉÏ´« PUT Ö¸ÁîÍê³É£ºÎļþÒѱ»½¨Á¢</TITLE>
+</HEAD><BODY>
+<H1>²Ù×÷³É¹¦</H1>
+<H2>ÎļþÒѽ¨Á¢</H2>
+<HR>
+<P>
+</P>
+
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÎļþÉÏ´«Ê§°Ü</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÎļþÉÏ´«£¨FTP PUT£©²Ù×÷ʧ°Ü</H2>
+<HR>
+<P>
+µ±³¢ÊÔÉÏ´«£¨PUT£©µ½ÒÔÏÂλÖÃʱ£º
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏ FTP ÃüÁ
+<PRE><STRONG>
+ %f
+</STRONG></PRE>
+È»ºóÊÕµ½ÈçÏ»ØÓ¦£º
+<PRE><STRONG>
+ %F
+</STRONG></PRE>
+<P>
+<PRE>
+Çë¼ì²éÉÏ´«Â·¾¶£¬ÉÏ´«Î»ÖöÁдȨÏÞ£¬¿ÉÓôÅÅÌ¿Õ¼äºóÔÙ½øÐг¢ÊÔ¡£
+</PRE>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>ÎļþÉÏ´« PUT Ö¸ÁîÍê³É£ºÎļþÒѱ»¸üÐÂ</TITLE>
+</HEAD><BODY>
+<H1>²Ù×÷³É¹¦</H1>
+<H2>ÎļþÒѸüÐÂ</H2>
+<HR>
+<P>
+</P>
+
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó: ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê± FTP ·þÎñÆ÷¹ý棺
+<A HREF="%U">%U</A>
+<P>
+±¾»º´æ·þÎñÆ÷·¢³öÒÔÏ FTP ÃüÁ
+<blockquote><strong><pre>%f</pre></strong></blockquote>
+È»ºóÊÕµ½ÈçÏ»ØÓ¦£º
+<blockquote><strong><pre>%F</pre></strong></blockquote>
+<blockquote><strong><pre>%g</pre></strong></blockquote>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ½øÐÐÒÔÏÂÇëÇóʱ£º
+<PRE>
+%R
+</PRE>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Invalid Request
+<BR>
+ÎÞЧµÄÇëÇó
+</STRONG>
+</UL>
+
+<P>
+Some aspect of the HTTP Request is invalid. Possible problems:
+<BR>
+HTTP ÇëÇóµÄijЩ·½ÃæÊÇÎÞЧµÄ¡£¿ÉÄÜÊÇÏÂÁÐÎÊÌ⣺
+<UL>
+<LI>Missing or unknown request method
+<BR>ȱÉÙÇëÇó·½Ê½»òδ֪µÄÇëÇó·½Ê½
+<LI>Missing URL
+<BR>ȱÉÙÍøÖ·
+<LI>Missing HTTP Identifier (HTTP/1.0)
+<BR>ȱÉÙ HTTP ±êʶ£¨HTTP/1.0£©
+<LI>Request is too large
+<BR>ÇëÇóÃüÁî¹ý³¤
+<LI>Content-Length missing for POST or PUT requests
+<BR>POST »ò PUT ÇëÇóȱÉÙÄÚÈݳ¤¶È
+<LI>Illegal character in hostname; underscores are not allowed
+<BR>Ö÷»úÃû³ÆÖаüº¬²»ºÏ·¨µÄ×Ö·û£»Ï»®ÏßÊDz»ÔÊÐíµÄ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>.
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Invalid URL
+<BR>
+ÎÞЧµÄÍøÖ·
+</STRONG>
+</UL>
+
+<P>
+Some aspect of the requested URL is incorrect. Possible problems:
+<BR>
+ÊäÈëÍøÖ·µÄijЩµØ·½ÓÐÎ󣬿ÉÄÜÊÇÒòΪ£º
+<UL>
+<LI>Missing or incorrect access protocol (should be `http://'' or similar)
+<BR>ȱÉÙ»ò²»ÕýÈ·µÄͨѶÐÒ飨Ӧ¸ÃÈç `http://''»òÀàËƵĿªÍ·£©
+<LI>Missing hostname
+<BR>ȱÉÙÓûÁ¬½áµÄÖ÷»úÃû³Æ
+<LI>Illegal double-escape in the URL-Path
+<BR>Íøַ·¾¶ÖÐÓв»ºÏ·¨Ë«ÖØתÒå·û
+<LI>Illegal character in hostname; underscores are not allowed
+<BR>Ö÷»úÃû³ÆÖаüº¬²»ºÏ·¨µÄ×Ö·û£»Ï»®ÏßÊDz»ÔÊÐíµÄ¡£
+</UL>
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Connection Lifetime Expired
+<BR>
+Á¬½Ó³¬Ê±
+</STRONG>
+</UL>
+
+<P>
+Squid has terminated the request because it has exceeded the maximum
+connection lifetime.
+<BR>
+»º´æ·þÎñÆ÷ÒÑÖÕÖ¹ÄúµÄÁ¬½ÓÇëÇó£¬ÒòΪÒѾ³¬¹ýÁË×î´óÁ¬½ÓµÈ´ýʱ¼ä¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+No Wais Relay
+<BR>
+ÎÞ Wais ÖмÌ
+</STRONG>
+</UL>
+
+<P>
+There is no WAIS Relay host defined for this Cache! Yell at the administrator.
+<BR>
+±¾»º´æ·þÎñÆ÷ûÓÐÉ趨 WAIS ÖмÌÖ÷»ú£¡ÈçÓÐÒÉÎÊÇëÓ뻺´æ·þÎñÆ÷¹ÜÀíÔ±ÁªÏµ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Valid document was not found in the cache and <code>only-if-cached</code>
+directive was specified.
+<BR>
+ÇëÇóµÄÎļþÔÚ±¾»º´æ·þÎñÆ÷ÉÏδÕÒµ½£¬¶øÄúÉ趨ÁË<code>only-if-cached</code>£¨Ö»¶ÁÈ¡»º´æ£©
+Ö¸Áî¡£
+</STRONG>
+</UL>
+
+<P>
+
+You have issued a request with a <code>only-if-cached</code> cache control
+directive. The document was not found in the cache, <em>or</em> it required
+revalidation prohibited by <code>only-if-cached</code> directive.
+<BR>
+ÄúËͳöÁËÒ»¸ö°üº¬ <code>only-if-cached</code> £¨Ö»¶ÁÈ¡»º´æ£©»º´æ¿ØÖÆÖ¸ÁîµÄÁ¬½áÇëÇó¡£
+¶øËùÒªµÄÎļþ²¢Î´´æÔÚÓÚ±¾»º´æ·þÎñÆ÷ÖУ¬<em>»òÕß</em>Õâ¸öÁ¬½áÇëÇóÐèҪˢÐÂÎļþ¶ø
+<code>only-if-cached</code> Ö¸Áî½ûÖ¹Õâô×ö¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Read Error
+<BR>
+¶ÁÈ¡´íÎó
+</STRONG>
+</UL>
+
+<P>
+ϵͳ»ØÓ¦£º
+<PRE><I> %E</I></PRE>
+
+<P>
+An error condition occurred while reading data from the network. Please
+retry your request.
+<BR>
+ÕýÔÚͨ¹ýÍøÂç¶ÁÈ¡Êý¾Ýʱ·¢ÉúÁË´íÎó£¬ÇëÖØг¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Read Timeout
+<BR>
+¶ÁÈ¡³¬Ê±
+</STRONG>
+</UL>
+
+<P>
+ϵͳ»ØÓ¦£º
+<PRE><I> %E</I></PRE>
+
+<P>
+A Timeout occurred while waiting to read data from the network. The network
+or server may be down or congested. Please retry your request.
+<BR>
+µ±Í¨¹ýÍøÂç¶ÁÈ¡Êý¾Ýʱ£¬³¬¹ýÁ˵ȴýʱÏÞ¡£
+¿ÉÄÜÊÇÒòΪÍøÂç¶ÂÈû»òÁ¬½ÓµÄÍøÂç·þÎñÆ÷Òѹرա£ÇëÖØг¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<P>
+This cache is in the process of shutting down and can not
+service your request at this time. Please retry your
+request again soon.
+<BR>
+±¾»º´æ·þÎñÆ÷ÕýÔڹرգ¬ÔÝʱÎÞ·¨ÎªÄú·þÎñ¡£
+ÇëÉÔºîÔÙÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Socket Failure
+<BR>
+Socket ½¨Á¢Ê§°Ü
+</STRONG>
+</UL>
+
+<P>
+ϵͳ»ØÓ¦£º
+<PRE><I> %E</I></PRE>
+
+<P>
+Squid is unable to create a TCP socket, presumably due to excessive load.
+Please retry your request.
+<BR>
+Squid £¨»º´æ·þÎñÆ÷£©ÎÞ·¨½¨Á¢ TCP socket£¨ÎÞ·¨ÏòϵͳÉêÇ뽨Á¢ÐµÄÍøÂçÁ¬½Ó£©£¬
+¿ÉÄÜÊÇÒòΪ¸ººÉ¹ýÖØ£¬ÇëÖØг¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+ÇëÇó»òÏìӦ̫´ó
+</STRONG>
+<P>
+Èç¹ûÄúÕýÔÚ½øÐÐ POST »ò PUT ÇëÇó£¬ÔòÄúÇëÇó´«Ë͵ÄÄÚÈÝÌ«´ó£¨¿ÉÄÜÄú
+ÕýÔÚÉÏ´«Îļþ£©¡£Èç¹ûÄúÕýÔÚ½øÐÐ GET ÇëÇó£¬ÔòÏìÓ¦µÄÄÚÈÝÌ«³¤¡£ÕâЩ
+³¤¶ÈÏÞÖÆÓɲÙ×÷±¾»º´æ·þÎñÆ÷µÄ·þÎñÌṩÕßÖƶ¨¡£Èç¹ûÄú¾õµÃÕâÊÇ´íÎóµÄ£¬
+ÇëÓëËûÃÇÖ±½ÓÁªÏµ¡£
+</UL>
+<P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Unsupported Request Method and Protocol
+<BR>
+²»Ö§³ÖµÄÇëÇó·½Ê½ºÍÐÒé
+</STRONG>
+</UL>
+
+<P>
+Squid does not support all request methods for all access protocols.
+For example, you can not POST a Gopher request.
+<BR>
+Squid £¨»º´æ·þÎñÆ÷£©²»ÄܶÔËùÓеĴæÈ¡ÐÒéÖ§³ÖËùÓеÄÇëÇó·½Ê½¡£
+±ÈÈç˵£¬Äã²»ÄÜ¶Ô GOPHER ½øÐÐÒ»¸ö POST ÇëÇó¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄ URN ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>URN ÖеÄÒ»¸öÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏ URN ʱ£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Cannot Resolve URN
+<BR>
+ÎÞ·¨½âÎö URN
+</STRONG>
+</UL>
+
+<P>
+Hey, don't expect too much from URNs on %T :)
+<BR>
+±§Ç¸£¡Äú²»ÄÜ¶Ô %T É쵀 URNs ÆÚ´ýÌ«¶à :)
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Write Error
+<BR>
+дÈë´íÎó
+</STRONG>
+</UL>
+
+<P>
+ϵͳ»ØÓ¦£º
+<PRE><I> %E</I></PRE>
+
+<P>
+An error condition occurred while writing to the network. Please retry your
+request.
+<BR>
+ͨ¹ýÍøÂçдÈëÊý¾Ýʱ·¢ÉúÁË´íÎó£¬ÇëÖØг¢ÊÔ¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+Zero Sized Reply
+<BR>
+ÏìÓ¦ÄÚÈݳ¤¶ÈΪÁã
+</STRONG>
+</UL>
+
+<P>
+Squid did not receive any data for this request.
+<BR>
+±¾»º´æ·þÎñÆ÷´Ó±»Á¬½ÓµÄ·þÎñÆ÷ÉÏûÓÐÊÕµ½ÈκÎÊý¾Ý¡£
+</P>
+<P>±¾»º´æ·þÎñÆ÷¹ÜÀíÔ±£º<A HREF="mailto:%w">%w</A>
--- /dev/null
+This Simplify Chinese error pages is based on the
+Erick C. Chang <erick@mail.thu.edu.tw> 's Traditional Chinese error pages.
+and suitable for SQUID 2.3 STABLE 1.
+
+I first translate these pages from Traditional Chinese to Simplify Chinese
+use a auto program. Then I check and compare with English pages to get more
+accurate result. It take me over one half of time than direct translation
+from english. Because the technical terms are very different in two area.
+And I also fixed some minor mistakes.
+
+Wang DaQing wdq@bigfoot.com
--- /dev/null
+<HTML><HEAD>
+<meta charset=gb2312">
+<TITLE>´íÎó£ºÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</TITLE>
+</HEAD><BODY>
+<H1>´íÎó</H1>
+<H2>ÄúËùÇëÇóµÄÍøÖ·£¨URL£©ÎÞ·¨»ñÈ¡</H2>
+<HR>
+<P>
+µ±³¢ÊÔ¶ÁÈ¡ÒÔÏÂÍøÖ·£¨URL£©Ê±£º
+<A HREF="%U">%U</A>
+<P>
+·¢ÉúÁËÏÂÁеĴíÎó£º
+<UL>
+<LI>
+<STRONG>
+@SHORT_DESCRIPTION@
+</STRONG>
+</UL>
+
+<P>
+ϵͳ»ØÓ¦ÒÔÏÂÐÅÏ¢£º
+<PRE><I> %E</I></PRE>
+
+<P>
+Õâ±íʾ£º
+<PRE>
+ @LONG_DESCRIPTION@
+</PRE>
+</P>
+
/*
- * $Id: HttpReply.cc,v 1.41 2000/04/16 21:59:45 wessels Exp $
+ * $Id: HttpReply.cc,v 1.42 2000/05/16 07:06:02 wessels Exp $
*
* DEBUG: section 58 HTTP Reply (Response)
* AUTHOR: Alex Rousskov
static int httpReplyParseStep(HttpReply * rep, const char *parse_start, int atEnd);
static int httpReplyParseError(HttpReply * rep);
static int httpReplyIsolateStart(const char **parse_start, const char **blk_start, const char **blk_end);
+static time_t httpReplyHdrExpirationTime(const HttpReply * rep);
/* module initialization */
memFree(rep, MEM_HTTP_REPLY);
}
+static time_t
+httpReplyHdrExpirationTime(const HttpReply * rep)
+{
+ /* The s-maxage and max-age directive takes priority over Expires */
+ if (rep->cache_control) {
+ if (rep->date >= 0) {
+ if (rep->cache_control->s_maxage >= 0)
+ return rep->date + rep->cache_control->s_maxage;
+ if (rep->cache_control->max_age >= 0)
+ return rep->date + rep->cache_control->max_age;
+ } else {
+ /*
+ * Conservatively handle the case when we have a max-age
+ * header, but no Date for reference?
+ */
+ if (rep->cache_control->s_maxage >= 0)
+ return squid_curtime;
+ if (rep->cache_control->max_age >= 0)
+ return squid_curtime;
+ }
+ }
+ if (httpHeaderHas(&rep->header, HDR_EXPIRES)) {
+ const time_t e = httpHeaderGetTime(&rep->header, HDR_EXPIRES);
+ /*
+ * HTTP/1.0 says that robust implementations should consider
+ * bad or malformed Expires header as equivalent to "expires
+ * immediately."
+ */
+ return e < 0 ? squid_curtime : e;
+ }
+ return -1;
+}
+
/* sync this routine when you update HttpReply struct */
static void
httpReplyHdrCacheInit(HttpReply * rep)
rep->content_length = httpHeaderGetInt(hdr, HDR_CONTENT_LENGTH);
rep->date = httpHeaderGetTime(hdr, HDR_DATE);
rep->last_modified = httpHeaderGetTime(hdr, HDR_LAST_MODIFIED);
- rep->expires = httpHeaderGetTime(hdr, HDR_EXPIRES);
str = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE);
if (str)
stringLimitInit(&rep->content_type, str, strcspn(str, ";\t "));
rep->cache_control = httpHeaderGetCc(hdr);
rep->content_range = httpHeaderGetContRange(hdr);
rep->keep_alive = httpMsgIsPersistent(rep->sline.version, &rep->header);
- /* final adjustments */
- /* The s-maxage and max-age directive takes priority over Expires */
- if (rep->cache_control && rep->cache_control->s_maxage >= 0)
- rep->expires = squid_curtime + rep->cache_control->s_maxage;
- else if (rep->cache_control && rep->cache_control->max_age >= 0)
- rep->expires = squid_curtime + rep->cache_control->max_age;
- else
- /*
- * The HTTP/1.0 specs says that robust implementations should consider bad
- * or malformed Expires header as equivalent to "expires immediately."
- */
- if (rep->expires < 0 && httpHeaderHas(hdr, HDR_EXPIRES))
- rep->expires = squid_curtime;
+ /* be sure to set expires after date and cache-control */
+ rep->expires = httpReplyHdrExpirationTime(rep);
}
/* sync this routine when you update HttpReply struct */
/*
- * $Id: asn.cc,v 1.61 2000/05/12 00:29:06 wessels Exp $
+ * $Id: asn.cc,v 1.62 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 53 AS Number handling
* AUTHOR: Duane Wessels, Kostas Anagnostakis
memFree(buf, MEM_4K_BUF);
asStateFree(asState);
return;
+ } else if (HTTP_OK != e->mem_obj->reply->sline.status) {
+ debug(53, 1) ("WARNING: AS %d whois request failed\n",
+ asState->as_number);
+ memFree(buf, MEM_4K_BUF);
+ asStateFree(asState);
+ return;
}
s = buf;
while (s - buf < size && *s != '\0') {
/*
- * $Id: cache_cf.cc,v 1.344 2000/05/12 00:29:06 wessels Exp $
+ * $Id: cache_cf.cc,v 1.345 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 3 Configuration File Parsing
* AUTHOR: Harvest Derived
}
if (aclPurgeMethodInUse(Config.accessList.http))
Config2.onoff.enable_purge = 1;
+ if (NULL != Config.effectiveUser) {
+ struct passwd *pwd = getpwnam(Config.effectiveUser);
+ if (NULL == pwd)
+ /*
+ * Andres Kroonmaa <andre@online.ee>:
+ * Some getpwnam() implementations (Solaris?) require
+ * an available FD < 256 for opening a FILE* to the
+ * passwd file.
+ * DW:
+ * This should be safe at startup, but might still fail
+ * during reconfigure.
+ */
+ fatalf("getpwnam failed to find userid for effective user '%s'",
+ Config.effectiveUser,
+ xstrerror());
+ Config2.effectiveUserID = pwd->pw_uid;
+ }
+ if (NULL != Config.effectiveGroup) {
+ struct group *grp = getgrnam(Config.effectiveGroup);
+ if (NULL == grp)
+ fatalf("getgrnam failed to find groupid for effective group '%s'",
+ Config.effectiveGroup,
+ xstrerror());
+ Config2.effectiveGroupID = grp->gr_gid;
+ }
}
/* Parse a time specification from the config file. Store the
p->tcp_up = PEER_TCP_MAGIC_COUNT;
p->test_fd = -1;
#if USE_CARP
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> ((sizeof(u_long)*8)-(n))))
if (p->carp.load_factor) {
/* calculate this peers hash for use in CARP */
p->carp.hash = 0;
for (token = p->host; *token != 0; token++)
- p->carp.hash += (p->carp.hash << 19) + *token;
+ p->carp.hash += ROTATE_LEFT(p->carp.hash, 19) + *token;
+ p->carp.hash += p->carp.hash * 0x62531965;
+ p->carp.hash += ROTATE_LEFT(p->carp.hash, 21);
}
#endif
/* This must preceed peerDigestCreate */
/*
- * $Id: cache_manager.cc,v 1.21 2000/03/06 16:23:29 wessels Exp $
+ * $Id: cache_manager.cc,v 1.22 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 16 Cache Manager Objects
* AUTHOR: Duane Wessels
static const char *cachemgrActionProtection(const action_table * at);
static OBJH cachemgrShutdown;
static OBJH cachemgrMenu;
+static OBJH cachemgrOfflineToggle;
action_table *ActionTable = NULL;
shut_down(0);
}
+static void
+cachemgrOfflineToggle(StoreEntry * sentry)
+{
+ Config.onoff.offline = !Config.onoff.offline;
+ debug(16, 0) ("offline_mode now %s.\n",
+ Config.onoff.offline ? "ON" : "OFF");
+ storeAppendPrintf(sentry, "offline_mode is now %s\n",
+ Config.onoff.offline ? "ON" : "OFF");
+}
+
static const char *
cachemgrActionProtection(const action_table * at)
{
cachemgrRegister("shutdown",
"Shut Down the Squid Process",
cachemgrShutdown, 1, 1);
+ cachemgrRegister("offline_toggle",
+ "Toggle offline_mode setting",
+ cachemgrOfflineToggle, 1, 1);
}
/*
- * $Id: carp.cc,v 1.7 2000/03/06 16:23:29 wessels Exp $
+ * $Id: carp.cc,v 1.8 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 39 Cache Array Routing Protocol
* AUTHOR: Eric Stern
peer *
carpSelectParent(request_t * request)
{
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> ((size(u_long)*8)-(n))))
const char *c;
peer *p = NULL;
peer *tp;
/* calculate url hash */
debug(39, 2) ("carpSelectParent: CARP Calculating hash for %s\n", url);
for (c = url; *c != 0; c++)
- url_hash += (url_hash << 19) + *c;
+ url_hash += ROTATE_LEFT(url_hash, 19) + *c;
/* select peer */
for (tp = Config.peers; tp; tp = tp->next) {
if (0.0 == tp->carp.load_factor)
assert(tp->type == PEER_PARENT);
combined_hash = (url_hash ^ tp->carp.hash);
combined_hash += combined_hash * 0x62531965;
- combined_hash = combined_hash << 21;
+ combined_hash = ROTATE_LEFT(combined_hash, 21);
combined_hash = combined_hash * tp->carp.load_multiplier;
debug(39, 3) ("carpSelectParent: %s combined_hash %d\n",
tp->host, combined_hash);
#
-# $Id: cf.data.pre,v 1.182 2000/05/12 03:17:50 wessels Exp $
+# $Id: cf.data.pre,v 1.183 2000/05/16 07:06:03 wessels Exp $
#
#
# SQUID Internet Object Cache http://squid.nlanr.net/Squid/
See replacement_policy below for a discussion of this policy.
DOC_END
+NAME: minimum_object_size
+COMMENT: (bytes)
+TYPE: b_size_t
+DEFAULT: 0 KB
+LOC: Config.Store.minObjectSize
+DOC_START
+ Objects smaller than this size will NOT be saved on disk. The
+ value is specified in kilobytes, and the default is 0 KB, which
+ means there is no minimum.
+DOC_END
NAME: ipcache_size
COMMENT: (number of entries)
can cut off long filenames when browsing ftp sites.
DOC_END
+NAME: ftp_passive
+TYPE: onoff
+DEFAULT: on
+LOC: Config.Ftp.passive
+DOC_START
+ If your firewall does not allow Squid to use passive
+ connections, then turn off this option.
+DOC_END
+
NAME: cache_dns_program
TYPE: string
IFDEF: USE_DNSSERVERS
IFDEF: USE_ICMP
DOC_START
Specify the location of the executable for the pinger process.
+ This is only useful if you configured Squid (during compilation)
+ with the '--enable-icmp' option.
DOC_END
disables WCCP.
DOC_END
+NAME: wccp_version
+TYPE: int
+LOC: Config.Wccp.version
+DEFAULT: 4
+IFDEF: USE_WCCP
+DOC_START
+ According to some users, Cisco IOS 11.2 only supports WCCP
+ version 3. If you're using that version of IOS, change
+ this value to 3.
+DOC_END
+
NAME: wccp_incoming_address
TYPE: address
LOC: Config.Wccp.incoming
/*
- * $Id: client.cc,v 1.87 2000/03/06 16:23:29 wessels Exp $
+ * $Id: client.cc,v 1.88 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 0 WWW Client
* AUTHOR: Harvest Derived
}
loops = ping ? pcount : 1;
for (i = 0; loops == 0 || i < loops; i++) {
+ int fsize = 0;
/* Connect to the server */
if ((conn = socket(PF_INET, SOCK_STREAM, 0)) < 0) {
perror("client: socket");
/* Read the data */
while ((len = read(conn, buf, sizeof(buf))) > 0) {
+ fsize += len;
if (to_stdout)
fwrite(buf, len, 1, stdout);
}
elapsed_msec = tvSubMsec(tv1, tv2);
t2s = tv2.tv_sec;
tmp = localtime(&t2s);
- fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs\n",
+ fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
- elapsed_msec / 1000, elapsed_msec % 1000);
+ elapsed_msec / 1000, elapsed_msec % 1000,
+ elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
if (i == 0 || elapsed_msec < ping_min)
ping_min = elapsed_msec;
if (i == 0 || elapsed_msec > ping_max)
/*
- * $Id: client_db.cc,v 1.48 2000/03/06 16:23:29 wessels Exp $
+ * $Id: client_db.cc,v 1.49 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 0 Client Database
* AUTHOR: Duane Wessels
{
ClientInfo *c = NULL;
char *key;
-
if (current) {
key = inet_ntoa(*current);
hash_first(client_table);
if (c == NULL) {
debug(49, 5) ("snmp_meshCtblFn: not found.\n");
*ErrP = SNMP_ERR_NOSUCHNAME;
- snmp_var_free(Answer);
- return (NULL);
+ return NULL;
}
switch (Var->name[LEN_SQ_NET + 2]) {
case MESH_CTBL_ADDR:
/*
- * $Id: client_side.cc,v 1.484 2000/05/12 03:43:00 wessels Exp $
+ * $Id: client_side.cc,v 1.485 2000/05/16 07:06:03 wessels Exp $
*
* DEBUG: section 33 Client-side Routines
* AUTHOR: Duane Wessels
static int clientCachable(clientHttpRequest * http);
static int clientHierarchical(clientHttpRequest * http);
static int clientCheckContentLength(request_t * r);
-static int httpAcceptDefer(void);
+static DEFER httpAcceptDefer;
static log_type clientProcessRequest2(clientHttpRequest * http);
static int clientReplyBodyTooLarge(int clen);
static int clientRequestBodyTooLarge(int clen);
new_request->my_addr = old_request->my_addr;
new_request->my_port = old_request->my_port;
new_request->flags.redirected = 1;
+ if (old_request->user_ident[0])
+ xstrncpy(new_request->user_ident, old_request->user_ident,
+ USER_IDENT_SZ);
if (old_request->body) {
new_request->body = xmalloc(old_request->body_sz);
xmemcpy(new_request->body, old_request->body, old_request->body_sz);
StoreEntry *entry;
ErrorState *err = NULL;
HttpReply *r;
- debug(33, 1) ("Config2.onoff.enable_purge = %d\n", Config2.onoff.enable_purge);
+ debug(33, 3) ("Config2.onoff.enable_purge = %d\n", Config2.onoff.enable_purge);
if (!Config2.onoff.enable_purge) {
http->log_type = LOG_TCP_DENIED;
err = errorCon(ERR_ACCESS_DENIED, HTTP_FORBIDDEN);
* the objects age, so a Age: 0 header does not add any useful
* information to the reply in any case.
*/
- if (http->entry->timestamp < squid_curtime)
- httpHeaderPutInt(hdr, HDR_AGE,
- squid_curtime - http->entry->timestamp);
+ if (http->entry->timestamp > -1)
+ if (http->entry->timestamp < squid_curtime)
+ httpHeaderPutInt(hdr, HDR_AGE,
+ squid_curtime - http->entry->timestamp);
}
/* Append X-Cache */
httpHeaderPutStrf(hdr, HDR_X_CACHE, "%s from %s",
http->log_type = LOG_TCP_IMS_HIT;
clientSendMoreData(data, buf, size);
} else {
+ time_t timestamp = e->timestamp;
MemBuf mb = httpPacked304Reply(e->mem_obj->reply);
http->log_type = LOG_TCP_IMS_HIT;
memFree(buf, MEM_CLIENT_SOCK_BUF);
storeUnregister(http->sc, e, http);
storeUnlockObject(e);
e = clientCreateStoreEntry(http, http->request->method, null_request_flags);
+ /*
+ * Copy timestamp from the original entry so the 304
+ * reply has a meaningful Age: header.
+ */
+ e->timestamp = timestamp;
http->entry = e;
httpReplyParse(e->mem_obj->reply, mb.buf, mb.size);
storeAppend(e, mb.buf, mb.size);
* or IMS request.
*/
if (http->entry) {
- if (EBIT_TEST(http->entry->flags, ENTRY_SPECIAL))
+ if (EBIT_TEST(http->entry->flags, ENTRY_SPECIAL)) {
debug(33, 0) ("clientProcessMiss: miss on a special object (%s).\n", url);
+ debug(33, 0) ("\tlog_type = %s\n", log_tags[http->log_type]);
+ storeEntryDump(http->entry, 1);
+ }
storeUnregister(http->sc, http->entry, http);
storeUnlockObject(http->entry);
http->entry = NULL;
}
static int
-httpAcceptDefer(void)
+httpAcceptDefer(int fdunused, void *dataunused)
{
static time_t last_warn = 0;
if (fdNFree() >= RESERVED_FD)
static aclCheck_t identChecklist;
#endif
commSetSelect(sock, COMM_SELECT_READ, httpAccept, NULL, 0);
- while (max-- && !httpAcceptDefer()) {
+ while (max-- && !httpAcceptDefer(sock, NULL)) {
memset(&peer, '\0', sizeof(struct sockaddr_in));
memset(&me, '\0', sizeof(struct sockaddr_in));
if ((fd = comm_accept(sock, &peer, &me)) < 0) {
continue;
comm_listen(fd);
commSetSelect(fd, COMM_SELECT_READ, httpAccept, NULL, 0);
- /*commSetDefer(fd, httpAcceptDefer, NULL); */
+ /*
+ * We need to set a defer handler here so that we don't
+ * peg the CPU with select() when we hit the FD limit.
+ */
+ commSetDefer(fd, httpAcceptDefer, NULL);
debug(1, 1) ("Accepting HTTP connections at %s, port %d, FD %d.\n",
inet_ntoa(s->s.sin_addr),
(int) ntohs(s->s.sin_port),
/*
- * $Id: delay_pools.cc,v 1.16 2000/05/12 00:29:07 wessels Exp $
+ * $Id: delay_pools.cc,v 1.17 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 77 Delay Pools
* AUTHOR: David Luyer <luyer@ucs.uwa.edu.au>
#include "squid.h"
struct _class1DelayPool {
+ int class;
int aggregate;
};
#define IND_MAP_SZ 256
struct _class2DelayPool {
+ int class;
int aggregate;
/* OK: -1 is terminator. individual[255] is always host 255. */
/* 255 entries + 1 terminator byte */
#define C3_IND_SZ (NET_MAP_SZ*IND_MAP_SZ)
struct _class3DelayPool {
+ int class;
int aggregate;
/* OK: -1 is terminator. network[255] is always host 255. */
/* 255 entries + 1 terminator byte */
static fd_set delay_no_delay;
static time_t delay_pools_last_update = 0;
static hash_table *delay_id_ptr_hash = NULL;
+static long memory_used = 0;
static OBJH delayPoolStats;
{
if (!pools)
return;
- delay_data = xcalloc(pools, sizeof(delayPool));
+ delay_data = xcalloc(pools, sizeof(*delay_data));
+ memory_used += sizeof(*delay_data);
eventAdd("delayPoolsUpdate", delayPoolsUpdate, NULL, 1.0, 1);
delay_id_ptr_hash = hash_create(delayIdPtrHashCmp, 256, delayIdPtrHash);
}
delay_id *id = (delay_id *) h->key;
*id = 0;
xfree(h);
+ memory_used -= sizeof(*h);
}
void
delayFreeDelayData(void)
{
safe_free(delay_data);
+ memory_used -= sizeof(*delay_data);
if (!delay_id_ptr_hash)
return;
hashFreeItems(delay_id_ptr_hash, delayIdZero);
if (*loc == 0)
return;
lnk = xmalloc(sizeof(hash_link));
+ memory_used += sizeof(hash_link);
lnk->key = (char *) loc;
hash_join(delay_id_ptr_hash, lnk);
}
assert(lnk);
hash_remove_link(delay_id_ptr_hash, lnk);
xxfree(lnk);
+ memory_used -= sizeof(*lnk);
}
void
switch (class) {
case 1:
delay_data[pool].class1 = xmalloc(sizeof(class1DelayPool));
+ delay_data[pool].class1->class = 1;
+ memory_used += sizeof(class1DelayPool);
break;
case 2:
delay_data[pool].class2 = xmalloc(sizeof(class2DelayPool));
+ delay_data[pool].class1->class = 2;
+ memory_used += sizeof(class2DelayPool);
break;
case 3:
delay_data[pool].class3 = xmalloc(sizeof(class3DelayPool));
+ delay_data[pool].class1->class = 3;
+ memory_used += sizeof(class3DelayPool);
break;
default:
assert(0);
delayFreeDelayPool(unsigned short pool)
{
/* this is a union - and all free() cares about is the pointer location */
+ switch (delay_data[pool].class1->class) {
+ case 1:
+ memory_used -= sizeof(class1DelayPool);
+ break;
+ case 2:
+ memory_used -= sizeof(class2DelayPool);
+ break;
+ case 3:
+ memory_used -= sizeof(class3DelayPool);
+ break;
+ default:
+ debug(77, 1) ("delayFreeDelayPool: bad class %d\n",
+ delay_data[pool].class1->class);
+ }
safe_free(delay_data[pool].class1);
}
ch.my_addr = r->my_addr;
ch.my_port = r->my_port;
ch.request = r;
+ if (r->client_addr.s_addr == INADDR_BROADCAST) {
+ debug(77, 2) ("delayClient: WARNING: Called with 'allones' address, ignoring\n");
+ return delayId(0, 0);
+ }
for (pool = 0; pool < Config.Delay.pools; pool++) {
if (aclCheckFast(Config.Delay.access[pool], &ch))
break;
int individual_restore_bytes, network_restore_bytes;
int mpos;
unsigned int i, j;
+ char individual_255_used;
/* delaySetSpec may be pointer to partial structure so MUST pass by
* reference.
*/
return;
individual_restore_bytes *= incr;
network_restore_bytes *= incr;
- if (class3->network_255_used)
- i = 255;
- else
- i = 0;
- for (;;) {
+ for (i = 0; i < ((class3->network_255_used) ? NET_MAP_SZ : NET_MAP_SZ - 1); ++i) {
assert(i < NET_MAP_SZ);
if (i != 255 && class3->network_map[i] == 255)
return;
if (individual_restore_bytes != -incr) {
mpos = i << 8;
- if (class3->individual_255_used[i / 8] & (1 << (i % 8)))
- j = 255;
- else
- j = 0;
- for (;;) {
+ individual_255_used = class3->individual_255_used[i / 8] & (1 << (i % 8));
+ for (j = 0; j < ((individual_255_used) ? IND_MAP_SZ : IND_MAP_SZ - 1); ++j, ++mpos) {
assert(i < NET_MAP_SZ);
assert(j < IND_MAP_SZ);
if (j != 255 && class3->individual_map[i][j] == 255)
(class3->individual[mpos] += individual_restore_bytes) >
rates->individual.max_bytes)
class3->individual[mpos] = rates->individual.max_bytes;
- mpos++;
- if (j == (IND_MAP_SZ - 1))
- mpos -= 256;
- if (++j == (IND_MAP_SZ - 1))
- break;
}
}
if (network_restore_bytes != -incr &&
assert(0);
}
}
+ storeAppendPrintf(sentry, "Memory Used: %d bytes\n", (int) memory_used);
}
#endif
/*
- * $Id: dns.cc,v 1.81 2000/03/06 16:23:31 wessels Exp $
+ * $Id: dns.cc,v 1.82 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 34 Dnsserver interface
* AUTHOR: Harvest Derived
snmp_netDnsFn(variable_list * Var, snint * ErrP)
{
variable_list *Answer = NULL;
- debug(49, 5) ("snmp_netDnsFn: Processing request:\n", Var->name[LEN_SQ_NET +
- 1]);
+ debug(49, 5) ("snmp_netDnsFn: Processing request:\n", Var->name[LEN_SQ_NET + 1]);
snmpDebugOid(5, Var->name, Var->name_length);
*ErrP = SNMP_ERR_NOERROR;
+#if USE_DNSSERVERS
switch (Var->name[LEN_SQ_NET + 1]) {
case DNS_REQ:
Answer = snmp_var_new_integer(Var->name, Var->name_length,
*ErrP = SNMP_ERR_NOSUCHNAME;
break;
}
+#else
+ Answer = snmp_var_new_integer(Var->name, Var->name_length,
+ 0,
+ SMI_COUNTER32);
+#endif
return Answer;
}
#endif /*SQUID_SNMP */
/*
- * $Id: dns_internal.cc,v 1.25 2000/05/12 00:29:07 wessels Exp $
+ * $Id: dns_internal.cc,v 1.26 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 78 DNS lookups; interacts with lib/rfc1035.c
* AUTHOR: Duane Wessels
static void
idnsAddNameserver(const char *buf)
{
+ struct in_addr A;
+ if (!safe_inet_addr(buf, &A)) {
+ debug(78, 0) ("WARNING: rejecting '%s' as a name server, because it is not a numeric IP address\n", buf);
+ return;
+ }
if (nns == nns_alloc) {
int oldalloc = nns_alloc;
ns *oldptr = nameservers;
assert(nns < nns_alloc);
nameservers[nns].S.sin_family = AF_INET;
nameservers[nns].S.sin_port = htons(DOMAIN_PORT);
- nameservers[nns].S.sin_addr.s_addr = inet_addr(buf);
+ nameservers[nns].S.sin_addr.s_addr = A.s_addr;
debug(78, 3) ("idnsAddNameserver: Added nameserver #%d: %s\n",
nns, inet_ntoa(nameservers[nns].S.sin_addr));
nns++;
t = strtok(buf, w_space);
if (NULL == t)
continue;
- if (strcasecmp(t, "nameserver") == 0) {
- t = strtok(NULL, w_space);
- if (t == NULL)
- continue;;
- debug(78, 1) ("Adding nameserver %s from %s\n", t, _PATH_RESOLV_CONF);
- idnsAddNameserver(t);
- }
+ if (strcasecmp(t, "nameserver"))
+ continue;
+ t = strtok(NULL, w_space);
+ if (t == NULL)
+ continue;
+ debug(78, 1) ("Adding nameserver %s from %s\n", t, _PATH_RESOLV_CONF);
+ idnsAddNameserver(t);
}
fclose(fp);
}
/*
- * $Id: fqdncache.cc,v 1.132 2000/03/06 16:23:31 wessels Exp $
+ * $Id: fqdncache.cc,v 1.133 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 35 FQDN Cache
* AUTHOR: Harvest Derived
hash_join(fqdn_table, (hash_link *) f);
}
-/* call during reconfigure phase to clear out all the
- * pending and dispatched reqeusts that got lost */
+/* Recalculate FQDN cache size upon reconfigure */
void
fqdncache_restart(void)
{
- fqdncache_entry *this;
- assert(fqdn_table);
- hash_first(fqdn_table);
- while ((this = (fqdncache_entry *) hash_next(fqdn_table))) {
- if (this->status == FQDN_CACHED)
- continue;
- if (this->status == FQDN_NEGATIVE_CACHED)
- continue;
- }
fqdncache_high = (long) (((float) Config.fqdncache.size *
(float) FQDN_HIGH_WATER) / (float) 100);
fqdncache_low = (long) (((float) Config.fqdncache.size *
snmp_netFqdnFn(variable_list * Var, snint * ErrP)
{
variable_list *Answer = NULL;
- debug(49, 5) ("snmp_netFqdnFn: Processing request:\n", Var->name[LEN_SQ_NET +
- 1]);
+ debug(49, 5) ("snmp_netFqdnFn: Processing request:\n", Var->name[LEN_SQ_NET + 1]);
snmpDebugOid(5, Var->name, Var->name_length);
*ErrP = SNMP_ERR_NOERROR;
switch (Var->name[LEN_SQ_NET + 1]) {
/*
- * $Id: ftp.cc,v 1.292 2000/05/02 20:41:22 hno Exp $
+ * $Id: ftp.cc,v 1.293 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 9 File Transfer Protocol (FTP)
* AUTHOR: Harvest Derived
}
storeAppendPrintf(e, "<HR>\n");
storeAppendPrintf(e, "<ADDRESS>\n");
- storeAppendPrintf(e, "Generated %s by %s (<a href=\"http://squid.nlanr.net/Squid/\">%s</a>)\n",
+ storeAppendPrintf(e, "Generated %s by %s (%s)\n",
mkrfc1123(squid_curtime),
getMyHostname(),
- full_appname_string,
- version_string);
+ full_appname_string);
storeAppendPrintf(e, "</ADDRESS></BODY></HTML>\n");
storeBufferFlush(e);
}
ftpState->data.fd = -1;
ftpState->size = -1;
ftpState->mdtm = -1;
- ftpState->flags.pasv_supported = !fwd->flags.ftp_pasv_failed;
+ if (!Config.Ftp.passive)
+ ftpState->flags.rest_supported = 0;
+ else if (fwd->flags.ftp_pasv_failed)
+ ftpState->flags.pasv_supported = 0;
+ else
+ ftpState->flags.pasv_supported = 1;
ftpState->flags.rest_supported = 1;
ftpState->fwd = fwd;
comm_add_close_handler(fd, ftpStateFree, ftpState);
return -1;
}
ftpState->data.fd = fd;
- ftpState->data.port = comm_local_port(fd);;
+ ftpState->data.port = comm_local_port(fd);
ftpState->data.host = NULL;
return fd;
}
ftpAcceptDataConnection(int fd, void *data)
{
FtpStateData *ftpState = data;
- struct sockaddr_in peer, me;
+ struct sockaddr_in my_peer, me;
debug(9, 3) ("ftpAcceptDataConnection\n");
- fd = comm_accept(fd, &peer, &me);
+ fd = comm_accept(fd, &my_peer, &me);
if (fd < 0) {
debug(9, 1) ("ftpHandleDataAccept: comm_accept(%d): %s", fd, xstrerror());
/* XXX Need to set error message */
comm_close(ftpState->data.fd);
debug(9, 3) ("ftpAcceptDataConnection: Connected data socket on FD %d\n", fd);
ftpState->data.fd = fd;
- ftpState->data.port = ntohs(peer.sin_port);
- ftpState->data.host = xstrdup(inet_ntoa(peer.sin_addr));
+ ftpState->data.port = ntohs(my_peer.sin_port);
+ ftpState->data.host = xstrdup(inet_ntoa(my_peer.sin_addr));
commSetTimeout(ftpState->ctrl.fd, -1, NULL, NULL);
commSetTimeout(ftpState->data.fd, Config.Timeout.read, ftpTimeout,
ftpState);
err = errorCon(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY);
err->xerrno = errno;
err->request = requestLink(ftpState->request);
- err->ftp.server_msg = ftpState->cwd_message;
- ftpState->cwd_message = NULL;
+ err->ftp.server_msg = ftpState->ctrl.message;
+ ftpState->ctrl.message = NULL;
if (ftpState->old_request)
command = ftpState->old_request;
else
/*
- * $Id: gopher.cc,v 1.152 2000/03/06 16:23:31 wessels Exp $
+ * $Id: gopher.cc,v 1.153 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 10 Gopher
* AUTHOR: Harvest Derived
char *host = NULL;
char *port = NULL;
char *escaped_selector = NULL;
- char *icon_url = NULL;
+ const char *icon_url = NULL;
char gtype;
StoreEntry *entry = NULL;
/*
- * $Id: http.cc,v 1.360 2000/05/12 00:29:07 wessels Exp $
+ * $Id: http.cc,v 1.361 2000/05/16 07:06:04 wessels Exp $
*
* DEBUG: section 11 Hypertext Transfer Protocol (HTTP)
* AUTHOR: Harvest Derived
t = httpState->reply_hdr + hdr_len;
/* headers can be incomplete only if object still arriving */
if (!httpState->eof) {
- size_t k = headersEnd(httpState->reply_hdr, hdr_len);
- if (0 == k) {
- if (hdr_len >= 8191 || room == 0) {
- debug(11, 3) ("httpProcessReplyHeader: Too large HTTP header: '%s'\n", httpState->reply_hdr);
- httpState->reply_hdr_state += 2;
- reply->sline.status = HTTP_INVALID_HEADER;
- return;
- } else {
- return; /* headers not complete */
- }
- }
+ size_t k = headersEnd(httpState->reply_hdr, 8192);
+ if (0 == k)
+ return; /* headers not complete */
t = httpState->reply_hdr + k;
}
*t = '\0';
/*
- * $Id: icmp.cc,v 1.70 2000/03/06 16:23:32 wessels Exp $
+ * $Id: icmp.cc,v 1.71 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 37 ICMP Routines
* AUTHOR: Duane Wessels
static pingerEchoData pecho;
if (payload && len == 0)
len = strlen(payload);
+ assert(len <= PINGER_PAYLOAD_SZ);
pecho.to = to;
pecho.opcode = (unsigned char) opcode;
pecho.psize = len;
int x;
if (icmp_sock < 0)
return;
+ debug(37, 2) ("icmpSend: to %s, opcode %d, len %d\n",
+ inet_ntoa(pkt->to), (int) pkt->opcode, pkt->psize);
x = send(icmp_sock, (char *) pkt, len, 0);
if (x < 0) {
debug(50, 1) ("icmpSend: send: %s\n", xstrerror());
- if (errno == ECONNREFUSED) {
+ if (errno == ECONNREFUSED || errno == EPIPE) {
icmpClose();
return;
}
/*
- * $Id: icp_v2.cc,v 1.62 2000/03/06 16:23:32 wessels Exp $
+ * $Id: icp_v2.cc,v 1.63 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 12 Internet Cache Protocol
* AUTHOR: Duane Wessels
icpUdpSend(fd, &from, reply, LOG_UDP_INVALID, 0);
break;
}
+ memset(&checklist, '\0', sizeof(checklist));
checklist.src_addr = from.sin_addr;
checklist.my_addr = no_addr;
checklist.request = icp_request;
/*
- * $Id: icp_v3.cc,v 1.31 2000/03/06 16:23:32 wessels Exp $
+ * $Id: icp_v3.cc,v 1.32 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 12 Internet Cache Protocol
* AUTHOR: Duane Wessels
icpUdpSend(fd, &from, reply, LOG_UDP_INVALID, 0);
break;
}
+ memset(&checklist, '\0', sizeof(checklist));
checklist.src_addr = from.sin_addr;
checklist.my_addr = no_addr;
checklist.request = icp_request;
/*
- * $Id: ident.cc,v 1.51 2000/03/06 16:23:32 wessels Exp $
+ * $Id: ident.cc,v 1.52 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 30 Ident (RFC 931)
* AUTHOR: Duane Wessels
struct _IdentStateData *next;
int fd; /* IDENT fd */
struct sockaddr_in me;
- struct sockaddr_in peer;
+ struct sockaddr_in my_peer;
IdentClient *clients;
} IdentStateData;
{
IdentStateData *state = data;
debug(30, 3) ("identTimeout: FD %d, %s\n", fd,
- inet_ntoa(state->peer.sin_addr));
+ inet_ntoa(state->my_peer.sin_addr));
comm_close(fd);
}
}
memBufDefInit(&mb);
memBufPrintf(&mb, "%d, %d\r\n",
- ntohs(state->peer.sin_port),
+ ntohs(state->my_peer.sin_port),
ntohs(state->me.sin_port));
comm_write_mbuf(fd, mb, NULL, state);
commSetSelect(fd, COMM_SELECT_READ, identReadReply, state, 0);
* start a TCP connection to the peer host on port 113
*/
void
-identStart(struct sockaddr_in *me, struct sockaddr_in *peer, IDCB * callback, void *data)
+identStart(struct sockaddr_in *me, struct sockaddr_in *my_peer, IDCB * callback, void *data)
{
IdentStateData *state;
int fd;
inet_ntoa(me->sin_addr),
ntohs(me->sin_port));
snprintf(key2, IDENT_KEY_SZ, "%s:%d",
- inet_ntoa(peer->sin_addr),
- ntohs(peer->sin_port));
+ inet_ntoa(my_peer->sin_addr),
+ ntohs(my_peer->sin_port));
snprintf(key, IDENT_KEY_SZ, "%s,%s", key1, key2);
if ((state = hash_lookup(ident_hash, key)) != NULL) {
identClientAdd(state, callback, data);
state->key = xstrdup(key);
state->fd = fd;
state->me = *me;
- state->peer = *peer;
+ state->my_peer = *my_peer;
identClientAdd(state, callback, data);
hash_join(ident_hash, (hash_link *) state);
comm_add_close_handler(fd,
state);
commSetTimeout(fd, Config.Timeout.ident, identTimeout, state);
commConnectStart(fd,
- inet_ntoa(state->peer.sin_addr),
+ inet_ntoa(state->my_peer.sin_addr),
IDENT_PORT,
identConnectDone,
state);
/*
- * $Id: ipcache.cc,v 1.219 2000/03/06 16:23:32 wessels Exp $
+ * $Id: ipcache.cc,v 1.220 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 14 IP Cache
* AUTHOR: Harvest Derived
if (++ia->cur == ia->count)
ia->cur = 0;
if (!ia->bad_mask[ia->cur])
- break;;
+ break;
}
if (k == ia->count) {
/* All bad, reset to All good */
hash_join(ip_table, (hash_link *) i);
}
-/* call during reconfigure phase to clear out all the
- * pending and dispatched reqeusts that got lost */
+/* Recalculate IP cache size upon reconfigure */
void
ipcache_restart(void)
{
- ipcache_entry *this;
- assert(ip_table != NULL);
- hash_first(ip_table);
- while ((this = (ipcache_entry *) hash_next(ip_table))) {
- if (this->status == IP_CACHED)
- continue;
- if (this->status == IP_NEGATIVE_CACHED)
- continue;
- }
- /* recalculate these while we're at it */
ipcache_high = (long) (((float) Config.ipcache.size *
(float) Config.ipcache.high) / (float) 100);
ipcache_low = (long) (((float) Config.ipcache.size *
-SQUID-MIB DEFINITIONS ::= BEGIN
+SQUID-MIB { iso org(3) dod(6) internet(1) private(4) enterprises(1) 3495 }
+
+DEFINITIONS ::= BEGIN
--
--- $Id: mib.txt,v 1.24 1999/06/11 22:40:33 wessels Exp $
+-- $Id: mib.txt,v 1.25 2000/05/16 07:06:05 wessels Exp $
--
IMPORTS
LAST-UPDATED "9809220000Z"
ORGANIZATION "National Laboratory for Applied Network Research"
CONTACT-INFO
- " Glenn Chisholm
-
- Postal: National Centre for Atmospheric Research (NCAR)
- Room 36, SCD
- PO Box 3000
- Boulder, Colorado 80307
- US
-
- Tel: +1 303 497 1289
- Fax: +1 303 497 1818
+ " Squid Developers
- E-mail: glenn@ircache.net"
+ E-mail: squid@squid-cache.org"
DESCRIPTION
- "Squid MIB defined for the management of the squid
- proxy server. See http://squid.nlanr.net/."
-
+ "Squid MIB defined for the management of the Squid
+ proxy server. See http://www.squid-cache.org/."
+
REVISION "9809220000Z"
DESCRIPTION
"Move to SMIv2. Prepare to split into proxy/squid."
REVISION "9901010000Z"
DESCRIPTION
- "Added objects and corrected asn.1 syntax and
+ "Added objects and corrected asn.1 syntax and
descriptions."
::= { nlanr 1 }
cacheSystem OBJECT IDENTIFIER ::= { squid 1 }
cacheConfig OBJECT IDENTIFIER ::= { squid 2 }
cachePerf OBJECT IDENTIFIER ::= { squid 3 }
- cacheNetwork OBJECT IDENTIFIER ::= { squid 4 }
+ cacheNetwork OBJECT IDENTIFIER ::= { squid 4 }
cacheMesh OBJECT IDENTIFIER ::= { squid 5 }
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Storage Mem size in KB"
+ " Storage Mem size in KB "
::= { cacheSystem 1 }
cacheSysStorage OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Storage Swap size in KB"
+ " Storage Swap size in KB "
::= { cacheSystem 2 }
cacheUptime OBJECT-TYPE
- SYNTAX Timeticks
+ SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " The Uptime of the cache in timeticks"
+ " The Uptime of the cache in timeticks "
::= { cacheSystem 3 }
--
STATUS current
DESCRIPTION
" Logging Facility. An informational string
- indicating logging info like debug level,
- local/syslog/remote logging etc "
- ::= { cacheConfig 4 }
+ indicating logging info like debug level,
+ local/syslog/remote logging etc "
+ ::= { cacheConfig 4 }
-- cacheStorageConfig group
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " The value of the cache_mem parameter in MB"
+ " The value of the cache_mem parameter in MB "
::= { cacheStorageConfig 1 }
cacheSwapMaxSize OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " The total of the cache_dir space allocated in MB"
+ " The total of the cache_dir space allocated in MB "
::= { cacheStorageConfig 2 }
cacheSwapHighWM OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Cache Swap High Water Mark"
+ " Cache Swap High Water Mark "
::= { cacheStorageConfig 3 }
cacheSwapLowWM OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Cache Swap Low Water Mark"
+ " Cache Swap Low Water Mark "
::= { cacheStorageConfig 4 }
-- end of cacheStorageConfig group
-- performance group { squid 3 }
--
- cacheSysPerf OBJECT IDENTIFIER ::= { cachePerf 1 }
+ cacheSysPerf OBJECT IDENTIFIER ::= { cachePerf 1 }
cacheProtoStats OBJECT IDENTIFIER ::= { cachePerf 2 }
--
- -- cacheSysPerf
+ -- cacheSysPerf
--
cacheSysPageFaults OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Page faults with physical i/o"
+ " Page faults with physical i/o "
::= { cacheSysPerf 1 }
cacheSysNumReads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS not-accessible
- STATUS current
+ STATUS current
DESCRIPTION
- " HTTP I/O number of reads"
+ " HTTP I/O number of reads "
::= { cacheSysPerf 2 }
cacheMemUsage OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Total memory accounted for KB"
- ::= { cacheSysPerf 3 }
+ " Total memory accounted for KB "
+ ::= { cacheSysPerf 3 }
cacheCpuTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Amount of cpu seconds consumed"
+ " Amount of cpu seconds consumed "
::= { cacheSysPerf 4 }
cacheCpuUsage OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " The percentage use of the CPU"
+ " The percentage use of the CPU "
::= { cacheSysPerf 5 }
cacheMaxResSize OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Maximum Resident Size in KB"
+ " Maximum Resident Size in KB "
::= { cacheSysPerf 6 }
cacheNumObjCount OBJECT-TYPE
- SYNTAX Counter32
+ SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of objects stored by the cache"
+ " Number of objects stored by the cache "
::= { cacheSysPerf 7 }
cacheCurrentLRUExpiration OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Storage LRU Expiration Age"
+ " Storage LRU Expiration Age "
::= { cacheSysPerf 8 }
cacheCurrentUnlinkRequests OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Requests given to unlinkd"
+ " Requests given to unlinkd "
::= { cacheSysPerf 9 }
- cacheCurrentUnusedFileDescrCount OBJECT-TYPE
+ cacheCurrentUnusedFDescrCnt OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Available number of file descriptors"
+ " Available number of file descriptors "
::= { cacheSysPerf 10 }
- cacheCurrentReservedFileDescrCount OBJECT-TYPE
+ cacheCurrentResFileDescrCnt OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Reserved number of file descriptors"
+ " Reserved number of file descriptors "
::= { cacheSysPerf 11 }
--
cacheProtoAggregateStats OBJECT IDENTIFIER ::= { cacheProtoStats 1 }
- cacheClientHttpRequests OBJECT-TYPE
+ cacheProtoClientHttpRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of HTTP requests received"
+ " Number of HTTP requests received "
::= { cacheProtoAggregateStats 1 }
cacheHttpHits OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of HTTP Hits"
+ " Number of HTTP Hits "
::= { cacheProtoAggregateStats 2 }
cacheHttpErrors OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of HTTP Errors"
+ " Number of HTTP Errors "
::= { cacheProtoAggregateStats 3 }
cacheHttpInKb OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of HTTP KB's recieved"
+ " Number of HTTP KB's recieved "
::= { cacheProtoAggregateStats 4 }
cacheHttpOutKb OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of HTTP KB's transmitted"
+ " Number of HTTP KB's transmitted "
::= { cacheProtoAggregateStats 5 }
cacheIcpPktsSent OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of ICP messages sent"
+ " Number of ICP messages sent "
::= { cacheProtoAggregateStats 6 }
cacheIcpPktsRecv OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of ICP messages received"
+ " Number of ICP messages received "
::= { cacheProtoAggregateStats 7 }
cacheIcpKbSent OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of ICP KB's transmitted"
+ " Number of ICP KB's transmitted "
::= { cacheProtoAggregateStats 8 }
cacheIcpKbRecv OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of ICP KB's recieved"
+ " Number of ICP KB's recieved "
::= { cacheProtoAggregateStats 9 }
cacheServerRequests OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " All requests from the client for the cache server"
+ " All requests from the client for the cache server "
::= { cacheProtoAggregateStats 10 }
cacheServerErrors OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " All errors for the cache server from client requests"
+ " All errors for the cache server from client requests "
::= { cacheProtoAggregateStats 11 }
cacheServerInKb OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " KB's of traffic recieved from servers"
+ " KB's of traffic recieved from servers "
::= { cacheProtoAggregateStats 12 }
cacheServerOutKb OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " KB's of traffic sent to servers"
+ " KB's of traffic sent to servers "
::= { cacheProtoAggregateStats 13 }
cacheCurrentSwapSize OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Storage Swap size"
+ " Storage Swap size "
::= { cacheProtoAggregateStats 14 }
cacheClients OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Number of clients accessing cache"
+ " Number of clients accessing cache "
::= { cacheProtoAggregateStats 15 }
--
-- cacheProtoMedianSvcStats group
- --
+ --
-- This is a table, indexed by the interval we want statistics for
-- Example: cacheDnsSvcTime.10 gives 10-min medians for Dns Service Time.
SYNTAX SEQUENCE OF CacheMedianSvcEntry
MAX-ACCESS read-only
STATUS current
+ DESCRIPTION
+ " CacheMedianSvcTable "
::= { cacheProtoStats 2 }
cacheMedianSvcEntry OBJECT-TYPE
SYNTAX CacheMedianSvcEntry
MAX-ACCESS not-accessible
STATUS current
- DESCRIPTION
- " An entry in cacheMedianSvcTable "
+ DESCRIPTION
+ " An entry in cacheMedianSvcTable "
INDEX { cacheMedianTime }
::= { cacheMedianSvcTable 1 }
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " HTTP all service time"
- ::= { cacheMedianSvcEntry 2 }
+ " HTTP all service time "
+ ::= { cacheMedianSvcEntry 2 }
cacheHttpMissSvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " HTTP miss service time"
- ::= { cacheMedianSvcEntry 3 }
+ " HTTP miss service time "
+ ::= { cacheMedianSvcEntry 3 }
cacheHttpNmSvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " HTTP near miss service time"
- ::= { cacheMedianSvcEntry 4 }
+ " HTTP near miss service time "
+ ::= { cacheMedianSvcEntry 4 }
cacheHttpHitSvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " HTTP hit service time"
- ::= { cacheMedianSvcEntry 5 }
+ " HTTP hit service time "
+ ::= { cacheMedianSvcEntry 5 }
cacheIcpQuerySvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " ICP query service time"
- ::= { cacheMedianSvcEntry 6 }
+ " ICP query service time "
+ ::= { cacheMedianSvcEntry 6 }
cacheIcpReplySvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " ICP reply service time"
- ::= { cacheMedianSvcEntry 7 }
+ " ICP reply service time "
+ ::= { cacheMedianSvcEntry 7 }
cacheDnsSvcTime OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " DNS service time"
- ::= { cacheMedianSvcEntry 8 }
+ " DNS service time "
+ ::= { cacheMedianSvcEntry 8 }
cacheRequestHitRatio OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Request Hit Ratios"
+ " Request Hit Ratios "
::= { cacheMedianSvcEntry 9 }
cacheRequestByteRatio OBJECT-TYPE
MAX-ACCESS read-only
STATUS current
DESCRIPTION
- " Byte Hit Ratios"
+ " Byte Hit Ratios "
::= { cacheMedianSvcEntry 10 }
--
--
cacheIpCache OBJECT IDENTIFIER ::= { cacheNetwork 1 }
- cacheFqdnCache OBJECT IDENTIFIER ::= { cacheNetwork 2 }
+ cacheFqdnCache OBJECT IDENTIFIER ::= { cacheNetwork 2 }
cacheDns OBJECT IDENTIFIER ::= { cacheNetwork 3 }
--
-- cacheIpCache
--
- cacheEntries OBJECT-TYPE
+ cacheIpEntries OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 1 }
+ DESCRIPTION
+ " IP Cache Entries "
+ ::= { cacheIpCache 1 }
- cacheRequests OBJECT-TYPE
+ cacheIpRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 2 }
+ DESCRIPTION
+ " Number of IP Cache requests "
+ ::= { cacheIpCache 2 }
- cacheHits OBJECT-TYPE
+ cacheIpHits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 3 }
+ DESCRIPTION
+ " Number of IP Cache hits "
+ ::= { cacheIpCache 3 }
- cachePendingHits OBJECT-TYPE
+ cacheIpPendingHits OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 4 }
+ DESCRIPTION
+ " Number of IP Cache pending hits "
+ ::= { cacheIpCache 4 }
- cacheNegativeHits OBJECT-TYPE
+ cacheIpNegativeHits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 5 }
+ DESCRIPTION
+ " Number of IP Cache negative hits "
+ ::= { cacheIpCache 5 }
- cacheMisses OBJECT-TYPE
+ cacheIpMisses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 6 }
+ DESCRIPTION
+ " Number of IP Cache misses "
+ ::= { cacheIpCache 6 }
cacheBlockingGetHostByName OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 7 }
+ DESCRIPTION
+ " Number of blocking gethostbyname requests "
+ ::= { cacheIpCache 7 }
- cacheAttemptReleaseLockedEntries OBJECT-TYPE
+ cacheAttemptReleaseLckEntries OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheIpCache 8 }
+ DESCRIPTION
+ " Number of attempts to release locked IP Cache entries "
+ ::= { cacheIpCache 8 }
--
-- cacheFqdnCache
--
- cacheEntries OBJECT-TYPE
+ cacheFqdnEntries OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 1 }
+ DESCRIPTION
+ " FQDN Cache entries "
+ ::= { cacheFqdnCache 1 }
- cacheRequests OBJECT-TYPE
+ cacheFqdnRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 2 }
+ DESCRIPTION
+ " Number of FQDN Cache requests "
+ ::= { cacheFqdnCache 2 }
- cacheHits OBJECT-TYPE
+ cacheFqdnHits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 3 }
+ DESCRIPTION
+ " Number of FQDN Cache hits "
+ ::= { cacheFqdnCache 3 }
- cachePendingHits OBJECT-TYPE
+ cacheFqdnPendingHits OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 4 }
+ DESCRIPTION
+ " Number of FQDN Cache pending hits "
+ ::= { cacheFqdnCache 4 }
- cacheNegativeHits OBJECT-TYPE
+ cacheFqdnNegativeHits OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 5 }
+ DESCRIPTION
+ " Number of FQDN Cache negative hits "
+ ::= { cacheFqdnCache 5 }
- cacheMisses OBJECT-TYPE
+ cacheFqdnMisses OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 6 }
+ DESCRIPTION
+ " Number of FQDN Cache misses "
+ ::= { cacheFqdnCache 6 }
cacheBlockingGetHostByAddr OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheFqdnCache 7 }
+ DESCRIPTION
+ " Number of blocking gethostbyaddr requests "
+ ::= { cacheFqdnCache 7 }
--
--- cacheDNS
+-- cacheDNS
--
cacheDnsRequests OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheDns 1 }
+ DESCRIPTION
+ " Number of external dnsserver requests "
+ ::= { cacheDns 1 }
cacheDnsReplies OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheDns 2 }
+ DESCRIPTION
+ " Number of external dnsserver replies "
+ ::= { cacheDns 2 }
cacheDnsNumberServers OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- ::= { cacheDns 3 }
+ DESCRIPTION
+ " Number of external dnsserver processes "
+ ::= { cacheDns 3 }
--
-- cacheMesh group
SYNTAX CachePeerEntry
MAX-ACCESS not-accessible
STATUS current
- DESCRIPTION
- " An entry in cachePeerTable "
+ DESCRIPTION
+ " An entry in cachePeerTable "
INDEX { cachePeerAddr }
::= { cachePeerTable 1 }
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" The FQDN name or internal alias for the
- peer cache"
- ::= { cachePeerEntry 1 }
+ peer cache "
+ ::= { cachePeerEntry 1 }
cachePeerAddr OBJECT-TYPE
SYNTAX IpAddress
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" The IP Address of the peer cache "
::= { cachePeerEntry 2 }
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" The port the peer listens for HTTP requests "
::= { cachePeerEntry 3 }
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
- " The port the peer listens for ICP requests
+ DESCRIPTION
+ " The port the peer listens for ICP requests
should be 0 if not configured to send ICP requests "
::= { cachePeerEntry 4 }
cachePeerType OBJECT-TYPE
- SYNTAX INTEGER {
- none(0),
- sibling(1),
- parent(2),
- multicast(3)
- }
+ SYNTAX INTEGER
MAX-ACCESS not-accessible
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Peer Type "
- ::= { cachePeerEntry 5 }
+ ::= { cachePeerEntry 5 }
cachePeerState OBJECT-TYPE
- SYNTAX INTEGER {
- down(0),
- up(1)
- }
+ SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" The operational state of this peer "
::= { cachePeerEntry 6 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Number of pings sent to peer "
::= { cachePeerEntry 7 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Number of pings received from peer "
::= { cachePeerEntry 8 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Number of times this peer was selected "
::= { cachePeerEntry 9 }
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Last known round-trip time to the peer (in ms) "
::= { cachePeerEntry 10 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" How many times this peer was ignored "
::= { cachePeerEntry 11 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Number of keepalives sent "
::= { cachePeerEntry 12 }
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
- DESCRIPTION
+ DESCRIPTION
" Number of keepalives received "
::= { cachePeerEntry 13 }
---
cacheClientTable OBJECT-TYPE
- SYNTAX SEQUENCE OF cacheClientEntry
+ SYNTAX SEQUENCE OF CacheClientEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
- "An entry in cacheClientTable"
+ "An entry in cacheClientTable "
INDEX { cacheClientAddr }
::= { cacheClientTable 1 }
CacheClientEntry ::= SEQUENCE {
- cacheClientAddr IpAddress
+ cacheClientAddr IpAddress,
cacheClientHttpRequests Counter32,
cacheClientHttpKb Counter32,
cacheClientHttpHits Counter32,
::= { cacheClientEntry 9 }
-- end of cacheClientTable
-
-
+
+
-- end of cacheMesh group
-- end of SQUID-MIB
--
END
+
/*
- * $Id: mime.cc,v 1.93 2000/03/06 16:23:33 wessels Exp $
+ * $Id: mime.cc,v 1.94 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 25 MIME Parsing
* AUTHOR: Harvest Derived
return m->icon;
}
-char *
+const char *
mimeGetIconURL(const char *fn)
{
char *icon = mimeGetIcon(fn);
if (icon == NULL)
- return NULL;
+ return null_string;
return internalLocalUri("/squid-internal-static/icons/", icon);
}
/*
- * $Id: neighbors.cc,v 1.283 2000/05/12 00:29:07 wessels Exp $
+ * $Id: neighbors.cc,v 1.284 2000/05/16 07:06:05 wessels Exp $
*
* DEBUG: section 15 Neighbor Routines
* AUTHOR: Harvest Derived
return do_ping;
if (p->access == NULL)
return do_ping;
+ memset(&checklist, '\0', sizeof(checklist));
checklist.src_addr = request->client_addr;
checklist.my_addr = request->my_addr;
checklist.my_port = request->my_port;
/*
- * $Id: net_db.cc,v 1.144 2000/05/07 16:18:19 adrian Exp $
+ * $Id: net_db.cc,v 1.145 2000/05/16 07:06:06 wessels Exp $
*
* DEBUG: section 38 Network Measurement Database
* AUTHOR: Duane Wessels
o += sizeof(int);
hops = (double) ntohl(j) / 1000.0;
break;
+ default:
+ debug(38, 1) ("netdbExchangeHandleReply: corrupt data, aborting\n");
+ netdbExchangeDone(ex);
+ return;
}
}
if (addr.s_addr != any_addr.s_addr && rtt > 0)
assert(NULL != ex->r);
ex->r->http_ver = 1.0;
ex->e = storeCreateEntry(uri, uri, null_request_flags, METHOD_GET);
- ex->buf_sz = 4096;;
+ ex->buf_sz = 4096;
ex->buf = memAllocate(MEM_4K_BUF);
assert(NULL != ex->e);
ex->sc = storeClientListAdd(ex->e, ex);
/*
- * $Id: pinger.cc,v 1.43 2000/03/06 16:23:33 wessels Exp $
+ * $Id: pinger.cc,v 1.44 2000/05/16 07:06:06 wessels Exp $
*
* DEBUG: section 42 ICMP Pinger program
* AUTHOR: Duane Wessels
0,
(struct sockaddr *) &from,
&fromlen);
+#if GETTIMEOFDAY_NO_TZP
+ gettimeofday(&now);
+#else
gettimeofday(&now, NULL);
+#endif
debug(42, 9) ("pingerRecv: %d bytes from %s\n", n, inet_ntoa(from.sin_addr));
ip = (struct iphdr *) (void *) pkt;
#if HAVE_IP_HL
n = recv(0, (char *) &pecho, sizeof(pecho), 0);
if (n < 0)
return n;
+ if (0 == n) {
+ /* EOF indicator */
+ fprintf(stderr, "EOF encountered\n");
+ errno = 0;
+ return -1;
+ }
guess_size = n - (sizeof(pingerEchoData) - PINGER_PAYLOAD_SZ);
if (guess_size != pecho.psize) {
fprintf(stderr, "size mismatch, guess=%d psize=%d\n",
guess_size, pecho.psize);
- errno = 0;
- return -1;
+ /* don't process this message, but keep running */
+ return 0;
}
pingerSendEcho(pecho.to,
pecho.opcode,
/*
- * $Id: protos.h,v 1.365 2000/05/12 00:29:08 wessels Exp $
+ * $Id: protos.h,v 1.366 2000/05/16 07:06:06 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
extern char *mimeGetContentEncoding(const char *fn);
extern char *mimeGetContentType(const char *fn);
extern char *mimeGetIcon(const char *fn);
-extern char *mimeGetIconURL(const char *fn);
+extern const char *mimeGetIconURL(const char *fn);
extern char mimeGetTransferMode(const char *fn);
extern int mimeGetDownloadOption(const char *fn);
extern int mimeGetViewOption(const char *fn);
/*
- * $Id: snmp_agent.cc,v 1.75 2000/05/12 00:29:08 wessels Exp $
+ * $Id: snmp_agent.cc,v 1.76 2000/05/16 07:06:06 wessels Exp $
*
* DEBUG: section 49 SNMP Interface
* AUTHOR: Kostas Anagnostakis
case CONF_STORAGE:
switch (Var->name[LEN_SQ_CONF + 1]) {
case CONF_ST_MMAXSZ:
- snmp_var_new_integer(Var->name, Var->name_length,
+ Answer = snmp_var_new_integer(Var->name, Var->name_length,
(snint) Config.memMaxSize >> 20,
ASN_INTEGER);
break;
case CONF_ST_SWMAXSZ:
- snmp_var_new_integer(Var->name, Var->name_length,
+ Answer = snmp_var_new_integer(Var->name, Var->name_length,
(snint) Config.Swap.maxSize >> 10,
ASN_INTEGER);
break;
case CONF_ST_SWHIWM:
- snmp_var_new_integer(Var->name, Var->name_length,
+ Answer = snmp_var_new_integer(Var->name, Var->name_length,
(snint) Config.Swap.highWaterMark,
ASN_INTEGER);
break;
case CONF_ST_SWLOWM:
- snmp_var_new_integer(Var->name, Var->name_length,
+ Answer = snmp_var_new_integer(Var->name, Var->name_length,
(snint) Config.Swap.lowWaterMark,
ASN_INTEGER);
break;
/*
- * $Id: snmp_core.cc,v 1.41 2000/03/06 16:23:34 wessels Exp $
+ * $Id: snmp_core.cc,v 1.42 2000/05/16 07:06:06 wessels Exp $
*
* DEBUG: section 49 SNMP support
* AUTHOR: Glenn Chisholm
PDU = snmp_pdu_create(0);
Session.Version = SNMP_VERSION_1;
Community = snmp_parse(&Session, PDU, buf, len);
-
+ memset(&checklist, '\0', sizeof(checklist));
checklist.src_addr = rq->from.sin_addr;
checklist.snmp_community = (char *) Community;
/*
- * $Id: store.cc,v 1.522 2000/05/12 00:29:08 wessels Exp $
+ * $Id: store.cc,v 1.523 2000/05/16 07:06:06 wessels Exp $
*
* DEBUG: section 20 Storage Manager
* AUTHOR: Harvest Derived
#else
static dlink_list inmem_list;
#endif
-int store_pages_max = 0;
-int store_swap_high = 0;
-int store_swap_low = 0;
+static int store_pages_max = 0;
+static int store_swap_high = 0;
+static int store_swap_low = 0;
static Stack LateReleaseStack;
#if URL_CHECKSUM_DEBUG
e->swap_dirn = -1;
e->refcount = 0;
e->lastref = squid_curtime;
- e->timestamp = 0; /* set in storeTimestampsSet() */
+ e->timestamp = -1; /* set in storeTimestampsSet() */
e->ping_status = PING_NONE;
EBIT_SET(e->flags, ENTRY_VALIDATED);
return e;
int wrong_content_length;
int negative_cached;
int too_big;
+ int too_small;
int private_key;
int too_many_open_files;
int too_many_open_fds;
return 0;
}
+static int
+storeCheckTooSmall(StoreEntry * e)
+{
+ MemObject *mem = e->mem_obj;
+ if (STORE_OK == e->store_status)
+ if (mem->object_sz < Config.Store.minObjectSize)
+ return 1;
+ if (mem->reply->content_length > -1)
+ if (mem->reply->content_length < (int) Config.Store.minObjectSize)
+ return 1;
+ return 0;
+}
+
int
storeCheckCachable(StoreEntry * e)
{
} else if (e->mem_obj->reply->content_length > (int) Config.Store.maxObjectSize) {
debug(20, 2) ("storeCheckCachable: NO: too big\n");
store_check_cachable_hist.no.too_big++;
+ } else if (storeCheckTooSmall(e)) {
+ debug(20, 2) ("storeCheckCachable: NO: too small\n");
+ store_check_cachable_hist.no.too_small++;
} else if (EBIT_TEST(e->flags, KEY_PRIVATE)) {
debug(20, 3) ("storeCheckCachable: NO: private key\n");
store_check_cachable_hist.no.private_key++;
store_check_cachable_hist.no.negative_cached);
storeAppendPrintf(sentry, "no.too_big\t%d\n",
store_check_cachable_hist.no.too_big);
+ storeAppendPrintf(sentry, "no.too_small\t%d\n",
+ store_check_cachable_hist.no.too_small);
storeAppendPrintf(sentry, "no.private_key\t%d\n",
store_check_cachable_hist.no.private_key);
storeAppendPrintf(sentry, "no.too_many_open_files\t%d\n",
if (e->mem_obj->request)
e->mem_obj->request->hier.store_complete_stop = current_time;
#endif
- InvokeHandlers(e);
+ /*
+ * We used to call InvokeHandlers, then storeSwapOut. However,
+ * Madhukar Reddy <myreddy@persistence.com> reported that
+ * responses without content length would sometimes get released
+ * in client_side, thinking that the response is incomplete.
+ */
storeSwapOut(e);
+ InvokeHandlers(e);
}
/*
/*
- * $Id: store_client.cc,v 1.89 2000/05/12 00:29:09 wessels Exp $
+ * $Id: store_client.cc,v 1.90 2000/05/16 07:06:07 wessels Exp $
*
* DEBUG: section 20 Storage Manager Client-Side Interface
* AUTHOR: Duane Wessels
/* yuck -- this causes a TCP_SWAPFAIL_MISS on the client side */
storeClientCallback(sc, -1);
return;
- }
- if (!sc->flags.disk_io_pending) {
+ } else if (!sc->flags.disk_io_pending) {
+ sc->flags.disk_io_pending = 1;
storeSwapInStart(sc);
if (NULL == sc->swapin_sio) {
storeClientCallback(sc, -1);
/*
- * $Id: store_dir.cc,v 1.108 2000/05/12 00:29:09 wessels Exp $
+ * $Id: store_dir.cc,v 1.109 2000/05/16 07:06:07 wessels Exp $
*
* DEBUG: section 47 Store Directory Routines
* AUTHOR: Duane Wessels
int i;
Config.Swap.maxSize = 0;
for (i = 0; i < Config.cacheSwap.n_configured; i++) {
- SD = &Config.cacheSwap.swapDirs[i];;
+ SD = &Config.cacheSwap.swapDirs[i];
Config.Swap.maxSize += SD->max_size;
SD->low_size = (int) (((float) SD->max_size *
(float) Config.Swap.lowWaterMark) / 100.0);
/*
- * $Id: structs.h,v 1.333 2000/05/12 03:43:00 wessels Exp $
+ * $Id: structs.h,v 1.334 2000/05/16 07:06:07 wessels Exp $
*
*
* SQUID Internet Object Cache http://squid.nlanr.net/Squid/
struct in_addr router;
struct in_addr incoming;
struct in_addr outgoing;
+ int version;
} Wccp;
#endif
char *as_whois_server;
int objectsPerBucket;
size_t avgObjectSize;
size_t maxObjectSize;
+ size_t minObjectSize;
} Store;
struct {
int high;
size_t list_width;
int list_wrap;
char *anon_user;
+ int passive;
} Ftp;
refresh_t *Refresh;
struct _cacheSwap {
struct {
int enable_purge;
} onoff;
+ uid_t effectiveUserID;
+ gid_t effectiveGroupID;
};
struct _close_handler {
/*
- * $Id: tools.cc,v 1.190 2000/04/17 17:24:57 wessels Exp $
+ * $Id: tools.cc,v 1.191 2000/05/16 07:06:07 wessels Exp $
*
* DEBUG: section 21 Misc Functions
* AUTHOR: Harvest Derived
const struct hostent *h = NULL;
if (Config.visibleHostname != NULL)
return Config.visibleHostname;
- if (present) {
- (void) 0;
- } else if (Config.Sockaddr.http->s.sin_addr.s_addr != any_addr.s_addr) {
+ if (present)
+ return host;
+ host[0] = '\0';
+ if (Config.Sockaddr.http->s.sin_addr.s_addr != any_addr.s_addr) {
/*
* If the first http_port address has a specific address, try a
* reverse DNS lookup on it.
*/
- host[0] = '\0';
h = gethostbyaddr((char *) &Config.Sockaddr.http->s.sin_addr,
sizeof(Config.Sockaddr.http->s.sin_addr), AF_INET);
if (h != NULL) {
/* DNS lookup successful */
/* use the official name from DNS lookup */
- strcpy(host, h->h_name);
- debug(50, 4) ("getMyHostname: resolved tcp_incoming_addr to '%s'\n",
+ xstrncpy(host, h->h_name, SQUIDHOSTNAMELEN);
+ debug(50, 4) ("getMyHostname: resolved %s to '%s'\n",
+ inet_ntoa(Config.Sockaddr.http->s.sin_addr),
host);
present = 1;
- } else {
- debug(50, 6) ("getMyHostname: failed to resolve tcp_incoming_addr\n");
+ return host;
}
+ debug(50, 1) ("WARNING: failed to resolve %s to a hostname\n",
+ inet_ntoa(Config.Sockaddr.http->s.sin_addr));
+ }
+ /*
+ * Get the host name and store it in host to return
+ */
+ if (gethostname(host, SQUIDHOSTNAMELEN) < 0) {
+ debug(50, 1) ("WARNING: gethostname failed: %s\n", xstrerror());
+ } else if ((h = gethostbyname(host)) == NULL) {
+ debug(50, 1) ("WARNING: gethostbyname failed for %s\n", host);
} else {
- /*
- * Get the host name and store it in host to return
- */
- host[0] = '\0';
- if (gethostname(host, SQUIDHOSTNAMELEN) == -1) {
- debug(50, 1) ("getMyHostname: gethostname failed: %s\n",
- xstrerror());
- } else {
- if ((h = gethostbyname(host)) != NULL) {
- debug(50, 6) ("getMyHostname: '%s' resolved into '%s'\n",
- host, h->h_name);
- /* DNS lookup successful */
- /* use the official name from DNS lookup */
- strcpy(host, h->h_name);
- }
- }
+ debug(50, 6) ("getMyHostname: '%s' resolved into '%s'\n",
+ host, h->h_name);
+ /* DNS lookup successful */
+ /* use the official name from DNS lookup */
+ xstrncpy(host, h->h_name, SQUIDHOSTNAMELEN);
present = 1;
+ return host;
}
- return present ? host : NULL;
+ fatal("Could not determine fully qualified hostname. Please set 'visible_hostname'\n");
+ return NULL; /* keep compiler happy */
}
const char *
void
leave_suid(void)
{
- struct passwd *pwd = NULL;
- struct group *grp = NULL;
- gid_t gid;
debug(21, 3) ("leave_suid: PID %d called\n", getpid());
if (geteuid() != 0)
return;
/* Started as a root, check suid option */
if (Config.effectiveUser == NULL)
return;
- if ((pwd = getpwnam(Config.effectiveUser)) == NULL)
- return;
- if (Config.effectiveGroup && (grp = getgrnam(Config.effectiveGroup))) {
- gid = grp->gr_gid;
- } else {
- gid = pwd->pw_gid;
- }
#if HAVE_SETGROUPS
- setgroups(1, &gid);
+ setgroups(1, &Config2.effectiveGroupID);
#endif
- if (setgid(gid) < 0)
- debug(50, 1) ("leave_suid: setgid: %s\n", xstrerror());
+ if (setgid(Config2.effectiveGroupID) < 0)
+ debug(50, 0) ("ALERT: setgid: %s\n", xstrerror());
debug(21, 3) ("leave_suid: PID %d giving up root, becoming '%s'\n",
- getpid(), pwd->pw_name);
+ getpid(), Config.effectiveUser);
#if HAVE_SETRESUID
- if (setresuid(pwd->pw_uid, pwd->pw_uid, 0) < 0)
- debug(50, 1) ("leave_suid: setresuid: %s\n", xstrerror());
+ if (setresuid(Config2.effectiveUserID, Config2.effectiveUserID, 0) < 0)
+ debug(50, 0) ("ALERT: setresuid: %s\n", xstrerror());
#elif HAVE_SETEUID
- if (seteuid(pwd->pw_uid) < 0)
- debug(50, 1) ("leave_suid: seteuid: %s\n", xstrerror());
+ if (seteuid(Config2.effectiveUserID) < 0)
+ debug(50, 0) ("ALERT: seteuid: %s\n", xstrerror());
#else
- if (setuid(pwd->pw_uid) < 0)
- debug(50, 1) ("leave_suid: setuid: %s\n", xstrerror());
+ if (setuid(Config2.effectiveUserID) < 0)
+ debug(50, 0) ("ALERT: setuid: %s\n", xstrerror());
#endif
}
/*
- * $Id: unlinkd.cc,v 1.36 2000/05/03 17:15:44 adrian Exp $
+ * $Id: unlinkd.cc,v 1.37 2000/05/16 07:06:08 wessels Exp $
*
* DEBUG: section 12 Unlink Daemon
* AUTHOR: Duane Wessels
void
unlinkdUnlink(const char *path)
{
+#if USE_UNLINKD
char buf[MAXPATHLEN];
int l;
int x;
}
Counter.unlink.requests++;
queuelen++;
+#endif
}
void
void
unlinkdInit(void)
{
+#if USE_UNLINKD
int x;
char *args[2];
struct timeval slp;
if (FD_PIPE == fd_table[unlinkd_wfd].type)
commUnsetNonBlocking(unlinkd_wfd);
debug(12, 1) ("Unlinkd pipe opened on FD %d\n", unlinkd_wfd);
+#else
+ debug(12, 1) ("Unlinkd is disabled\n");
+#endif
}
#endif /* ndef UNLINK_DAEMON */
/*
- * $Id: url.cc,v 1.124 2000/05/12 00:29:10 wessels Exp $
+ * $Id: url.cc,v 1.125 2000/05/16 07:06:08 wessels Exp $
*
* DEBUG: section 23 URL Parsing
* AUTHOR: Duane Wessels
* way we expect it to.
*/
assert(0 == matchDomainName("foo.com", "foo.com"));
- assert(0 < matchDomainName(".foo.com", "foo.com"));
+ assert(0 == matchDomainName(".foo.com", "foo.com"));
assert(0 == matchDomainName("foo.com", ".foo.com"));
assert(0 == matchDomainName(".foo.com", ".foo.com"));
assert(0 == matchDomainName("x.foo.com", ".foo.com"));
assert(0 == matchDomainName("FOO.com", "foo.COM"));
assert(0 < matchDomainName("bfoo.com", "afoo.com"));
assert(0 > matchDomainName("afoo.com", "bfoo.com"));
+ assert(0 < matchDomainName("x-foo.com", ".foo.com"));
/* more cases? */
}
}
for (t = host; *t; t++)
*t = xtolower(*t);
+ if (stringHasWhitespace(host)) {
+ if (URI_WHITESPACE_STRIP == Config.uri_whitespace) {
+ t = q = host;
+ while (*t) {
+ if (!xisspace(*t))
+ *q++ = *t;
+ t++;
+ }
+ *q = '\0';
+ }
+ }
if (strspn(host, valid_hostname_chars) != strlen(host)) {
debug(23, 1) ("urlParse: Illegal character in hostname '%s'\n", host);
return NULL;
* HOST DOMAIN MATCH?
* ------------- ------------- ------
* foo.com foo.com YES
- * .foo.com foo.com NO
+ * .foo.com foo.com YES
* x.foo.com foo.com NO
* foo.com .foo.com YES
* .foo.com .foo.com YES
* x.foo.com .foo.com YES
*
+ * We strip leading dots on hosts (but not domains!) so that
+ * ".foo.com" is is always the same as "foo.com".
+ *
* Return values:
* 0 means the host matches the domain
* 1 means the host is greater than the domain
{
int dl;
int hl;
+ while ('.' == *h)
+ h++;
hl = strlen(h);
dl = strlen(d);
/*
/*
* We found different characters in the same position (from the end).
*/
+ /*
+ * If one of those character is '.' then its special. In order
+ * for splay tree sorting to work properly, "x-foo.com" must
+ * be greater than ".foo.com" even though '-' is less than '.'.
+ */
+ if ('.' == d[dl])
+ return 1;
+ if ('.' == h[hl])
+ return -1;
return (xtolower(h[hl]) - xtolower(d[dl]));
}
/*
- * $Id: wccp.cc,v 1.14 2000/03/06 16:23:36 wessels Exp $
+ * $Id: wccp.cc,v 1.15 2000/05/16 07:06:08 wessels Exp $
*
* DEBUG: section 80 WCCP Support
* AUTHOR: Glenn Chisholm
#if USE_WCCP
#define WCCP_PORT 2048
-#define WCCP_VERSION 4
#define WCCP_REVISION 0
#define WCCP_RESPONSE_SIZE 12448
#define WCCP_ACTIVE_CACHES 32
return;
memset(&wccp_here_i_am, '\0', sizeof(wccp_here_i_am));
wccp_here_i_am.type = htonl(WCCP_HERE_I_AM);
- wccp_here_i_am.version = htonl(WCCP_VERSION);
+ wccp_here_i_am.version = htonl(Config.Wccp.version);
wccp_here_i_am.revision = htonl(WCCP_REVISION);
change = 0;
if (Config.Wccp.router.s_addr != any_addr.s_addr)
return;
if (Config.Wccp.router.s_addr != from.sin_addr.s_addr)
return;
- if (ntohl(wccp_i_see_you.version) != WCCP_VERSION)
+ if (ntohl(wccp_i_see_you.version) != Config.Wccp.version)
return;
if (ntohl(wccp_i_see_you.type) != WCCP_I_SEE_YOU)
return;
/*
- * $Id: whois.cc,v 1.10 2000/03/06 16:23:36 wessels Exp $
+ * $Id: whois.cc,v 1.11 2000/05/16 07:06:08 wessels Exp $
*
* DEBUG: section 75 WHOIS protocol
* AUTHOR: Duane Wessels, Kostas Anagnostakis
WhoisState *p = data;
StoreEntry *entry = p->entry;
char *buf = memAllocate(MEM_4K_BUF);
+ MemObject *mem = entry->mem_obj;
int len;
Counter.syscalls.sock.reads++;
len = read(fd, buf, 4095);
debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, len);
debug(75, 5) ("{%s}\n", buf);
if (len > 0) {
+ if (0 == mem->inmem_hi)
+ mem->reply->sline.status = HTTP_OK;
fd_bytes(fd, len, FD_READ);
kb_incr(&Counter.server.all.kbytes_in, len);
kb_incr(&Counter.server.http.kbytes_in, len);
fd, xstrerror());
if (ignoreErrno(errno)) {
commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
- } else if (entry->mem_obj->inmem_hi == 0) {
+ } else if (mem->inmem_hi == 0) {
ErrorState *err;
err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
err->xerrno = errno;