]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
10 years agoParser-NG: HTTP Response Parser upgrade
Amos Jeffries [Thu, 26 Feb 2015 13:19:35 +0000 (05:19 -0800)] 
Parser-NG: HTTP Response Parser upgrade

1) convert the HTTP server read buffer to an SBuf using the same design
and Comm::Read API implemented previously for the client connections.

The buffer remains default initialized at 16KB per connection but is no
longer absolutely limited to 256KB. Instead it is limited by
configuration options controlling maximum server input sizes on
read_ahead_gap and response message headers.

The Client API has been extended with a new method to estimate size
requirements of an SBuf I/O buffer. Modelled on and deprecating the
existing MemBuf estimator.

The Comm::ReadNow() API is extended to allow limited-size read(2)
operations by setting the CommIoCbParams::size parameter.

The HttpStateData buffer is partially detached from
StoreEntry::delayAwareRead() API due to requirements of the
Comm::ReadNow() API. Instead StoreEntry::bytesWanted() is used directly
to determine read(2) size, and DeferredRead are generated only when
ReadNow() is actually and immediately to be deferred. Theoretically this
means less read operations get deferred in some high load cases.
Practically it means there is no longer an AsyncCall queue plus socket
wait delay between delay_pools promising a read size, doing the
read(2), and accounting for the bytes received - accuracy should be much
improved under load.

This introduces one temporary performance regression converting the SBuf
content to MemBuf for chunked decoder to process.

2) add Http1::ResponseParser class for parsing HTTP response messages.

Modelled on the same design as used for the HTTP RequestParser, and
inheriting from a mutual parent Http1::Parser.

The Parser is Tokeniser based, incremental and 'consumes' bytes out of
the buffer as they are parsed.

The Tokenizer int64 API is updated to handle limited-length scans and
optional +/- symbols.

This Parser class recognises HTTP/1.x and ICY/1 syntax messages. Any
unknown syntax input is assumed to be HTTP "0.9" and it will
gateway/transform the response to HTTP/1.1.
 NOTE: these are all semantic actions performed by the code being
replaced in (3). Only the form and OO scoping has changed.

The mime header block detection operation is generalized into the
Http1::Parser for use by both RequestParser and ResponseParser. The
request_parse_status error code has also been adapted for shared use.

3) integrate the HTTP1::ResponseParser with HttpStateData server
response processing.

This is largely code shuffling. Though I have extended the EOF \r\n hack
such that it enables Squid to parse truncated response headers now.

10 years agoSourceFormat Enforcement
Source Maintenance [Thu, 26 Feb 2015 12:12:11 +0000 (12:12 +0000)] 
SourceFormat Enforcement

10 years agoMerge from trunk rev.13952
Amos Jeffries [Thu, 26 Feb 2015 10:41:51 +0000 (02:41 -0800)] 
Merge from trunk rev.13952

10 years agoBug 2741 (partial): Initial libsecurity API
Amos Jeffries [Thu, 26 Feb 2015 10:37:41 +0000 (02:37 -0800)] 
Bug 2741 (partial): Initial libsecurity API

The first step(s) towards a generic TLS/SSL security API for Squid.

Creates the basic security/libsecurity.la library and Security::
namespace infrastructure. Symbols provided by this API are always
available instead of conditionally compiled (unlike the ssl/* code for
OpenSSL use).

Merge the TLS/SSL context parameters into a Security::PeerOptions
object instead of maintaining multiple member variables in the
CachePeer and SquidConfig objects.

Squid now provides an error if SSL-specific squid.conf parameters are
used for a Squid without OpenSSL support, instead of silently ignoring
them.

10 years agoMerged from trunk
Amos Jeffries [Thu, 26 Feb 2015 10:25:12 +0000 (02:25 -0800)] 
Merged from trunk

10 years agoBug 2907: high CPU usage on CONNECT when using delay pools
Amos Jeffries [Thu, 26 Feb 2015 06:05:02 +0000 (22:05 -0800)] 
Bug 2907: high CPU usage on CONNECT when using delay pools

When delay pools are active on a CONNECT tunnel and the pool is drained
the I/O loop cycles very often transferring 1 byte until the pool is
topped-up at the end of the second.

Instead of looping constantly trying to read 1 byte at a time, add an
asynchronous event to wait for a few I/O cycles or until more bytes can
be read.

To protect against infinite loops of waiting when many tunnels are
competing for the pool allowance we only delay for a limited number of
loops before allowing at least 1 byte through. Also, the amount of time
waited is an odd fraction of 1 second so re-tries naturally spread
across any given second fairly, with connections rotating closer or
further from the time when pool topup happens. That behaviour still
allows some variance in service times, but overall the CPU consumption
and (as a result) total proxy speed appears to be much improved.

NP: Initial production testing shows a 36% RPS speed increase,
    with a 50% reduction in total CPU usage.

10 years agoSourceFormat Enforcement
Source Maintenance [Wed, 25 Feb 2015 18:12:07 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoFake CONNECT exceeds concurrent requests limit part2: wrap Openssl related code insid...
Christos Tsantilas [Wed, 25 Feb 2015 16:22:15 +0000 (18:22 +0200)] 
Fake CONNECT exceeds concurrent requests limit part2: wrap Openssl related code inside "#if USE_OPENSSL ..."

10 years agoFake CONNECT exceeds concurrent requests limit.
Christos Tsantilas [Wed, 25 Feb 2015 15:53:29 +0000 (17:53 +0200)] 
Fake CONNECT exceeds concurrent requests limit.

Squid closes the SSL client connection with "Failed to start fake CONNECT
request for ssl spliced connection". This happens especially often when
the pipeline_prefetch configuration parameter is set to "0" (i.e., default).

When a transparent SSL connection is peeked and then spliced in step2, we are
generating a fake CONNECT request. The fake CONNECT request is counted as a
new pipelined request and may exceed the configured limit. This patch solves
this problem by raising the limit for that request.

Needs more work to better identify the requests that need a different limit.

This is a Measurement Factory project.

10 years agoBug 3805: support shared memory on MacOS X in Mem::IPC::Segment
Joshua Root [Wed, 25 Feb 2015 13:32:14 +0000 (14:32 +0100)] 
Bug 3805: support shared memory on MacOS X in Mem::IPC::Segment

MacOS X doesn't support the O_TRUNC flag to shm_open; it is redundant anyway
because the shared memory segment is truncated immediately after opening
as per best practices. With this support Squid can now be built and run
under MacOS X.

10 years agoCandidate for fixing MacOS SHM
Francesco Chemolli [Tue, 24 Feb 2015 10:32:15 +0000 (11:32 +0100)] 
Candidate for fixing MacOS SHM

10 years agoAllow removal of delayed read events on connection close
Amos Jeffries [Mon, 23 Feb 2015 08:09:21 +0000 (00:09 -0800)] 
Allow removal of delayed read events on connection close

.. also use the TunnelStateData directly instead of wrapped in
generic_cbdata so the event engine can identify dead tunnels.
Its a cbdata class anyway so the generic_cbdata was redundant.

10 years agoRemove cache_peer_domain directive
Amos Jeffries [Mon, 23 Feb 2015 06:34:49 +0000 (22:34 -0800)] 
Remove cache_peer_domain directive

Identical functionality is provided through cache_peer_access.

While this check appears at face value to be simpler than ACLs, the
reality is that:
* the difference is simply the time it takes to initialize and destruct
  an on-stack Checklist,
* processing the checks may take longer than ACLs (linked-list of string
  comparisons vs single tree lookup),
* ACLs are the common case due to their extra flexibility, and
* extra work is being done per-transaction just to check which of the
  two features is in use.

By removing we gain less code and configuration directives to work
around in the long term.

10 years agoUse RefCount::dereference() correctly in move assignment
Amos Jeffries [Sat, 21 Feb 2015 12:29:16 +0000 (04:29 -0800)] 
Use RefCount::dereference() correctly in move assignment

The dereference() member is actually an update operation on the stored
pointer. We can and should just use it to steal the others pointer
instead of using it on our own then stealing.

10 years agoBug 2907: high CPU usage on CONNECT when using delay pools
Amos Jeffries [Sat, 21 Feb 2015 03:31:22 +0000 (19:31 -0800)] 
Bug 2907: high CPU usage on CONNECT when using delay pools

When delay pools are active on a CONNECT tunnel and teh pool is drained
the I/O loop cycles very often transferring 1 byte until the pool is
topped-up at the end of the second.

Instead of looping constantly trying to read 1 byte at a time, add an
asynchronous event to wait for a few I/O cycles or until more bytes can
be read.

To protect against infinite loops of waiting when many tunnels are
competing for the pool allowance we only delay for a limited number of
loops before allowing at least 1 byte through. Also, the amount of time
waited is an odd fraction of 1 second so re-tries naturally spread
across any given second fairly, with connections rotating closer or
further from the time when pool topup happens.

10 years agoFix testHeaders
Francesco Chemolli [Fri, 20 Feb 2015 19:50:41 +0000 (20:50 +0100)] 
Fix testHeaders

Author: Amos Jeffries

10 years agoFix typo in rev.13942
Amos Jeffries [Fri, 20 Feb 2015 11:56:13 +0000 (03:56 -0800)] 
Fix typo in rev.13942

10 years agoFix RefCount move assignment
Francesco Chemolli [Fri, 20 Feb 2015 10:16:12 +0000 (11:16 +0100)] 
Fix RefCount move assignment

10 years agoImplement move constructor and assignment for RefCount
Francesco Chemolli [Fri, 20 Feb 2015 08:58:14 +0000 (09:58 +0100)] 
Implement move constructor and assignment for RefCount

10 years agoFix TestHeaders unit tests
Amos Jeffries [Fri, 20 Feb 2015 08:24:22 +0000 (00:24 -0800)] 
Fix TestHeaders unit tests

10 years agoDrop needless stdbool.h
Amos Jeffries [Fri, 20 Feb 2015 04:39:48 +0000 (20:39 -0800)] 
Drop needless stdbool.h

10 years agoMerge from trunk rev.13939
Amos Jeffries [Fri, 20 Feb 2015 03:25:12 +0000 (19:25 -0800)] 
Merge from trunk rev.13939

10 years agoPortability fix: remove delegating constructors from SBuf
Francesco Chemolli [Thu, 19 Feb 2015 21:30:25 +0000 (22:30 +0100)] 
Portability fix: remove delegating constructors from SBuf

10 years agoSourceFormat Enforcement
Source Maintenance [Thu, 19 Feb 2015 18:12:06 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoMerged from trunk
Francesco Chemolli [Thu, 19 Feb 2015 17:03:22 +0000 (18:03 +0100)] 
Merged from trunk

10 years agoMCorrectly mentioned SBuf debug section
Francesco Chemolli [Thu, 19 Feb 2015 17:03:03 +0000 (18:03 +0100)] 
MCorrectly mentioned SBuf debug section

10 years agoImplemented c++11 move operations for RefCount
Francesco Chemolli [Thu, 19 Feb 2015 16:11:58 +0000 (17:11 +0100)] 
Implemented c++11 move operations for RefCount

10 years agoImplement move-constructors for SBuf, improve debug output for SBuf and Tokenizer
Francesco Chemolli [Thu, 19 Feb 2015 15:59:13 +0000 (16:59 +0100)] 
Implement move-constructors for SBuf, improve debug output for SBuf and Tokenizer

10 years agoMerged from trunk
Francesco Chemolli [Thu, 19 Feb 2015 15:43:05 +0000 (16:43 +0100)] 
Merged from trunk

10 years agoImplemented move ctor counting, removed some experimental commented code
Francesco Chemolli [Thu, 19 Feb 2015 14:52:46 +0000 (15:52 +0100)] 
Implemented move ctor counting, removed some experimental commented code

10 years agoImplemented selective debugs() output for unit tests
Francesco Chemolli [Thu, 19 Feb 2015 14:52:14 +0000 (15:52 +0100)] 
Implemented selective debugs() output for unit tests

10 years agoext_wbinfo_group_acl: Perl 5.20 syntax errors
drserge [Thu, 19 Feb 2015 03:00:51 +0000 (19:00 -0800)] 
ext_wbinfo_group_acl: Perl 5.20 syntax errors

With Perl 5.20 the helper exits with many errors similar to:

  Global symbol "$groupSID" requires explicit package name at
    /usr/libexec/squid/ext_wbinfo_group_acl

10 years agobasic_nis_auth: fail authentication on crypt() failures
Amos Jeffries [Thu, 19 Feb 2015 02:50:51 +0000 (18:50 -0800)] 
basic_nis_auth: fail authentication on crypt() failures

... instead of crashing the helper.

"
Starting with glibc 2.17 (eglibc 2.17), crypt() fails with EINVAL (w/
NULL return) if the salt violates specifications. Additionally, on
FIPS-140 enabled Linux systems, DES or MD5 encrypted passwords passed to
crypt() fail with EPERM (w/ NULL return).
"

10 years agobasic_getpwnam_auth: fail authentication on crypt() failures
Amos Jeffries [Thu, 19 Feb 2015 02:48:23 +0000 (18:48 -0800)] 
basic_getpwnam_auth: fail authentication on crypt() failures

... instead of crashing the helper.

"
Starting with glibc 2.17 (eglibc 2.17), crypt() fails with EINVAL (w/
NULL return) if the salt violates specifications. Additionally, on
FIPS-140 enabled Linux systems, DES or MD5 encrypted passwords passed to
crypt() fail with EPERM (w/ NULL return).
"

10 years agoFix issues with move SBuf::compare, implement SBuf move constructors and move assignm...
Francesco Chemolli [Wed, 18 Feb 2015 16:13:33 +0000 (17:13 +0100)] 
Fix issues with move SBuf::compare, implement SBuf move constructors and move assignment, implement move operations counters.

10 years agoInstrumented SBuf::compare and many Tokenizer methods with debug statements.
Francesco Chemolli [Wed, 18 Feb 2015 11:25:46 +0000 (12:25 +0100)] 
Instrumented SBuf::compare and many Tokenizer methods with debug statements.

10 years agoRelease Notes 3.6 whitespace polish
Amos Jeffries [Wed, 18 Feb 2015 10:28:33 +0000 (02:28 -0800)] 
Release Notes 3.6 whitespace polish

10 years agoPrep for 3.5.2 and 3.4.12
Amos Jeffries [Wed, 18 Feb 2015 10:22:51 +0000 (02:22 -0800)] 
Prep for 3.5.2 and 3.4.12

10 years agoext_kerberos_ldap_group_acl: Heimdal support improvements
Markus Moeller [Wed, 18 Feb 2015 02:30:34 +0000 (18:30 -0800)] 
ext_kerberos_ldap_group_acl: Heimdal support improvements

* fix build errors on FreeBSD with Heimdal library

* remove PAC support from being built when not needed

* update man(8) page documentation po4a syntax

10 years agoInterim: implement move constructor and tryto rework SBuf::compare
Francesco Chemolli [Tue, 17 Feb 2015 17:46:12 +0000 (18:46 +0100)] 
Interim: implement move constructor and tryto rework SBuf::compare

10 years agoInterim: implement SBuf move constructor, TODO: fix SBuf::compare
Francesco Chemolli [Mon, 16 Feb 2015 16:19:19 +0000 (17:19 +0100)] 
Interim: implement SBuf move constructor, TODO: fix SBuf::compare

10 years agosslproxy_options in peek-and-splice mode
Christos Tsantilas [Sun, 15 Feb 2015 19:42:55 +0000 (21:42 +0200)] 
sslproxy_options in peek-and-splice mode

Problem description:
  - Squid sslproxy_options deny the use of TLSv1_2 SSL protocol:
     sslproxy_options NO_TLSv1_2
  - Squid uses peek mode for bumped connections.
  - Web client sends an TLSv1_2 hello message and squid in peek mode, forwards
    the client hello message to server
  - Web server respond with an TLSv1_2 hello message
  - Squid while parsing server hello message aborts with an error because
    sslproxy_options deny the use ot TLSv1_2 protocol.

This patch fixes squid to ignore sslproxy_options when peek or stare bumping
mode selected on bumpStep2 bumping step.
The sslproxy_options applied if bump (server-first or client-first) mode
selected on bumpStep1 or bumpStep2 bumping step.
Also applied for "GET https://..." requests.

This is a Measurement Factory project

10 years agoFix memory leaks in cachemgr.cgi URL parser
Amos Jeffries [Sun, 15 Feb 2015 08:24:23 +0000 (00:24 -0800)] 
Fix memory leaks in cachemgr.cgi URL parser

  Detected by Coverity Scan. Issue 1256164

10 years agoRelease Notes: fix mirrors link URL
Amos Jeffries [Thu, 12 Feb 2015 15:26:42 +0000 (07:26 -0800)] 
Release Notes: fix mirrors link URL

10 years agoHTTP/1.1: Remove refresh_pattern ignore-auth violation
Amos Jeffries [Thu, 12 Feb 2015 02:24:06 +0000 (18:24 -0800)] 
HTTP/1.1: Remove refresh_pattern ignore-auth violation

The original intent for this option was to improve caching. However
HTTP/1.1 permits caching of authenticated messages under conditions
which Squid does check for and obey already.

The legacy popularity of this option from old Squid without the HTTP/1.1
compliant behaviour is now just forming a security and privacy abuse.

10 years agoParser-NG: HTTP request-line parser replacement
Amos Jeffries [Tue, 10 Feb 2015 22:55:58 +0000 (14:55 -0800)] 
Parser-NG: HTTP request-line parser replacement

Converts the request-line parse method from a char* string parser to
using ::Parser::Tokenizer based processing.

* The characters for each token are now limited to the RFC 7230
compliant values. The URI is taken as a whole token and characters which
are valid in only one sub-token segment are accepted regardless of their
position. In relaxed parse that is extended beyond the valid URI
characters to include the whitespace characters.

* Whitespace tolerance is extended to include "binary" whitespace VTAB,
HTAB, CR and FF characters specified in RFC 7230.

* The Squid specific tolerance for whitespace prefix to method is
removed. RFC 2730 clarifies that tolerance before request-line is
specfifically and only for whole empty lines (sequences of CRLF or LF).

* The unit tests are extended to check strict and relaxed parse within
the new characterset limits. Drip-feed incremental test updated to check
both parser modes explicitly.

* ::Parser:Tokenizer is extended with methods to skip or retrieve a
token at the suffix of the stored buffer. This is used by the whitespace
tolerant parse to process the URL and HTTP-version tokens from the line
"backwards" from the LF position.

CoAdvisor and Polygraph show no differences. Which is expected since
coadvisor does not test RFC 7230 edge cases (yet), and polygraph is not
stressing incremental parse capabilities.

10 years agoext_ldap_group_acl:fix man(8) page documentation
Amos Jeffries [Tue, 10 Feb 2015 21:10:03 +0000 (13:10 -0800)] 
ext_ldap_group_acl:fix man(8) page documentation

10 years agoBug 4073: Cygwin compile errors
Eldar Akchurin [Tue, 10 Feb 2015 03:44:32 +0000 (19:44 -0800)] 
Bug 4073: Cygwin compile errors

Remove the definition of _SQUID_WINDOWS_ for Cygwin builds. The blend
of win32 and Linux environments is sufficiently different to have major
build issues. We have a precedent in kFreeBSD blend of BSD and Linux to
consider Cygwin a blend and first-class OS.

Also, temporarily disable the Win32-specific libraries and objects until
they can be properly tested.

Fix some small remaining compile errors after the above.

 Cygwin Windows build is sponsored by Diladele B.V.

10 years agoWindows: fix build errors after rev.13867
Amos Jeffries [Mon, 9 Feb 2015 18:12:51 +0000 (10:12 -0800)] 
Windows: fix build errors after rev.13867

10 years agoSourceFormat Enforcement
Source Maintenance [Mon, 9 Feb 2015 18:12:05 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoSNI information is not set on transparent bumping mode
Christos Tsantilas [Mon, 9 Feb 2015 16:13:27 +0000 (18:13 +0200)] 
SNI information is not set on transparent bumping mode

Forward SNI (obtained from an intercepted client connection) to servers
when SslBump peeks or stares at the server certificate.

SslBump was not forwarding SNI to servers when Squid obtained SNI from an
intercepted client while peeking (or staring) at client Hello.

This is a Measurement Factory project

10 years agoMerge from trynk rev.13918
Amos Jeffries [Mon, 9 Feb 2015 13:56:23 +0000 (05:56 -0800)] 
Merge from trynk rev.13918

10 years agoBug 4176: Digest auth too many helper lookups
Amos Jeffries [Sun, 8 Feb 2015 11:40:30 +0000 (03:40 -0800)] 
Bug 4176: Digest auth too many helper lookups

10 years agoPolish SSL options squid.conf documentation
Amos Jeffries [Sun, 8 Feb 2015 11:14:30 +0000 (03:14 -0800)] 
Polish SSL options squid.conf documentation

10 years agoReview updates
Amos Jeffries [Sun, 8 Feb 2015 09:31:46 +0000 (01:31 -0800)] 
Review updates

10 years agoRevert rev.13916
Amos Jeffries [Sat, 7 Feb 2015 04:41:45 +0000 (20:41 -0800)] 
Revert rev.13916

10 years agoFix for Coverity Scan false positives in SBuf
Amos Jeffries [Fri, 6 Feb 2015 21:23:19 +0000 (13:23 -0800)] 
Fix for Coverity Scan false positives in SBuf

Coverity scanner gets badly confused with SBuf::npos being used as
default parameter value, even though its used to indicate that
strlen() needs to be used on the string.

This is an experiment to see if it gets less confused by having
explicit overloads for the two cases and not using SBuf::npos value
in relation to the unknown length c-strings.

10 years agoFix crash when parsing invalid squid.conf
Amos Jeffries [Fri, 6 Feb 2015 20:09:03 +0000 (12:09 -0800)] 
Fix crash when parsing invalid squid.conf

If a time value is going to overflow with default units the
critical debugs() can trigger a segfault instead of logging
and aborting Squid with self_destruct().

  Detected by Coverity Scan. Issue 1258698

10 years agoFix potential NULL dereference
Amos Jeffries [Fri, 6 Feb 2015 19:45:02 +0000 (11:45 -0800)] 
Fix potential NULL dereference

Logging can potentially happen when there is no client
request underway.

  Detected by Coverity Scan. Issue 434122

10 years agoRemoved default-length parameter from some SBuf functions
Francesco Chemolli [Fri, 6 Feb 2015 16:53:38 +0000 (17:53 +0100)] 
Removed default-length parameter from some SBuf functions

10 years agoFix not-fully-initialized data member in ACLUserData
Francesco Chemolli [Fri, 6 Feb 2015 15:11:45 +0000 (16:11 +0100)] 
Fix not-fully-initialized data member in ACLUserData

10 years agoAdd tolerance for whitespace within URI
Amos Jeffries [Fri, 6 Feb 2015 12:46:54 +0000 (04:46 -0800)] 
Add tolerance for whitespace within URI

RFC 7231 advises that there are still clients failing to properly encode
characters within URI. Tolerant parsers should accept that, and later
'reject' with a redirection to a properly encoded form of the URL.

10 years agoSourceFormat Enforcement
Source Maintenance [Fri, 6 Feb 2015 12:12:04 +0000 (12:12 +0000)] 
SourceFormat Enforcement

10 years agoAdd suffix operators to Tokenizer
Amos Jeffries [Fri, 6 Feb 2015 12:07:01 +0000 (04:07 -0800)] 
Add suffix operators to Tokenizer

In some situations we need to tokenize a fixed-length buffer in reverse.

10 years agonegotiate_kerberos_auth: fix krb5.conf backward compatibility
Markus Moeller [Fri, 6 Feb 2015 10:04:11 +0000 (02:04 -0800)] 
negotiate_kerberos_auth: fix krb5.conf backward compatibility

Older versions of the helper would use krb5.conf settings via the
library support. This was lot recently, now restored.

Also add some variable checks in the helper.

10 years agoTypo in rev.13909
Amos Jeffries [Thu, 5 Feb 2015 12:12:15 +0000 (04:12 -0800)] 
Typo in rev.13909

10 years agoCleanup: de-duplicate cbdata deallocate actions
Amos Jeffries [Thu, 5 Feb 2015 11:34:16 +0000 (03:34 -0800)] 
Cleanup: de-duplicate cbdata deallocate actions

10 years agoQuieten CBDATA 'leak' messages
Amos Jeffries [Thu, 5 Feb 2015 09:39:15 +0000 (01:39 -0800)] 
Quieten CBDATA 'leak' messages

The majority being reported were false-positive as
cbdataReferenceValidDone() clearing the valid flag before the lock.

10 years agoMerge from trunk rev.13907
Amos Jeffries [Wed, 4 Feb 2015 22:11:38 +0000 (14:11 -0800)] 
Merge from trunk rev.13907

10 years agoDrop unused cbdata.h definitions and re-document
Amos Jeffries [Wed, 4 Feb 2015 21:37:28 +0000 (13:37 -0800)] 
Drop unused cbdata.h definitions and re-document

Remove the now unused cbdataFree, cbdataAlloc, CBDATA_TYPE,
CBDATA_INIT_TYPE, CBDATA_INIT_TYPE_FREECB symbols.

Re-write CBDATA documentation to reflect the current available
API symbols, their usage, and mechanisms that should be used
instead of CBDATA such as AsyncJob/Call and RefCount.

Along with some doxygen polishing to meet currently agreed
style for how to document major code features.

Make generic_cbdata::data a private member. The constructor
and unwrap() operator provide all necessary public API.

Replace store_client.cc use of cbdataInternalLock/Unlock with
a CbcPointer<> smart pointer equivalent. The use remains an
abuse of CBDATA, just no longer directly referencing the
internal API functions.

10 years agoSourceFormat Enforcement
Source Maintenance [Wed, 4 Feb 2015 18:12:07 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoFix some cbdataFree related memory leaks
Amos Jeffries [Wed, 4 Feb 2015 17:38:27 +0000 (09:38 -0800)] 
Fix some cbdataFree related memory leaks

The delete operator should have been called for these objects after
previous code changes converted them to CBDATA_CLASS. As a result any
member objects relying on their destructor to cleanup were being leaked.

Also, make generic_cbdata::data a private member. The unwrap() method is
easily used now.

10 years agoCleanup: migrate external ACL classes to CBDATA_CLASS API
Amos Jeffries [Wed, 4 Feb 2015 16:45:30 +0000 (08:45 -0800)] 
Cleanup: migrate external ACL classes to CBDATA_CLASS API

10 years agoFix typo in rev.13902
Amos Jeffries [Wed, 4 Feb 2015 03:22:38 +0000 (19:22 -0800)] 
Fix typo in rev.13902

10 years agoCleanup: migrate DigestFetchState to CBDATA_CLASS API
Amos Jeffries [Wed, 4 Feb 2015 01:45:43 +0000 (17:45 -0800)] 
Cleanup: migrate DigestFetchState to CBDATA_CLASS API

10 years agoCleanup: migrate dns_internal objects to CBDATA_CLASS API
Amos Jeffries [Tue, 3 Feb 2015 21:24:30 +0000 (13:24 -0800)] 
Cleanup: migrate dns_internal objects to CBDATA_CLASS API

10 years agoCleanup: migrate ESI objects to CBDATA_CLASS API
Amos Jeffries [Tue, 3 Feb 2015 15:42:23 +0000 (07:42 -0800)] 
Cleanup: migrate ESI objects to CBDATA_CLASS API

Replace several objects use of CBDATA_TYPE to CBDATA_CLASS.

Change esiRemove from CBDATA to MEMPROXY_CLASS.

Remove dead code from earlier CBDATA updates.

10 years agoCleanup: migrate clientStreamNode to CBDATA_CLASS API
Amos Jeffries [Tue, 3 Feb 2015 11:50:49 +0000 (03:50 -0800)] 
Cleanup: migrate clientStreamNode to CBDATA_CLASS API

10 years agoCleanup: migrate netdbExchangeState to CBDATA_CLASS API
Amos Jeffries [Tue, 3 Feb 2015 11:21:26 +0000 (03:21 -0800)] 
Cleanup: migrate netdbExchangeState to CBDATA_CLASS API

Also fixes a compile error for pinger when --disable-inline is used.

10 years agoSourceFormat Enforcement
Source Maintenance [Tue, 3 Feb 2015 00:12:07 +0000 (00:12 +0000)] 
SourceFormat Enforcement

10 years agoCleanup: migrate AclSizeLimit to CBDATA_CLASS API
Amos Jeffries [Mon, 2 Feb 2015 20:02:55 +0000 (12:02 -0800)] 
Cleanup: migrate AclSizeLimit to CBDATA_CLASS API

10 years agoCleanup: migrate acl_tos and acl_nfmark to CBDATA_CLASS API
Amos Jeffries [Mon, 2 Feb 2015 18:51:25 +0000 (10:51 -0800)] 
Cleanup: migrate acl_tos and acl_nfmark to CBDATA_CLASS API

Also a little documentation and syntax polishing.

10 years agoSourceFormat Enforcement
Source Maintenance [Mon, 2 Feb 2015 18:12:05 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoCleanup: migrate AclAddress to CBDATA_CLASS API
Amos Jeffries [Mon, 2 Feb 2015 16:20:11 +0000 (08:20 -0800)] 
Cleanup: migrate AclAddress to CBDATA_CLASS API

Also, shuffle into the Acl:: namespace

10 years agoImplement forward and reverse input iterators for SBuf.
Francesco Chemolli [Mon, 2 Feb 2015 15:21:19 +0000 (16:21 +0100)] 
Implement forward and reverse input iterators for SBuf.

10 years agoCleaup: migrate Logfile to CBDATA_CLASS API
Amos Jeffries [Mon, 2 Feb 2015 13:10:38 +0000 (05:10 -0800)] 
Cleaup: migrate Logfile to CBDATA_CLASS API

10 years agoSourceFormat Enforcement
Source Maintenance [Mon, 2 Feb 2015 00:12:04 +0000 (00:12 +0000)] 
SourceFormat Enforcement

10 years agoCleanup: migrate CachePeer to CBDATA_CLASS API
Amos Jeffries [Sun, 1 Feb 2015 21:25:46 +0000 (13:25 -0800)] 
Cleanup: migrate CachePeer to CBDATA_CLASS API

Replace the alloc/free for CachePeer with new/delete from
the CBDATA_CLASS API.

Shuffle class member default values to constructor.

Shuffle class cleanup code from the (3!) different mechanisms
where it was being done to the class destructor. Also
releasing some memory which was previously leaked on
reconfigure.

Drop the now unused CBDUNL type definition and peerDestroy()
cleanup handler for CachePeer.

10 years agoAdded documentation for SBufIterator, fixed SBuf unit test, simplified SBufIterator
Francesco Chemolli [Sun, 1 Feb 2015 17:15:32 +0000 (18:15 +0100)] 
Added documentation for SBufIterator, fixed SBuf unit test, simplified SBufIterator

10 years agoBug 4172: Solaris broken krb5-config
Amos Jeffries [Sun, 1 Feb 2015 07:05:48 +0000 (23:05 -0800)] 
Bug 4172: Solaris broken krb5-config

10 years agoImplemented SBuf forward and reverse input iterators
Francesco Chemolli [Sat, 31 Jan 2015 19:41:00 +0000 (20:41 +0100)] 
Implemented SBuf forward and reverse input iterators

10 years agoPer-rule refresh_pattern matching statistics
Amos Jeffries [Sat, 31 Jan 2015 19:09:22 +0000 (08:09 +1300)] 
Per-rule refresh_pattern matching statistics

.. to make it blindingly obvious from the cachemgr report which rules
are completely useless. Such as when the global dot pattern (.) is
placed ahead of custom rules, or one rules pattern is always a subset
of an earlier pattern.

This also allows sysadmin to tune refresh_pattern ordering so most
commonly matching rules are first.

10 years agoSourceFormat Enforcement
Source Maintenance [Sat, 31 Jan 2015 18:12:07 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoDocs: removal of log_access and log_icap in 3.4
Amos Jeffries [Sat, 31 Jan 2015 16:34:08 +0000 (08:34 -0800)] 
Docs: removal of log_access and log_icap in 3.4

10 years agoStop emitting (Proxy-)Authentication-Info for Negotiate
Amos Jeffries [Sat, 31 Jan 2015 14:10:25 +0000 (06:10 -0800)] 
Stop emitting (Proxy-)Authentication-Info for Negotiate

This header is not defined for use by RFC 4559, and there seem to
be no clients actually using it.

The syntax Squid was using to emit the details was also clashing
with the syntax defined for use in Digest which is becoming the
standardized ABNF syntax for the header in general.

10 years agoCleanup: remove strtokFile() wrapper function
Amos Jeffries [Thu, 29 Jan 2015 19:05:24 +0000 (11:05 -0800)] 
Cleanup: remove strtokFile() wrapper function

This global function was a wrapper around ConfigParser::strtokFile()
which did nothing but cause additional dependency on cache_cf.h and
cache_cf.cc.

10 years agoSourceFormat Enforcement
Source Maintenance [Thu, 29 Jan 2015 18:12:06 +0000 (18:12 +0000)] 
SourceFormat Enforcement

10 years agoSourceLayout: shuffle DNS primitives to dns/libdns.la
Amos Jeffries [Thu, 29 Jan 2015 16:09:11 +0000 (08:09 -0800)] 
SourceLayout: shuffle DNS primitives to dns/libdns.la

* create dns/libdns.la with namespace Dns::

* move the RFC specific base functions performing DNS actions
  into libdns.

* move the SquidDns.h definitions to dns/forward.h
  - rename dns*() functions to Dns:: namespace

* move DnsLookupDetails to Dns:: namespace
  - move class files to libdns.

There are no logic changes in this patch.

10 years agoFix rev.13879
Amos Jeffries [Sun, 25 Jan 2015 07:25:48 +0000 (23:25 -0800)] 
Fix rev.13879

10 years agoOlder Clang versions do not seem to offer full C++11 std::splice API
Amos Jeffries [Sun, 25 Jan 2015 04:53:40 +0000 (20:53 -0800)] 
Older Clang versions do not seem to offer full C++11 std::splice API