]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
15 years agoadd workers and processes arguments to cachemgr.cgi
Christos Tsantilas [Fri, 28 Jan 2011 18:33:27 +0000 (20:33 +0200)] 
add workers and processes arguments to cachemgr.cgi

15 years agoAmos requests
Christos Tsantilas [Fri, 28 Jan 2011 17:56:41 +0000 (19:56 +0200)] 
Amos requests

15 years agofix debug sections
Christos Tsantilas [Fri, 28 Jan 2011 13:52:16 +0000 (15:52 +0200)] 
fix debug sections

15 years agoUpdate docs for maxconn ACL with indirect clients
Amos Jeffries [Fri, 28 Jan 2011 13:17:28 +0000 (02:17 +1300)] 
Update docs for maxconn ACL with indirect clients

15 years agoWindows: fix several OS name based logics for MingW
Amos Jeffries [Fri, 28 Jan 2011 09:54:33 +0000 (22:54 +1300)] 
Windows: fix several OS name based logics for MingW

15 years agoTestBed: make header tests obey config.h-first policy
Amos Jeffries [Fri, 28 Jan 2011 09:05:34 +0000 (22:05 +1300)] 
TestBed: make header tests obey config.h-first policy

15 years agoWindows: define OS wrapper for MinGW environment support
Amos Jeffries [Fri, 28 Jan 2011 08:16:17 +0000 (21:16 +1300)] 
Windows: define OS wrapper for MinGW environment support

15 years agoWindows: fix code wrappers for Cygwin and generic Win32 code
Amos Jeffries [Fri, 28 Jan 2011 07:58:53 +0000 (20:58 +1300)] 
Windows: fix code wrappers for Cygwin and generic Win32 code

_SQUID_WIN32_ was being used to wrap all code built specific for Windows
but with any compiler on that platform.
 - rename to _SQUID_WINDOWS_ to match OS wrpper naming convention.
 - compact several macros using verbose test: (cygwin or Ming or any)

Cleans up all affected tests to match current precompiler code style.

Also cleans up all tests involving _SQUID_CYGWN_ to match code styles.

15 years agoTestBed: Typo remaining from old flags mistake
Amos Jeffries [Fri, 28 Jan 2011 04:45:40 +0000 (17:45 +1300)] 
TestBed: Typo remaining from old flags mistake

15 years agoAdded STORE_META_OBJSIZE size to keep storeSwapMetaSize in sync with
Alex Rousskov [Fri, 28 Jan 2011 01:25:12 +0000 (18:25 -0700)] 
Added STORE_META_OBJSIZE size to keep storeSwapMetaSize in sync with
storeSwapMetaBuild.

15 years agoSupport multiple services and vectoring-point crossing in ICAP X-Next-Services.
Alex Rousskov [Thu, 27 Jan 2011 21:19:45 +0000 (14:19 -0700)] 
Support multiple services and vectoring-point crossing in ICAP X-Next-Services.

Merged from the 3p1-rock branch (r9630).

15 years agoMiscellaneous useful changes from 3p1-rock (r9630) unrelated to Rock Store.
Alex Rousskov [Thu, 27 Jan 2011 21:16:49 +0000 (14:16 -0700)] 
Miscellaneous useful changes from 3p1-rock (r9630) unrelated to Rock Store.

15 years agoRock Store implementation merged from the 3p1-rock branch (r9630).
Alex Rousskov [Thu, 27 Jan 2011 21:14:56 +0000 (14:14 -0700)] 
Rock Store implementation merged from the 3p1-rock branch (r9630).

15 years agoAuthor: Steven Lawrance <squid@moonlightdesign.org>
Amos Jeffries [Thu, 27 Jan 2011 12:23:25 +0000 (01:23 +1300)] 
Author: Steven Lawrance <squid@moonlightdesign.org>
Bug: 2968: Show the Vary: headers information in cachemgr objects report

15 years agoAuthor: Alex Rousskov <rousskov@measurement-factory.com>
Christos Tsantilas [Thu, 27 Jan 2011 09:29:04 +0000 (11:29 +0200)] 
Author: Alex Rousskov <rousskov@measurement-factory.com>
Fix IP/FQDN cache accounting to avoid idle caches on busy servers.

When maintaining the IP/FQDN cache size, use the number of entries in the cache
rather than the number of allocated and not freed MEM_IPCACHE_ENTRY and
MEM_FQDNCACHE_ENTRY objects. These objects are used outside the cache
for DNS queries. If queries leak (or perhaps when there are just a lot of them),
the memory-pool-based count overestimates the cache size, sometimes to
such a degree that the cache remains nearly empty despite lots of misses.

Use memory-pool-based counter to estimate cache size also violates IP/FQDN cache
encapsulation boundaries because it effectively prevents others from using
the same memory pool.

15 years agoSourceFormat Enforcement
Automatic source maintenance [Thu, 27 Jan 2011 01:12:25 +0000 (18:12 -0700)] 
SourceFormat Enforcement

15 years agoPortability fix: size_t is unsigned
Francesco Chemolli [Wed, 26 Jan 2011 13:27:33 +0000 (14:27 +0100)] 
Portability fix: size_t is unsigned

15 years agoBug 2581, Bug 3081, Bug 2948: various TCP socket connection problems
Amos Jeffries [Wed, 26 Jan 2011 03:47:13 +0000 (16:47 +1300)] 
Bug 2581, Bug 3081, Bug 2948: various TCP socket connection problems

Bug 3081:
  During conversion of listening socket handlers to AsyncCalls a violation
of the AsyncCall API was introduced. Resulting in occasional crashes from
invalid re-use of call objects.

This implements a TcpAcceptor async job which receives a listening socket
and a CallSubscription. For every connection attempt on the listener socket
a new AsyncCall is spawned from the subscription template.

Initial users are the HTTP and HTTPS listening sockets and FTP data channel.

In order to implement this job in FTP the logics surrounding data channel
handling had to be extended and reworked. Fixing bug 2948 and 2581 in the
process.

15 years agoPortability fix: icc doesn't like string literal in assert checks
Francesco Chemolli [Tue, 25 Jan 2011 22:46:53 +0000 (23:46 +0100)] 
Portability fix: icc doesn't like string literal in assert checks

15 years agoRemoved unneeded symbol from smblib
Francesco Chemolli [Tue, 25 Jan 2011 21:31:25 +0000 (22:31 +0100)] 
Removed unneeded symbol from smblib

15 years agoFixed bug in NTLM auth helper which would show up on non-gcc compilers
Francesco Chemolli [Tue, 25 Jan 2011 21:30:11 +0000 (22:30 +0100)] 
Fixed bug in NTLM auth helper which would show up on non-gcc compilers

15 years agoAdded specific flags for Intel(R)'s icc compiler
Francesco Chemolli [Tue, 25 Jan 2011 21:29:23 +0000 (22:29 +0100)] 
Added specific flags for Intel(R)'s icc compiler

15 years agoAuthor: Fabian Hugelshofer <fh@open.ch>
Amos Jeffries [Tue, 25 Jan 2011 08:55:40 +0000 (21:55 +1300)] 
Author: Fabian Hugelshofer <fh@open.ch>
Allow persistent connections for Mozilla/3.0 User-Agents

This fixes NTLM and Negotiate authentication for these agents.

History:

In 1998 a hack was added to HttpMsg::persistent() that disables
persistent connections for HTTP/1.0 User-Agents starting with
"Mozilla/3." and "Netscape/3.".

According to the thread on squid-dev
(http://www.eu.squid-cache.org/mail-archive/squid-dev/199805/0087.html),
this was necessary to make some versions of Netscape browsers work that
had a broken implementation of persistent connections. It was said that
"NS 3.01 is ok. NS 3.02 is bad. NS 3.04 is good." Netscape 4 was ok, too.

15 years agoAdd missing wrappers in errorpage.cc
Amos Jeffries [Tue, 25 Jan 2011 07:41:43 +0000 (20:41 +1300)] 
Add missing wrappers in errorpage.cc

15 years agoFix external_acl_type grace= option
Amos Jeffries [Tue, 25 Jan 2011 05:31:59 +0000 (18:31 +1300)] 
Fix external_acl_type grace= option

Due to race conditions between concurrent requests this is still not a
complete fix. But reduces the unwanted re-use of helper responses from
all connections arriving in a whole second which match the ACL key down
to just those that arrive within the reply lag time of the helper.

The grace option has a resolution of 1 second.

15 years agoUpdate IPv6 magic tcp_outgoing_address documentation
Amos Jeffries [Tue, 25 Jan 2011 02:55:02 +0000 (19:55 -0700)] 
Update IPv6 magic tcp_outgoing_address documentation

15 years agoAuthor: Martin Huter <mhuter@barracuda.com>
Amos Jeffries [Tue, 25 Jan 2011 02:18:38 +0000 (19:18 -0700)] 
Author: Martin Huter <mhuter@barracuda.com>
Bug 3140: memory leak in error page generation

15 years agoSimplify request parsing to not check request method when determining if a
Henrik Nordstrom [Mon, 24 Jan 2011 20:23:27 +0000 (21:23 +0100)] 
Simplify request parsing to not check request method when determining if a
request contains a request-entity or not. For requests this is signalled
entirely by Content-Length/Transfer-Encoding regardless of method.

also drops the requirement that PUT/POST requests must have a request-entity.
The RFC do not explicitly state this requirement even if the wording for those
methods do assume there is a enclosed request-entity.

The administrative "request_entities" config flag is kept for security
reasons, even if not really RFC compliant. (RFC meaning of request-entity
in GET/HEAD is just undefined or "ignored", not forbidden)

15 years agoapply the initial Phase3 of the SMP Cache Manager patch
Christos Tsantilas [Mon, 24 Jan 2011 17:24:59 +0000 (19:24 +0200)] 
apply the initial Phase3 of the SMP Cache Manager patch

15 years agoCorrect Polish language code for legacy alias
Amos Jeffries [Mon, 24 Jan 2011 00:13:51 +0000 (13:13 +1300)] 
Correct Polish language code for legacy alias

15 years agoSupport namespace in enum strings generator
Amos Jeffries [Sun, 23 Jan 2011 06:41:41 +0000 (23:41 -0700)] 
Support namespace in enum strings generator

For now only one level of namespace is supported.

Header files using namespaces are also required to exist in a sub-folder
of the same name in accordance with the SourceLayout design.

15 years agoAdd debug info on IPC failure retries
Amos Jeffries [Sat, 22 Jan 2011 09:15:20 +0000 (22:15 +1300)] 
Add debug info on IPC failure retries

15 years agoSourceFormat Enforcement
Automatic source maintenance [Sat, 22 Jan 2011 01:12:30 +0000 (18:12 -0700)] 
SourceFormat Enforcement

15 years agoAuthor: Various Translators
Amos Jeffries [Fri, 21 Jan 2011 17:02:01 +0000 (06:02 +1300)] 
Author: Various Translators
Translations Update auto-save

15 years agoDon't generate OpenListenerParams unless needed.
Amos Jeffries [Fri, 21 Jan 2011 15:48:07 +0000 (04:48 +1300)] 
Don't generate OpenListenerParams unless needed.

Removes a few minor data copies.

15 years agoremove aggrCount initialization from init() method
Christos Tsantilas [Fri, 21 Jan 2011 15:08:34 +0000 (17:08 +0200)] 
remove aggrCount initialization from init() method

15 years agoatAverage snmp values return sum not average
Christos Tsantilas [Fri, 21 Jan 2011 14:48:10 +0000 (16:48 +0200)] 
atAverage snmp values return sum not average

15 years agoBug fix: Wrong value displayed for Storage Swap size in mgr::info page
Christos Tsantilas [Fri, 21 Jan 2011 14:36:18 +0000 (16:36 +0200)] 
Bug fix: Wrong value displayed for Storage Swap size in mgr::info page

The store_swap_size/stats.store_swap_size holds kilobytes, it is wrong to
divide by 1024 these values.

15 years agorevert r11162 changes
Christos Tsantilas [Fri, 21 Jan 2011 14:29:16 +0000 (16:29 +0200)] 
revert r11162 changes

15 years agouse unsigned int instead of time_t for snmp variables
Christos Tsantilas [Thu, 20 Jan 2011 15:31:20 +0000 (17:31 +0200)] 
use unsigned int instead of time_t for snmp variables

15 years agoThe snmp included in its response only the statistics from the first kid
Christos Tsantilas [Thu, 20 Jan 2011 15:30:22 +0000 (17:30 +0200)] 
The snmp included in its response only the statistics from the first kid

15 years agoCleanup: remove dead code from typedefs.h take00
Amos Jeffries [Thu, 20 Jan 2011 10:13:05 +0000 (03:13 -0700)] 
Cleanup: remove dead code from typedefs.h

Initially the idea was to use these as hints when porting from Squid-2
but has proven not to be very useful.

15 years agostore_swap_size/Mgr::InfoActionData::store_swap_size are in Kb
Christos Tsantilas [Wed, 19 Jan 2011 10:23:18 +0000 (12:23 +0200)] 
store_swap_size/Mgr::InfoActionData::store_swap_size are in Kb

15 years agoimporting smp-snmp patch
Christos Tsantilas [Wed, 19 Jan 2011 10:12:54 +0000 (12:12 +0200)] 
importing smp-snmp patch

15 years agoTypo in ModKqueue
Amos Jeffries [Tue, 18 Jan 2011 12:16:17 +0000 (05:16 -0700)] 
Typo in ModKqueue

15 years agoCorrect language code for Czech
Amos Jeffries [Mon, 17 Jan 2011 21:11:29 +0000 (10:11 +1300)] 
Correct language code for Czech

15 years agoFix broken cfgman links on obsolete directives
Amos Jeffries [Mon, 17 Jan 2011 14:07:52 +0000 (03:07 +1300)] 
Fix broken cfgman links on obsolete directives

15 years agoFix Solaris getrusage wrapping
Amos Jeffries [Sat, 15 Jan 2011 03:24:47 +0000 (16:24 +1300)] 
Fix Solaris getrusage wrapping

15 years agoBug 2586: multiple memory leaks during reconfigure
Christos Tsantilas [Fri, 14 Jan 2011 17:45:23 +0000 (19:45 +0200)] 
Bug 2586: multiple memory leaks during reconfigure

This patch fixes:
   - a SSL_CTX object memory leak
   - a very small memory leak in MimeIcon class
   - a small memory leak while parsing adaptation_service

15 years agoMake FTP and CacheMgr obey --disable-auth-basic
Amos Jeffries [Fri, 14 Jan 2011 14:10:21 +0000 (07:10 -0700)] 
Make FTP and CacheMgr obey --disable-auth-basic

When teh proxy has been built with this auth module explicitly disabled
do not add headers indicating that it is available.

The side effect of not having Basic authentication support in the proxy
is that FTP is reduced to depending on URL logins and CacheMgr protected
actions cannot be used.

15 years agoSupport configurable status codes for deny_info
Amos Jeffries [Fri, 14 Jan 2011 06:15:23 +0000 (23:15 -0700)] 
Support configurable status codes for deny_info

This changes the default behaviour of deny_info redirects. Making Squid
automaticaly select 307 or 303 status code where appropriate for HTTP/1.1
clients and 302 for HTTP/1.0 clients or other appropriate cases.
For example;
    deny_info 303:http://example.com/ POST

On top of the behaviour change this patch adds capability for admin to
configure deny_info with explicit status codes ranging from 200 to 599.

There are limits placed on the use of each range of status codes:
 * 2xx, 4xx and 5xx may only be set when there is a local file or template
   being used as body content on the response.
 * 3xx status may only be set when there is a URI being used as a redirect
   destination.

These limitations are enforced with a configuration hard abort due to:

3xx with a named template and 4xx/5xx with a redirect break with a range
of horrible results to our file loading and output Location: URLs. My
tests ended up with Squid scanning the FS for local files called
http://blah, redirecting the browser to 404:ERR_ACCESS_DENIED, or getting
past those with zero-sized replies and crashes when err is required to
have length.

They are going to take something much more major logic re-plumbing and
maybe deeper cleanup to get the crossover down to safe enough for just a
warning. Given the RFC defined use of each status range I did not think
it worth doing to enable something on the fine edge of non-standard.

15 years agoBug 3089: FTP command output overrides directory listing
Amos Jeffries [Fri, 14 Jan 2011 05:50:43 +0000 (22:50 -0700)] 
Bug 3089: FTP command output overrides directory listing

15 years agoFix "unrecognized value for USE_LIBNETFILTERCONNTRACK: 'auto'"
Amos Jeffries [Wed, 12 Jan 2011 12:54:10 +0000 (01:54 +1300)] 
Fix "unrecognized value for USE_LIBNETFILTERCONNTRACK: 'auto'"

Thanks to Andrew Beverly.

15 years agoftp_eprt directive to disable EPRT extensions in FTP
Amos Jeffries [Wed, 12 Jan 2011 05:23:00 +0000 (22:23 -0700)] 
ftp_eprt directive to disable EPRT extensions in FTP

This allows admin to resolve compatibility problems with old devices which
encounter a range of problems when FTP extensions are used by selectively
disabling any of the extensions individually.

The other EPSV extensions already have enable/disable directives.

15 years agoPortability fix: remo^Cd unused code from smblib
Francesco Chemolli [Tue, 11 Jan 2011 22:25:34 +0000 (23:25 +0100)] 
Portability fix: remo^Cd unused code from smblib

15 years agoPortability fix: removed unused code from smblib
Francesco Chemolli [Tue, 11 Jan 2011 22:01:53 +0000 (23:01 +0100)] 
Portability fix: removed unused code from smblib

15 years agoBug 2959: remove SAMBAPREFIX dependency
Amos Jeffries [Tue, 11 Jan 2011 07:33:27 +0000 (00:33 -0700)] 
Bug 2959: remove SAMBAPREFIX dependency

This removes the tricky SAMBAPREFIX variable which passes full-path
information from the squid build machine down to the run-time host
helper.

Such information is not always correct when crossing machines, and the
binaries being run can easily be added to PATH in the run-time host
environment instead.

The net result of doing this is removal of Samba from the build
dependencies and increased availability of the basic_smb_auth and
ext_wbinfo_group_acl helpers.

15 years agoPrevent extra lines being pulled into xprof_type.h
Amos Jeffries [Tue, 11 Jan 2011 07:31:04 +0000 (00:31 -0700)] 
Prevent extra lines being pulled into xprof_type.h

15 years agoPortability fix: remove unneeded functions in lib/rfcnb
Francesco Chemolli [Mon, 10 Jan 2011 17:11:07 +0000 (18:11 +0100)] 
Portability fix: remove unneeded functions in lib/rfcnb

15 years agoportability fix: lib/rfcnb symbol shuffling
Francesco Chemolli [Mon, 10 Jan 2011 16:55:29 +0000 (17:55 +0100)] 
portability fix: lib/rfcnb symbol shuffling

15 years agoStandard compliance fix: size_t is guaranteed unsigned.
Francesco Chemolli [Mon, 10 Jan 2011 14:46:21 +0000 (15:46 +0100)] 
Standard compliance fix: size_t is guaranteed unsigned.

15 years agoMaintenance: auto-sync XPROF counter types with sources
Amos Jeffries [Mon, 10 Jan 2011 11:01:26 +0000 (04:01 -0700)] 
Maintenance: auto-sync XPROF counter types with sources

15 years agoSourceLayout: shuffle comm IO loops into libcomm and Comm namespace
Amos Jeffries [Mon, 10 Jan 2011 09:43:43 +0000 (02:43 -0700)] 
SourceLayout: shuffle comm IO loops into libcomm and Comm namespace

15 years agoCorrect EUI logging documentation
Amos Jeffries [Sat, 8 Jan 2011 06:32:58 +0000 (19:32 +1300)] 
Correct EUI logging documentation

15 years agoAuthor: Henrik Nordstrom <hno@squid-cache.org>
Amos Jeffries [Sat, 8 Jan 2011 06:23:27 +0000 (19:23 +1300)] 
Author: Henrik Nordstrom <hno@squid-cache.org>
Port from 2.7: maximum staleness limits

The default behaviour of Squid is to provide a stale copy (with Warnigng:
header) until an actove response from the origin server causes the object
to be updated or garbage collection causes its removal.

The max_stale direcive and refresh_pattern max-stale=N option allow admin
to set an upper limit on the objects age when serving stale responses.

15 years agoFixed typo in unused(?) HttpHeader::putSc() method. Range header was deleted.
Alex Rousskov [Mon, 3 Jan 2011 22:51:39 +0000 (15:51 -0700)] 
Fixed typo in unused(?) HttpHeader::putSc() method. Range header was deleted.

15 years agoAuthor: Florent <fcarli@gmail.com>
Christos Tsantilas [Thu, 30 Dec 2010 11:16:21 +0000 (13:16 +0200)] 
Author: Florent <fcarli@gmail.com>
Bug 3129: ssl-crtd / Dynamically generated certicates' "subject" and "issuer" include "-----BEGIN CERTIFICATE-----"

15 years agoAuthor: Henrik Nordstrom <hno@squid-cache.org>
Amos Jeffries [Mon, 27 Dec 2010 20:25:30 +0000 (13:25 -0700)] 
Author: Henrik Nordstrom <hno@squid-cache.org>
Support RFC 5861 Cache-Control: stale-if-error option

The default behaviour for Squid is to present the stale object when
revalidation fails with a 5xx error.

stale-if-error places a maximum limit on how long this stale object may
be sent. After the limit has passed Squid is required to present the 5xx
message to the client.

Original code for Squid-2 was sponsored by Yahoo!.

Portage done by Alex Rousskov and Amos Jeffries.

15 years agoAdd omitted Makefile generation
Amos Jeffries [Sun, 26 Dec 2010 02:07:17 +0000 (15:07 +1300)] 
Add omitted Makefile generation

15 years agoAuthor: Marcello Romani <marcello.romani@libero.it>
Amos Jeffries [Sun, 26 Dec 2010 01:38:26 +0000 (14:38 +1300)] 
Author: Marcello Romani <marcello.romani@libero.it>
Author: Amos Jeffries <squid3@treenet.co.nz>
Database Logging Daemon

Original code by Marcello Romani, this version has some additions to
initialize any missing database tables depended on during its startup
phase and some additional polish to fit within the current Squid release.

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Marcello Romani

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.8 or,
at your option, any later version of Perl 5 you may have available.

15 years agoCPU profiler is a dev testing feature. Disable by default.
Amos Jeffries [Fri, 24 Dec 2010 14:00:09 +0000 (07:00 -0700)] 
CPU profiler is a dev testing feature. Disable by default.

15 years agoPrep for 3.1.10 and 3.2.0.4
Amos Jeffries [Wed, 22 Dec 2010 03:14:21 +0000 (16:14 +1300)] 
Prep for 3.1.10 and 3.2.0.4

15 years agohttp_port display cleanup
Amos Jeffries [Mon, 20 Dec 2010 23:52:52 +0000 (16:52 -0700)] 
http_port display cleanup

 * ignore-cc is a violation when not on accel ports.

15 years agoChanged package label to avoid confusion with the official distribution. for-libecap-v0p1 take2
Alex Rousskov [Sun, 19 Dec 2010 03:56:38 +0000 (20:56 -0700)] 
Changed package label to avoid confusion with the official distribution.

15 years agoFixed BodyPipe.cc:144 "!theConsumer" assertion.
Alex Rousskov [Sun, 19 Dec 2010 03:51:48 +0000 (20:51 -0700)] 
Fixed BodyPipe.cc:144 "!theConsumer" assertion.

BodySink must hold a pointer to the body pipe it is consuming. Otherwise, the
pipe may be deleted before BodySink received the final notification and had a
chance to stop consumption, causing the assertion in the pipe destructor.

15 years agoeCAP: (A) Support optional adapter parameters and (B) fix virgin body handling. take1
Alex Rousskov [Sat, 18 Dec 2010 00:31:53 +0000 (17:31 -0700)] 
eCAP: (A) Support optional adapter parameters and (B) fix virgin body handling.

(A): Optional adapter-specific eCAP service parameters can be specified after
the Squid-recognized ones:

    ecap_service s1 respmod_precache ecap://...  name1=value1 name2=...

These extra parameters are passed as (name, opaque value) pairs to the
adapter, using the newly added libecap::Config API. Adapters should throw if
they cannot understand the parameters to protect users from typos in optional
Squid-recognized parameters.

Squid-recognized service parameters can also be passed to adapters. Adapters
can distinguish them from custom ones or typos because their names have host
IDs set. We currently only pass one Squid recognized service parameter called
"bypassable", with a boolean values of "1" or "0". This tells Adapter whether
Squid can try to bypass the adapter in case of problems. In our experience,
many real adapters benefit from such knowledge because they can be less strict
and more forgiving if Squid might ignore their decisions anyway.

To support optional adapter parameters for eCAP without bothering ICAP,
we now allow ICAP and eCAP to create protocol-specific configuration objects.
ICAP code uses old defaults. eCAP implements parsing of optional adapter
parameters and sharing them with adapters

As a side effect, service configuration objects are now refcounted and each
service (once created) is responsible for its config. The global collection of
configs is emptied once the services are created.

(B) eCAP transaction wrapper code (Ecap::XactionRep) failed to pass a few test
cases when dealing with virgin bodies. The code used complex state and
mishandled several proxyingVb, nil body_pipe, and stillConsuming value
combinations. proxyingVb was especially troubling because it was not clear
whether it refers to us receiving vb from Squid core or sending vb to the
adapter. The two states are related but different because we could be
receiving vb from core but not sending it to the adapter and vice versa.

I have removed proxyingVb completely as the body pipe state alone is
sufficient to understand our dealings with Squid core. I added makingVb to
track adapter vb needs.

Also improved Ecap::XactionRep status debugging.

15 years agoSet Squid IDs for known header names to speedup comparisons.
Alex Rousskov [Sat, 18 Dec 2010 00:04:16 +0000 (17:04 -0700)] 
Set Squid IDs for known header names to speedup comparisons.

15 years agoUse the right printf args for client_request_buffer_max warning
Amos Jeffries [Fri, 17 Dec 2010 12:59:35 +0000 (05:59 -0700)] 
Use the right printf args for client_request_buffer_max warning

15 years agoAdd docs and prevent parse loops on client_request_buffer_max
Amos Jeffries [Fri, 17 Dec 2010 05:46:37 +0000 (22:46 -0700)] 
Add docs and prevent parse loops on client_request_buffer_max

15 years agoSupport newly added libecap::header::visitEach API for iterating header fields.
Alex Rousskov [Thu, 16 Dec 2010 15:41:37 +0000 (08:41 -0700)] 
Support newly added libecap::header::visitEach API for iterating header fields.

15 years agoAllow uri=value parameter when specifying adaptation service URIs.
Alex Rousskov [Thu, 16 Dec 2010 06:12:06 +0000 (23:12 -0700)] 
Allow uri=value parameter when specifying adaptation service URIs.

When adaptation service URI contains a "=" character, Squid thinks you are
specifying a name=value option rather than a service URI. This leads to a
fatal configuration error.

This change lets you specify the service URI using the uri=value
syntax where the value may contain "=" character(s). For example, the
following works after and only after this change:

  icap_service s1 reqmod_precache uri=icap://10.0.0.1:1344/adapt?bar=foo

TODO: Should the adaptation service parser be changed to treat the last word
on the icap_service line as a service URI, regardless of whether it contains
the "=" character?

15 years agoImportant messages from eCAP adapters were logged with too high level
Alex Rousskov [Thu, 16 Dec 2010 05:48:15 +0000 (22:48 -0700)] 
Important messages from eCAP adapters were logged with too high level
because of a DBG_DATA/DBG_IMPORTANT typo in debugs() wrapper for adapters.

15 years agoCompat: static functions cannot be passed externally
Amos Jeffries [Thu, 16 Dec 2010 02:25:55 +0000 (19:25 -0700)] 
Compat: static functions cannot be passed externally

15 years agoSourceFormat Enforcement
Automatic source maintenance [Thu, 16 Dec 2010 01:15:12 +0000 (18:15 -0700)] 
SourceFormat Enforcement

15 years agoAuthor: Chad Naugle <chad.naugle@travimp.com>
Amos Jeffries [Wed, 15 Dec 2010 21:59:50 +0000 (14:59 -0700)] 
Author: Chad Naugle <chad.naugle@travimp.com>
ext_edirectory_user_ip: hack fix -3 result in StringSplit algorithm

15 years agoSupport libecap::host::xaction::blockVirgin() API, serving ERR_ACCESS_DENIED.
Alex Rousskov [Wed, 15 Dec 2010 17:52:35 +0000 (10:52 -0700)] 
Support libecap::host::xaction::blockVirgin() API, serving ERR_ACCESS_DENIED.

deny_info logic is supported for these blocked responses, with the ACL name
replaced by the adaptation service name. This allows eCAP adapters to focus on
adaptation and blocking logic while letting Squid to serve a configurable
block message, with language negotiation and such.

Merged noteAdaptationAnswer(msg) and noteAdaptationQueryAbort(bool) into
noteAdaptationAnswer(answer). The Adaptation::Answer class manages all
currently supported adaptation decisions: forward the adapted message, block
user access to the virgin response, and bypassable or fatal error.

This "single answer hook" design allows us to add more information to adaption
answers without rewriting all the code that forwards those answers to the
adaptation initiator. We still often use multiple methods to handle multiple
answer categories, but that "forking" is optional and the decision to fork is
made locally, inside each answer recepient, reducing the overall code
complexity.

Also fixed a few virgin body handling corner cases that led to unnecessary
exceptions in Adaptation::Ecap::XactionRep despite correct adapter behavior.

15 years agoAllow constant pointers to non-constant HttpMsgs.
Alex Rousskov [Wed, 15 Dec 2010 17:04:09 +0000 (10:04 -0700)] 
Allow constant pointers to non-constant HttpMsgs.

15 years agoext_edirectory_userip_acl: alternative split algorithms
Amos Jeffries [Wed, 15 Dec 2010 12:13:01 +0000 (05:13 -0700)] 
ext_edirectory_userip_acl: alternative split algorithms

Some compilers do not support dynamically allocated stack space.
Instead perform a scan and hunk copy/wipe of the passed buffers directly.
As a side effect the split is no longer triple-copying data and
double-memset'ing.

15 years agoDocumentation fixes
Amos Jeffries [Wed, 15 Dec 2010 10:12:22 +0000 (23:12 +1300)] 
Documentation fixes

15 years agoAuthor: Graham Keeling <graham@equiinet.com>
Christos Tsantilas [Wed, 15 Dec 2010 09:38:03 +0000 (11:38 +0200)] 
Author: Graham Keeling <graham@equiinet.com>
Bug 3113: Squid can eat far too much memory when uploading files

Problem description:
  Uploading a large file to a web site on the internet, squid's client
input buffer will increase far faster than it can be emptied to
the target website, and the machine will swiftly run out of memory.

This patch adds the client_request_buffer_max_size configuration
parameter  which specifies the maximum buffer size of a client request.

15 years agoVarious source format cleanups
Henrik Nordstrom [Tue, 14 Dec 2010 14:01:14 +0000 (15:01 +0100)] 
Various source format cleanups

undo damage done by earlier astyle versions and adjust some
imported code to follow reasonable style. no functional change.

15 years agoFix the "Report ERR_SECURE_CONNECT_FAIL details" patch (rev 11122)
Christos Tsantilas [Tue, 14 Dec 2010 12:17:34 +0000 (14:17 +0200)] 
Fix the "Report ERR_SECURE_CONNECT_FAIL details" patch (rev 11122)

Looks that the error_t is a define in some platforms. Rename Ssl::error_t to
Ssl::ssl_error_t to avoid compile problems

15 years agoCompat: define #define PRINTF_FORMAT_ARG* for non-gcc compilers
Amos Jeffries [Tue, 14 Dec 2010 03:35:01 +0000 (20:35 -0700)] 
Compat: define #define PRINTF_FORMAT_ARG* for non-gcc compilers

15 years agoFreeBSD: slightly better version test for pthread support
Amos Jeffries [Tue, 14 Dec 2010 02:54:35 +0000 (19:54 -0700)] 
FreeBSD: slightly better version test for pthread support

The old one could not handle minor releases. This one only looks at the
first byte of the numeric version. So will break again when 10.* is released.

However 6.* should be dead by then.

15 years agoSourceFormat Enforcement
Automatic source maintenance [Tue, 14 Dec 2010 01:12:24 +0000 (18:12 -0700)] 
SourceFormat Enforcement

15 years agoReport ERR_SECURE_CONNECT_FAIL details to the user via a new error detail API.
Christos Tsantilas [Mon, 13 Dec 2010 23:02:52 +0000 (01:02 +0200)] 
Report ERR_SECURE_CONNECT_FAIL details to the user via a new error detail API.

Currently, the ERR_SECURE_CONNECT_FAIL response contains no usable error
information. Moreover, there is no interface to pass SSL error information
to the response generation code.

This patch adds an interface to allow Squid error responses to contain detailed
information about SSL certificate verification failure. For example, the error
message may contain the following text:
 "Server Certificate Verification Failed: Certificate Common Name
  (www.lufthansa.com) does not match the host name you are connecting to
  (www.lufthansa.de)."

This is a Measurement Factory project.

Change details:
--------------------

- errorpage.cc/.h: The error page now supports the '%D'  formating code to
  display the detail string passed by modules. The detail strings passed by
  modules can contain error page formating codes. Currently only SSL detail
  errors messages are supported.

- A new class Ssl::ErrorDetail defined in ssl/ErrorDetail.[cc,h]
  The Ssl::ErrorDetail objects passed to the SSL verification callback functions
  (sl_verify_cb callback function defined in support.cc) and filled with error
  detail data (error_no and a pointer to the X509 Certificate) in the case of
  an error and passed back to the forward.cc code.

- The Ssl::ErrorDetail class internally uses (hard coded) templates and
  formating codes to allow supporting multiple languages and adding easily
   new features

Other changes:
-------------------

- errorpage.cc/.h: The BuildContent method split to BuildContent and ConvertText
  method. The second method does the real conversion from a given text template
  to output. It is used now to allow formating the detail strings passed with
  %D.

 - sslparseErrorString moved to ssl/ErrorDetail.cc file and renamed to
   Ssl::parseErrorString

 - sslFindErrorString moved to ssl/ErrorDetail.cc file and renamed to
   Ssl::getErrorName

 - The ssl_error_t typedef definition moved from ssl/support.h to
   ssl/ErrorDetail.h and renamed to Ssl::error_t

15 years agoCompat: cleanup several config.h hacks
Amos Jeffries [Mon, 13 Dec 2010 11:31:14 +0000 (00:31 +1300)] 
Compat: cleanup several config.h hacks

* removes the xmemcpy and xmemmove hacks. Squid has been building for some
  long time without them being consistently used all-over. No complaints.
  bcopy() alternative is still use if needed. However main code can now
  use memcpy( )and memmove() without special X knowledge.

* shuffle strnstr replacement into libcompat from libmisc

* shuffles xis*() function wrappers for is*() with type-casting into compat

No operational changes.

15 years agoFix switch wrapping in log Format custom
Amos Jeffries [Mon, 13 Dec 2010 01:52:37 +0000 (18:52 -0700)] 
Fix switch wrapping in log Format custom

15 years agoSourceFormat Enforcement
Automatic source maintenance [Mon, 13 Dec 2010 01:12:30 +0000 (18:12 -0700)] 
SourceFormat Enforcement

15 years agoHandle early eCAP transaction failures better.
Alex Rousskov [Mon, 13 Dec 2010 00:16:00 +0000 (17:16 -0700)] 
Handle early eCAP transaction failures better.

Do not throw an exception if eCAP transaction had to deal with a virgin body
but was not consuming it at swangSong() time. This may happen if the eCAP
adapter throws an exception before the adapter requests the virgin body
transmission or after it stops the transmission. In other words, the
transaction wrapper consumes only if proxyingVb is on.

Merged from trunk r11118.