]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
11 years agoFix first-line debug display after dropping parsedCount_
Amos Jeffries [Tue, 20 May 2014 11:07:44 +0000 (04:07 -0700)] 
Fix first-line debug display after dropping parsedCount_

11 years agoCleanup: drop parsedCount_ tracking
Amos Jeffries [Tue, 20 May 2014 11:00:04 +0000 (04:00 -0700)] 
Cleanup: drop parsedCount_ tracking

Now that parse() is receiving a buffer directly we no longer have to
track how many bytes have been consumed by the parse. It can be
calculated by comparing the current and original SBuf.

11 years agoCleanup some typos
Amos Jeffries [Tue, 20 May 2014 10:46:54 +0000 (03:46 -0700)] 
Cleanup some typos

11 years agoPolish: class file shuffling for guidelines
Amos Jeffries [Tue, 20 May 2014 10:21:14 +0000 (03:21 -0700)] 
Polish: class file shuffling for guidelines

11 years agoSimplify Http1::Parser API and buffer management
Amos Jeffries [Tue, 20 May 2014 07:20:38 +0000 (00:20 -0700)] 
Simplify Http1::Parser API and buffer management

11 years agoCleanup debug output
Amos Jeffries [Tue, 20 May 2014 03:45:00 +0000 (20:45 -0700)] 
Cleanup debug output

* fix debug display of sections parsed, hiding followup bytes in buffer.

* removes several duplicate dumps of message bytes.

* add mimeHeader() accessor to reduce c_str() usage when accessing mime
  header content.

11 years agoPolish SBuf API use in prepareTransparentURL()
Amos Jeffries [Tue, 20 May 2014 03:08:51 +0000 (20:08 -0700)] 
Polish SBuf API use in prepareTransparentURL()

11 years agoHTTP/1 message with no mime headers is valid
Amos Jeffries [Sun, 18 May 2014 14:01:48 +0000 (07:01 -0700)] 
HTTP/1 message with no mime headers is valid

11 years agoFix infinite parse loop on partial request reads
Amos Jeffries [Sun, 18 May 2014 10:36:05 +0000 (03:36 -0700)] 
Fix infinite parse loop on partial request reads

parseHttpRequest() returns NULL on incomplete parse. This case was not
exiting the loop to parse multiple requests. As a result traffic would
only receive a response if the request headers were received entirely
within one read(2) event. Pipelined requests received over multiple hung.

11 years agoMerge from trunk r13414
Amos Jeffries [Sat, 17 May 2014 05:49:04 +0000 (22:49 -0700)] 
Merge from trunk r13414

11 years agoFix outstanding build issues and parser audit results
Amos Jeffries [Thu, 15 May 2014 10:44:05 +0000 (03:44 -0700)] 
Fix outstanding build issues and parser audit results

* Give SBuf I/O buffer directly to Http1::RequestParser

* Redesign parser state engine to represent the current state
  being parsed instead of previous completed. This allows much
  more incremental resume of a parse and reliable consume() of
  the input buffer as sections complete instead of complex byte
  accounting outide the parser.

* Maintain an internal counter of bytes parsed and consumed by
  the parser instead of a buffer offset. This allows much more
  reliable positioning of the state/section boundaries.

* Remove erroneous fprintf debug left in previous commit.

* Redesign HttpRequestMethod constructor to drop end parameter.

* Redesign all parser unit tests. Marking RFC non-compliance
  for future fixing.

11 years agoBug 4050: Segfault in CommSelectEngine::checkEvents on helper response
Alex Rousskov [Thu, 15 May 2014 07:32:10 +0000 (00:32 -0700)] 
Bug 4050: Segfault in CommSelectEngine::checkEvents on helper response

11 years agoRegression: segfault logging with %tg format specifier
Steve Hill [Tue, 13 May 2014 10:27:18 +0000 (03:27 -0700)] 
Regression: segfault logging with %tg format specifier

In trunk rev.13387 Token class data member was converted from union to
struct without adding initializer for the timespec field.

timespec is a redundant field anyway, just remove it.

11 years agoMerged ext_delayer_acl
Francesco Chemolli [Mon, 12 May 2014 16:35:23 +0000 (18:35 +0200)] 
Merged ext_delayer_acl

11 years agoRenamed delayer helper for subst_perlshell compatibility
Francesco Chemolli [Mon, 12 May 2014 16:22:30 +0000 (18:22 +0200)] 
Renamed delayer helper for subst_perlshell compatibility

11 years agoMerged from trunk
Francesco Chemolli [Mon, 12 May 2014 16:06:11 +0000 (18:06 +0200)] 
Merged from trunk

11 years agoReverted r13409 due to incompatibility with BSD pmake
Francesco Chemolli [Mon, 12 May 2014 16:02:58 +0000 (18:02 +0200)] 
Reverted r13409 due to incompatibility with BSD pmake

11 years agoBug 2554: 32-bit wrap in AUFS counters
Amos Jeffries [Mon, 12 May 2014 12:49:12 +0000 (05:49 -0700)] 
Bug 2554: 32-bit wrap in AUFS counters

11 years agoMerged from trunk
Francesco Chemolli [Mon, 12 May 2014 09:43:32 +0000 (11:43 +0200)] 
Merged from trunk

11 years agoRenamed installed script to ext_delayer_acl
Francesco Chemolli [Mon, 12 May 2014 09:43:23 +0000 (11:43 +0200)] 
Renamed installed script to ext_delayer_acl

11 years agoChanged subst_perlshell Makefile recipe to use the actual source file name
Francesco Chemolli [Mon, 12 May 2014 09:42:30 +0000 (11:42 +0200)] 
Changed subst_perlshell Makefile recipe to use the actual source file name

11 years agoIntegrate delayer helper with build system
Francesco Chemolli [Sun, 11 May 2014 19:12:35 +0000 (21:12 +0200)] 
Integrate delayer helper with build system

11 years agoCheck for PURGE method using method enum instead of strcmp()
Amos Jeffries [Fri, 9 May 2014 17:32:25 +0000 (10:32 -0700)] 
Check for PURGE method using method enum instead of strcmp()

Removes one minor but needless drag on startup and reconfigure speed.

11 years agoauthor: Alex Rousskov <rousskov@measurement-factory.com>
Christos Tsantilas [Fri, 9 May 2014 15:19:40 +0000 (18:19 +0300)] 
author: Alex Rousskov <rousskov@measurement-factory.com>
Avoid on-exit crashes when adaptation is enabled.

After trunk r13269 (Vector refactor) destroyed vector objects still have
positive item counts. This exposes use-after-delete bugs. In this particular
case, global adaptation rule/group/service arrays are destructed by global
destruction sequence first and then again by Adaptation::*::TheConfig objects
destructors.

This change avoiding static destruction order dependencies by storing those
global adaptation arrays on heap.

11 years agoTemporary fix for segmentation faults in FwdState::serverClosed debugging.
Alex Rousskov [Fri, 9 May 2014 04:45:54 +0000 (22:45 -0600)] 
Temporary fix for segmentation faults in FwdState::serverClosed debugging.

See r13404 for details.

11 years agoSourceFormat Enforcement
Automatic source maintenance [Fri, 9 May 2014 00:14:30 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agoTemporary fix for segmentation faults in FwdState::serverClosed.
Alex Rousskov [Thu, 8 May 2014 22:43:01 +0000 (16:43 -0600)] 
Temporary fix for segmentation faults in FwdState::serverClosed.

r13388 (cache_peer standby=N) moved noteUses() call from Comm to FwdState, to
avoid exposing Comm to pconn pools. Unfortunately, the closing handler does
not get a valid FD value when the closing callback shares the Connection
object with the code that called conn->close(). It gets -1. The FD of the
FwdState connection itself is already -1 at that point, for similar reasons.
The code thinks it got a matching FD and calls noteUses() with an invalid FD.

This temporary workaround prevents noteUses() calls when FD is unknown.
Without those calls, pconn usage statistics will be wrong. A different
long-term solution is needed.

11 years agoAllow test suite to override make program via MAKE environment variable
Francesco Chemolli [Thu, 8 May 2014 13:28:08 +0000 (15:28 +0200)] 
Allow test suite to override make program via MAKE environment variable

11 years agoBug 4059: Support redirectors and logging using Squid-2 urlgroup feature
Timo Tseras [Thu, 8 May 2014 10:17:41 +0000 (03:17 -0700)] 
Bug 4059: Support redirectors and logging using Squid-2 urlgroup feature

11 years agoSourceFormat Enforcement
Automatic source maintenance [Wed, 7 May 2014 14:40:05 +0000 (08:40 -0600)] 
SourceFormat Enforcement

11 years agoRelease Notes 3.5: updated helper concurrency status
Amos Jeffries [Wed, 7 May 2014 10:10:42 +0000 (03:10 -0700)] 
Release Notes 3.5: updated helper concurrency status

11 years agoCleanup: Refactor external_acl_type format codes representation
Amos Jeffries [Wed, 7 May 2014 10:05:58 +0000 (03:05 -0700)] 
Cleanup: Refactor external_acl_type format codes representation

Removes enum_external_acl_format::format_type from external_acl.cc
by replacing it with enum Format::ByteCode_t.

Several missing logformat codes related to URL display have been added
to the logformat token set for general use.

Several of the external ACL format codes have been added to
Format::ByteCode_t without equivalent logformat TokenTableEntry's at
this stage as both desirable token naming and access to the data to
produce them generically is unclear.

The external_acl_type parser is updated to accept logformat tokens
wherever an equivalent exists and map directly to the ByteCode_t values.

The mgr:config report dumper is also updated to output the logformat
tokens. But as yet the official deprecation has not been done in
squid.conf.

11 years agoMerge fron trunk rev.13398
Amos Jeffries [Tue, 6 May 2014 17:06:24 +0000 (10:06 -0700)] 
Merge fron trunk rev.13398

11 years agoFix build errors after trunk merge
Amos Jeffries [Tue, 6 May 2014 15:30:17 +0000 (08:30 -0700)] 
Fix build errors after trunk merge

11 years agourl_fake_rewrite: concurrency channel support
Amos Jeffries [Mon, 5 May 2014 11:56:25 +0000 (04:56 -0700)] 
url_fake_rewrite: concurrency channel support

11 years agoSupport concurrency channels in Digest authentication helpers
Amos Jeffries [Mon, 5 May 2014 08:35:47 +0000 (01:35 -0700)] 
Support concurrency channels in Digest authentication helpers

All bundled digest helpers will now automatically detect the existence
of a concurrecy channel-ID and adjust responses appropriately.

The auth_param children concurrency= parameter can now be set to any
valid value without needing to alter the helper binary. This resolves
issues upgrading to default-on concurrency on the digest auth interface.

11 years agostoreid_file_rewrite: document concurrency handling
Amos Jeffries [Mon, 5 May 2014 06:50:51 +0000 (23:50 -0700)] 
storeid_file_rewrite: document concurrency handling

11 years agoRelease Notes 3.5
Amos Jeffries [Sun, 4 May 2014 15:34:46 +0000 (08:34 -0700)] 
Release Notes 3.5

11 years agoRelease Notes for Squid-3.5
Amos Jeffries [Sat, 3 May 2014 18:22:14 +0000 (12:22 -0600)] 
Release Notes for Squid-3.5

11 years agoFix eCAP to build after patch r13384
Christos Tsantilas [Sat, 3 May 2014 10:53:56 +0000 (13:53 +0300)] 
Fix eCAP to build after patch r13384

The HttpMsg::protocol removed with "Bug 1961: pt1: URL handling redesign" patch,
and as a result the eCAP squid subsystem does not build because used this memberto implement libecap::RequestLine and libecap::StatusLine classes.
The HttpMsg::protocol used to hold the protocol part of the request URI.
However the libecap::FirstLine::protocol() is meant for things like
 * the HTTP-Version part of HTTP messages (in RFC 2616 terminology) or
 * the ICAP-Version part of ICAP messages (in RFC 3507 terminology).
It is not related to the URI.

This patch fix this and now libecap::RequestLine and libecap::StatusLine
implemented to return the protocol information from request or status line
of headers.

11 years agoFix generated HTTP message version labels
Amos Jeffries [Sat, 3 May 2014 10:35:31 +0000 (03:35 -0700)] 
Fix generated HTTP message version labels

Squid being conditionally compliant with RFC 2616 should be handling
HTTP/1.1 at all times unless another version was explicitly received.

This makes the default version number for all generated messages be 1.1
unless the alternative constructor is used or the numeric members are
explicitly set to other values. As a result all Squid generated messages
are labelled correctly as 1.1 by default now.

Fixes message version details sent to ICAP/eCAP on many error or
internally generated responses.

11 years agoCopyright: update CONTRIBUTORS from changeset records
Amos Jeffries [Fri, 2 May 2014 10:29:08 +0000 (03:29 -0700)] 
Copyright: update CONTRIBUTORS from changeset records

11 years agoPrep for 3.4.5
Amos Jeffries [Fri, 2 May 2014 09:32:59 +0000 (02:32 -0700)] 
Prep for 3.4.5

11 years agoSsl::PeerConnector class part 2
Christos Tsantilas [Wed, 30 Apr 2014 13:41:39 +0000 (16:41 +0300)] 
Ssl::PeerConnector class part 2

Move "operator <<(std::ostream &, const Ssl::PeerConnectorAnswer&)" under the
Ssl namespace to make clang compiler happy.

11 years agoMerge from trunk
Amos Jeffries [Wed, 30 Apr 2014 11:09:38 +0000 (04:09 -0700)] 
Merge from trunk

11 years agoauthor: Alex Rousskov <rousskov@measurement-factory.com>
Christos Tsantilas [Wed, 30 Apr 2014 10:50:09 +0000 (13:50 +0300)] 
author: Alex Rousskov <rousskov@measurement-factory.com>
cache_peer standby=N implementation.

The feature focus is to instantly provide a ready-to-use connection to a
cooperating cache peer, virtually at all times. This is useful when connection
establishment is "too slow" and/or when infrequent peer use prevents Squid from
combating slow connection establishment with the regular idle connection pool.

The feature is similar to Squid2 idle=N feature, but there are key differences:

* Standby connections are available virtually at all times, while Squid2 unused
  "idle" connections are available only for a short time after a peer request.

* All N standby connections are not opened at once, reducing the chance of
  the feature being mistaken for a DoS attack on a peer.

* More consistent support for peers with multiple IP addresses (peer IPs are
  cycled through, just like during regular Squid request forwarding).

Besides, "idle" is a poor choice of adjective for an unused connection pool
name because the same term is used for used persistent connections, which have
somewhat different properties, are stored in a different pool, may need
distinct set of tuning options, etc. It is better to use a dedicated term for
the new feature.

The relationship between the max-conn limit and standby/idle connections is a
complex one. After several rewrites and tests, Squid now obeys max-conn limit
when opening new standby connections and accounts for standby connections when
checking whether to allow peer use. This often works OK, but leads to standby
guarantee violations when non-standby connections approach the limit. The
alternative design where standby code ignores max-conn works better, but is
really difficult to explain and advocate because an admin expects max-conn to
cover all connections and because of the idle connections accounting and
maintenance bugs. We may come back to this when the idle connections code is
fixed.

Fixed max-conn documentation and XXXed a peerHTTPOkay() bug (now in
peerHasConnAvailable()) that results in max-conn limit preventing the use of a
peer with idle persistent connections.

Decided to use standby connections for non-retriable requests. Avoiding
standby connections for POSTs and such would violate the main purpose of the
feature: providing an instant ready-to-use connection. A user does not care
whether it is waiting too long for a GET or POST request. Actually, a user may
care more when their POST requests are delayed (because canceling and
retrying them is often scary from the user point of view). The idea behind
standby connections is that the admin is responsible for avoiding race
conditions by properly configuring the peering Squids. If such proper
configuration is not possible or the consequences of rare races (e.g., due to
peer shutdown) are more severe than the consequences of slow requests, the
admin should not use standby=N. This choice may become configurable in the
future.

TODO: Teach peer probing code to push successful probing connections into the
standby pool (when enabled). Should be done as a followup project because of
the differences in standby and probe connection opening code, especially when
SSL peers are supported. Will require some discussion.

A standby pool is using a full-blown PconnPool object for storage instead of
the smaller IdleConnList, like the ICAP code does. The primary reasons for
this design were:

* A peer may have multiple addresses and those addresses may change. PconnPool
has code to deal with multiple addresses while IdleConnList does not. I do not
think this difference is really used in this implementation, but I did not
want to face an unknown limitation. Note that ICAP does not support multiple
ICAP server addresses.

* PconnPool has reporting (and cache manager integration) code that we should
eventually improve and report standby-specific stats. When this happens,
PconnPool will probably become abstract and spawn two kids, one for pconn and
one for standby pools.

Seemingly unrelated changes triggered by standby=N addition:

* Removed PconnPool from fde.h. We used to create immortal PconnPool objects.
Now, standby pools are destroyed when their peer is destroyed. Sharing raw
pointers to such pools is too dangerous. We could use smart pointers, but
PconnPools do not really belong to such a low-level object like fde IMO.

* Added FwdState::closeServerConnection() to encapsulate server connection
closing code, including the new noteUses() maintenance. Also updated
FwdState::serverClosed() to do the same maintenance.

* Close all connections in IdleConnList upon deletion. The old code did
not care because we never deleted PconnPools (although I am not sure
there were no bugs related to ICAP service pools which use IdleConnList
directly and do get destroyed).

* Fixed PconnPool::dumpHash(). It was listing the first entry twice because
the code misused misnamed hash_next().

* Removed unnecessary hard-coded limit on the number of PconnPools. Use
std::set for their storage.

* Fixed very stale PconnPool::pop() documentation and polished its code.

* Added RegisteredRunner::sync() method to use during Squid reconfiguration:

The existing run() method and destructor are great for the initial
configuration and final shutdown, but do not work well for reconfiguration
when you do not want to completely destroy and then recreate the state.
The sync() method (called via SyncRegistered) can be used for that.

Eventually, the reconfiguration API should present the old "saved" config
and the new "current" config to RegisteredRunners so that they can update
their modules/features intelligently. For now, they just see the new config.

This is a Measurement Factory project

11 years agoLogformat annotation fixes
Christos Tsantilas [Wed, 30 Apr 2014 09:41:25 +0000 (12:41 +0300)] 
Logformat annotation fixes

Currently note values printed with "%note" formating code, which contain non
alphanumeric characters, were quoted and quotes were then escaped, resulting
in bizarre logged rendition of empty or simple values (often received from
various helpers):
      %22-%22
      %22Default_Google%22
      %22pg13,US%22

This patch:
- does not use quotes to print annotations

- allow system admin to define a separator to use for logged
  annotations. The %note logformat accepts the following argument:
     [name][:separator]
  The separator can be one of the ',' ';' or ':'.
  By default, multiple note values are separated with "," and multiple
  notes are separated with "\r\n". When logging named notes with
  %{name}note, the explicitly configured separator is used between note
  values. When logging all notes with %note, the explicitly configured
  separator is used between individual notes. There is currently no way to
  specify both value and notes separators when logging all notes with %note.

- makes the Format::Token::data a struct (now is a union) and initialize
  Format::Token::data data members in Format::Token::Token constructor.

This is a Measurement Factory project

11 years agoResolve 'dying from an unhandled exception: c'
Amos Jeffries [Tue, 29 Apr 2014 19:37:03 +0000 (12:37 -0700)] 
Resolve 'dying from an unhandled exception: c'

CbcPointer<> is used from code outside of Job protection where it is
safe to use Must(). In order to get a useful backtrace we need to assert
immediately at the point of failure. Particularly necessary since these
are in generic operators used "everywhere" in the code.

11 years agoFix order dependency between cache_dir and maximum_object_size
Anatoli [Tue, 29 Apr 2014 18:08:35 +0000 (06:08 +1200)] 
Fix order dependency between cache_dir and maximum_object_size

parse_cachedir() has a call to update_maxobjsize() which limits the
store_maxobjsize variable used as the internal maximum_object_size
variable of the store data structure) to the value of maximum_object_size
defined at the moment of execution of this function, for all stores (all
store directories). So if parse for cache_dir is called before
maximum_object_size, we get the effect of the default 4 MB.

BUT, when we get to parse maximum_object_size line(s) after the last
cache_dir, the maximum_object_size option is processed and only shown on
the cachemgr config page without having updated store_maxobjsize.

11 years agoBug 1961: pt1: URL handling redesign
Amos Jeffries [Sun, 27 Apr 2014 07:59:17 +0000 (00:59 -0700)] 
Bug 1961: pt1: URL handling redesign

Replace the HttpMsg::protocol member (only used by HttpRequest) with a
class URL member HttpRequest::url. To do this we adjust the class URL
scheme_ member to be mutable via the makeScheme() setter, and add a
clear() method to reset its internal state. These are necessary for
HttpRequest init() and initHTTP() mechanisms, but fiddling with the
scheme should be avoided as much as possible.

Remove the hack of forcing internal requests to http:// for processing
and cache lookup, then to internal:// for FwdState. Instead use the
available flags.internal for requests identified to be served by this proxy.

Drop the non-standard and now meaningless "internal://" scheme.

Add debugging to display what internal indicators are detected and when
the internal*() server and CacheManager are used by FwdState.

Also document HttpMsg::http_ver which is a copy of the HTTP-Version
field in the "on-wire" message syntax. It is unrelated to the socket
transport protocol and the URL scheme protocol.

11 years agoCrypto-NG: require GnuTLS to have version 3.1.5 or later
Amos Jeffries [Fri, 25 Apr 2014 15:14:14 +0000 (09:14 -0600)] 
Crypto-NG: require GnuTLS to have version 3.1.5 or later

11 years agoauthor: Alex Rousskov <rousskov@measurement-factory.com>, Christos Tsantilas <chtsant...
Christos Tsantilas [Fri, 25 Apr 2014 13:38:22 +0000 (16:38 +0300)] 
author: Alex Rousskov <rousskov@measurement-factory.com>, Christos Tsantilas <chtsanti@users.sourceforge.net>
Ssl::PeerConnector class

This patch investigates the new Ssl::PeerConnector class. This class connects
Squid client-side to a SSL cache_peer or SSL server. It is used by
TunnelStateData and FwdState to initiate and establish the SSL connection.
This class handles peer certificate validation.

The caller receives a call back with PeerConnectorAnswer. In the SSL connection
is not established because of an error, an error object suitable for error
response generation is attached to PeerConnectorAnser

The Ssl::PeerConnector class includes the old SSL initialization code from
FwdState class.

This is a Measurement Factory project

11 years agoFix ecap build,it is broken after 13369 patch.
Christos Tsantilas [Fri, 25 Apr 2014 13:37:10 +0000 (16:37 +0300)] 
Fix ecap build,it is broken after 13369 patch.

11 years agoFix bugs in rev.13379
Amos Jeffries [Fri, 25 Apr 2014 10:47:59 +0000 (03:47 -0700)] 
Fix bugs in rev.13379

11 years agoSBuf: convert CARP key from SquidString
Amos Jeffries [Wed, 23 Apr 2014 18:39:04 +0000 (11:39 -0700)] 
SBuf: convert CARP key from SquidString

11 years agoFix cut-n-paste issue in rev.13377
Amos Jeffries [Wed, 23 Apr 2014 15:36:13 +0000 (08:36 -0700)] 
Fix cut-n-paste issue in rev.13377

11 years agoPolish: update urlCanonical to switch instead of if-else
Amos Jeffries [Wed, 23 Apr 2014 14:28:04 +0000 (07:28 -0700)] 
Polish: update urlCanonical to switch instead of if-else

This paves the way fro adding other method dependent canonical URI.
Such as the * URI for TRACE and OPTIONS

11 years agoPrep for 3.4.4.2
Amos Jeffries [Wed, 23 Apr 2014 13:52:13 +0000 (06:52 -0700)] 
Prep for 3.4.4.2

11 years agoPrep for 3.4.4.1
Amos Jeffries [Wed, 23 Apr 2014 12:02:51 +0000 (05:02 -0700)] 
Prep for 3.4.4.1

11 years agoFix typo in documentation of rev.13372
Amos Jeffries [Wed, 23 Apr 2014 05:20:03 +0000 (23:20 -0600)] 
Fix typo in documentation of rev.13372

11 years agoPolish rev.13370
Amos Jeffries [Tue, 22 Apr 2014 16:01:23 +0000 (09:01 -0700)] 
Polish rev.13370

11 years agoBug 3371: CONNECT with data sent at once loses data
Amos Jeffries [Tue, 22 Apr 2014 12:51:21 +0000 (05:51 -0700)] 
Bug 3371: CONNECT with data sent at once loses data

11 years agoFix high_memory_warning parsing
Amos Jeffries [Tue, 22 Apr 2014 05:02:28 +0000 (22:02 -0700)] 
Fix high_memory_warning parsing

The squid.conf parser does not accept whitespace in the IFDEF: parameter
values. This was hiding parse issues when high_memory_warning was used
without gnumalloc.h availability.

Also, sort the cf_gen_defines array alphabetically by IFDEF: value for
easier maintenance.

11 years agoDocs: mention byte units and maximum_object_size/cache_dir relationship
Amos Jeffries [Tue, 22 Apr 2014 04:30:59 +0000 (21:30 -0700)] 
Docs: mention byte units and maximum_object_size/cache_dir relationship

* we are having users configure rounded n MB or n GB values as KB numbers
  unnecessarily from misunderstanding the unit measures. Document which
  units Squid understands to assist simplifying these configs.

* the maximum_object_size directive has been a "toggle" default for
  cache_dir max-size for some time but the dependency of having it
  placed before cache_dir it is supposed to affect has not been
  documented. Add the documentation, and re-order the default config
  directive positions.

11 years agoSBuf: convert HttpMethod internals
Amos Jeffries [Tue, 22 Apr 2014 02:47:09 +0000 (19:47 -0700)] 
SBuf: convert HttpMethod internals

Update the internal string/image representation of an HTTP
method to be an SBuf string. Including the global registered
methods index.

Also,
 * remove RequestMethodStr() wrapper functions
 * remove remainders of obsolete extension_methods feature
 * remove remainders of obsolete RequestMethodStr[] array
 * fix potential cache key error from http/MethodType.h
   enum ordering.
 * polished many debugs involving method

11 years agoSBuf: add methods for comparision directly against a C-string
Amos Jeffries [Mon, 21 Apr 2014 17:14:44 +0000 (10:14 -0700)] 
SBuf: add methods for comparision directly against a C-string

Based on GNU strncasecmp() logics.

Also,
 * improve const-correctness on all SBuf comparision methods
 * add unit tests for the new API methods.

11 years agoTypo in rev.13366
Amos Jeffries [Mon, 21 Apr 2014 15:07:31 +0000 (09:07 -0600)] 
Typo in rev.13366

11 years agoFix outgoing peer type when using ORIGINAL_DST instead of DIRECT
Amos Jeffries [Mon, 21 Apr 2014 12:40:32 +0000 (06:40 -0600)] 
Fix outgoing peer type when using ORIGINAL_DST instead of DIRECT

11 years agoAdd missing piece of Makefile in rev.13364
Amos Jeffries [Mon, 21 Apr 2014 08:27:21 +0000 (01:27 -0700)] 
Add missing piece of Makefile in rev.13364

11 years agoBug 4047: Support Android builds
Amos Jeffries [Mon, 21 Apr 2014 08:23:37 +0000 (01:23 -0700)] 
Bug 4047: Support Android builds

11 years agoTrigger finishShutdown runners event before pooled memory is released
Amos Jeffries [Mon, 21 Apr 2014 05:13:31 +0000 (22:13 -0700)] 
Trigger finishShutdown runners event before pooled memory is released

This allows runner destructors to operate their cleanup even if the
component memory they are cleaning up is pooled.

11 years agosquidclient: rename --tls to --https
Amos Jeffries [Sat, 19 Apr 2014 12:12:06 +0000 (00:12 +1200)] 
squidclient: rename --tls to --https

11 years agoAdd missing include in rev.13360 on CentOS
Amos Jeffries [Fri, 18 Apr 2014 18:15:35 +0000 (11:15 -0700)] 
Add missing include in rev.13360 on CentOS

11 years agosquidclient: Support TLS for testing https:// URLs and HTTPS servers
Amos Jeffries [Fri, 18 Apr 2014 15:47:24 +0000 (08:47 -0700)] 
squidclient: Support TLS for testing https:// URLs and HTTPS servers

Also adds detection of the GnuTLS library which is used to provide this
squidclient feature.

11 years agoFixed PortCfg.transport setting broken in r12961
Alex Rousskov [Wed, 16 Apr 2014 21:58:08 +0000 (15:58 -0600)] 
Fixed PortCfg.transport setting broken in r12961
"Update the http(s)_port directives protocol= parameter"

The port protocol became PROTO_HTTP regardless of the protocol name passed
by the caller. The other allowed value (PROTO_HTTPS) could not be set.

11 years agoFixed syntax error in r13155 "Support libecap v1.0".
Alex Rousskov [Wed, 16 Apr 2014 21:22:12 +0000 (15:22 -0600)] 
Fixed syntax error in r13155 "Support libecap v1.0".

No idea why only some compilers detect this error.

11 years agoEncapsulated commonly reused ToS and NfMark code into GetMarkingsToServer(), par
Christos Tsantilas [Wed, 16 Apr 2014 17:40:17 +0000 (20:40 +0300)] 
Encapsulated commonly reused ToS and NfMark code into GetMarkingsToServer(), par
t2

Use the FwdState.h include file instead of redefining  GetTosToServer and GetNfmarkToServer to each .cc file they are used.

11 years agoauthor: Alex Rousskov <rousskov@measurement-factory.com>
Christos Tsantilas [Mon, 14 Apr 2014 17:01:18 +0000 (20:01 +0300)] 
author: Alex Rousskov <rousskov@measurement-factory.com>
Encapsulated commonly reused ToS and NfMark code into GetMarkingsToServer()

11 years agoMade storeid_file_rewrite support concurrency protocol
Francesco Chemolli [Mon, 14 Apr 2014 13:50:27 +0000 (15:50 +0200)] 
Made storeid_file_rewrite support concurrency protocol

11 years agoBug 3955: Solaris EUI-48 lookup leaks FDs
Paul Z [Mon, 14 Apr 2014 06:57:22 +0000 (18:57 +1200)] 
Bug 3955: Solaris EUI-48 lookup leaks FDs

11 years agoBug 3982: EUI logging and helpers show blank MAC address
Amos Jeffries [Mon, 14 Apr 2014 06:50:31 +0000 (18:50 +1200)] 
Bug 3982: EUI logging and helpers show blank MAC address

Also,
 * improved debugging of EUI processing.
 * fixed code correctness in EUI class definitions

11 years agoFix IPv6 site-local autoconfigured Address detection
Amos Jeffries [Mon, 14 Apr 2014 05:13:28 +0000 (17:13 +1200)] 
Fix IPv6 site-local autoconfigured Address detection

11 years agoFix c++11-ism in list splicing
Francesco Chemolli [Sat, 12 Apr 2014 19:17:13 +0000 (21:17 +0200)] 
Fix c++11-ism in list splicing

11 years agoFix c++11-ism in list splicing
Francesco Chemolli [Sat, 12 Apr 2014 19:16:46 +0000 (21:16 +0200)] 
Fix c++11-ism in list splicing

11 years agoMerged from trunk
Francesco Chemolli [Sat, 12 Apr 2014 17:44:36 +0000 (19:44 +0200)] 
Merged from trunk

11 years agoUse SBufList instead of wordlist to collect data for mgr:config
Francesco Chemolli [Sat, 12 Apr 2014 17:43:37 +0000 (19:43 +0200)] 
Use SBufList instead of wordlist to collect data for mgr:config

11 years agoReport MemBlob capacity and not size in destruct-time histogram
Francesco Chemolli [Sat, 12 Apr 2014 17:43:07 +0000 (19:43 +0200)] 
Report MemBlob capacity and not size in destruct-time histogram

11 years agoConvert to SBufList some missing acl dump methods
Francesco Chemolli [Sat, 12 Apr 2014 17:32:34 +0000 (19:32 +0200)] 
Convert to SBufList some missing acl dump methods

11 years agoFix broken acl_access dumper
Francesco Chemolli [Sat, 12 Apr 2014 14:50:51 +0000 (16:50 +0200)] 
Fix broken acl_access dumper

11 years agomarked several dump functions as const
Francesco Chemolli [Sat, 12 Apr 2014 13:29:42 +0000 (15:29 +0200)] 
marked several dump functions as const

11 years agoMore conversions; now builds
Francesco Chemolli [Sat, 12 Apr 2014 09:11:20 +0000 (11:11 +0200)] 
More conversions; now builds

11 years agoFormatting fixes, const-ified a SBuf
Francesco Chemolli [Sat, 12 Apr 2014 07:17:08 +0000 (09:17 +0200)] 
Formatting fixes, const-ified a SBuf

11 years agoInterim. Remove useless wordlist.h and SBufList.h includes, more SBufList conversions
Francesco Chemolli [Sat, 12 Apr 2014 07:10:39 +0000 (09:10 +0200)] 
Interim. Remove useless wordlist.h and SBufList.h includes, more SBufList conversions

11 years agoInterim. Refactor ACL::dump to SBufList instead of wordlist*
Francesco Chemolli [Fri, 11 Apr 2014 16:00:36 +0000 (18:00 +0200)] 
Interim. Refactor ACL::dump to SBufList instead of wordlist*

11 years agoImplement custom formatting for SBuf size distribution cachemgr report
Francesco Chemolli [Thu, 10 Apr 2014 08:02:55 +0000 (10:02 +0200)] 
Implement custom formatting for SBuf size distribution cachemgr report

11 years agoFix typo in getpwname detection
Amos Jeffries [Wed, 9 Apr 2014 02:24:52 +0000 (14:24 +1200)] 
Fix typo in getpwname detection

11 years agoMemBuf fix: empty MemBufs are not NULL terminated
Christos Tsantilas [Tue, 8 Apr 2014 16:23:46 +0000 (19:23 +0300)] 
MemBuf fix: empty MemBufs are not NULL terminated

This is may cause problems in some cases where the code assume that the MemBuf
is always NULL terminated. For example when an ErrorState object try to use
an empty errorpage template.

This patch terminates the (empty) MemBuf on MemBuf::init method.

11 years agoCleanup: Polish Windows automake conditionals
Amos Jeffries [Tue, 8 Apr 2014 15:52:58 +0000 (03:52 +1200)] 
Cleanup: Polish Windows automake conditionals

Squid coding guidelines are that AM_CONDITIONAL definitions are named
ENABLE_*.

11 years agoCleanup: Make crypt(3) detection dependent on the helpers that use it
Amos Jeffries [Tue, 8 Apr 2014 15:35:12 +0000 (03:35 +1200)] 
Cleanup: Make crypt(3) detection dependent on the helpers that use it

Only run detection for crypt(3) support when the NCSA and getpwnam
helpers which use it are to be built.

Also, move shadow.h detection to depend on getpwnam helper which is the
only code using it.

Also, shuffle the libcrypt and libmd5 detection up into the section with
other crypto libraries so they are known in advance of helper detections
which may require libcrypt.

11 years agoFix OpenSSL detection when an explicit path is given
Amos Jeffries [Tue, 8 Apr 2014 13:09:47 +0000 (06:09 -0700)] 
Fix OpenSSL detection when an explicit path is given

The previous OpenSSL detection was skipping the library checks when an
explicit path was presented. Resulting in no -lssl flag being passed to
the linker.

Rational for this fix:
 pkg-config presents location-neutral details.

 The explicit checks are likewise neutral provided the LIBS environment
  variable has been set with the explicit path.

 User presented path must be used regardless of which the library checks
  are used in detection.

So...

 Always perform the checks with optionally set LIBS and keep the
 user provided path explicitly separate from the pkg-config *_LIBS
 variable. Only assemble the parts into SSLLIB once all have been
 identified.