]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
10 years agoFix build issues after trunk rev.13534 merge
Amos Jeffries [Thu, 21 Aug 2014 07:57:42 +0000 (00:57 -0700)] 
Fix build issues after trunk rev.13534 merge

FTP server addition to trunk pulled in design changes to the HTTP parse
and processing. Adding an HTTP server component as well. This branch code
clashed and fails to build without a matching redesign.

Not yet run tested. Just building again.

10 years agoMerged from trunk rev.13534
Amos Jeffries [Tue, 19 Aug 2014 12:31:33 +0000 (05:31 -0700)] 
Merged from trunk rev.13534

10 years agoPortability: remove short macro MB
Amos Jeffries [Mon, 18 Aug 2014 13:35:08 +0000 (06:35 -0700)] 
Portability: remove short macro MB

Very short macros have an increased liklihood of clashing with system
definitions of other symbols. In this case with a typedef in MinGW.

As the MB macro was limited to use in MemPool.* simply inline its
definition.

10 years agoauthor: Alex Rousskov <rousskov@measurement-factory.com>
Christos Tsantilas [Thu, 14 Aug 2014 08:54:49 +0000 (11:54 +0300)] 
author: Alex Rousskov <rousskov@measurement-factory.com>
Use v3 for fake certificate if we add _any_ certificate extension.

We used to force v3 version only when adding the subjectAltName extension.
That broke sites that did not have subjectAltName but used other mimicked x509
extensions, when accessed through Firefox 31 (at least):
https://bugzilla.mozilla.org/show_bug.cgi?id=1045973

10 years agoFix unwrapped adaptation code in rev.13528
Amos Jeffries [Tue, 12 Aug 2014 13:06:21 +0000 (06:06 -0700)] 
Fix unwrapped adaptation code in rev.13528

10 years agoSourceFormat Enforcement
Automatic source maintenance [Tue, 12 Aug 2014 00:14:56 +0000 (18:14 -0600)] 
SourceFormat Enforcement

10 years agoFixed reporting of malformed -n values on the command line.
Alex Rousskov [Mon, 11 Aug 2014 17:29:47 +0000 (11:29 -0600)] 
Fixed reporting of malformed -n values on the command line.

Test case: $ squid -n ' '
FATAL: Expected alphanumeric service name for the -n option but got: squid

10 years agoFixed Parser::Tokenizer::prefix() to return false on all empty prefixes.
Alex Rousskov [Mon, 11 Aug 2014 17:14:15 +0000 (11:14 -0600)] 
Fixed Parser::Tokenizer::prefix() to return false on all empty prefixes.

The code was returning true and sometimes even setting the returnedToken
to a non-empty string when no permitted tokenChars were found.

Added unit test cases to catch similar bugs in the future.

10 years agoInitial native FTP Relay support.
Alex Rousskov [Mon, 11 Aug 2014 16:09:06 +0000 (10:09 -0600)] 
Initial native FTP Relay support.

* Added ftp_port directive telling Squid to relay native FTP commands.
* Active and passive FTP support on the user-facing side;
  require passive connections to come from the control connection src IP.
* IPv6 support (EPSV and, on the user-facing side, EPRT).
* Intelligent adaptation of relayed FTP FEAT responses.
* Relaying of multi-line FTP control responses using various formats.
* Support relaying of FTP MLSD and MLST commands (RFC 3659).
* Several Microsoft FTP server compatibility features.
* ICAP/eCAP support (at individual FTP command/response level).
* Optional "current FTP directory" tracking (cannot be 100% reliable due to
  symbolic links and such, but is helpful in some common use cases).
* FTP origin control connection is pinned to the FTP user connection.
* No caching support -- no reliable Request URIs for that (see above).
* Significant FTP code restructuring on the server-facing side.
* Initial steps towards HTTP code restructuring on the client-facing side.

See merged revisions commit log for details.

10 years agoFixes and polishing in response to Amos' squid-dev review dated 2014/08/10.
Alex Rousskov [Sun, 10 Aug 2014 23:18:33 +0000 (17:18 -0600)] 
Fixes and polishing in response to Amos' squid-dev review dated 2014/08/10.

Fixed handling of FTP commands terminated with LF instead of CRLF (regression
introduced during migration to Tokenizer in r12812).

Many polishing touches.

10 years agoChanges in response to Amos' squid-dev review dated 2014/08/08.
Alex Rousskov [Sun, 10 Aug 2014 02:30:47 +0000 (20:30 -0600)] 
Changes in response to Amos' squid-dev review dated 2014/08/08.

See inner commit messages for details.

10 years agoPolishing in response to Amos' squid-dev review dated 2014/08/08.
Alex Rousskov [Sun, 10 Aug 2014 02:28:33 +0000 (20:28 -0600)] 
Polishing in response to Amos' squid-dev review dated 2014/08/08.

The PASS value masking code in HttpHeader::packInto() is currently unused
because Squid does not (and cannot) use errorpages for native FTP errors.

It is [still] possible to configure ftp_port with transport=HTTP but it is
not clear what the exact effects of that configuration are, if any.

The ftp_port ftp-track-dirs option no longer accepts on|off values. Off is
still the default. Turn on using a valueless "ftp-track-dirs" option.

Other minor polishing touches.

10 years agoCentralized and documented FTP protocol "version" (1.1) definition.
Alex Rousskov [Sat, 9 Aug 2014 00:35:28 +0000 (18:35 -0600)] 
Centralized and documented FTP protocol "version" (1.1) definition.

Moved AnyP::PortCfg::setTransport() to the cache_cf.cc parsing code where it
currently belongs. AnyP code should not have protocol-specific pieces as it is
code shared among (or used by) many (ideally, all transfer) protocols.

TODO: Convert Http::ProtocolVersion from class into a function.

10 years agoBug 4093: source-maintenance.sh bad perl -i option
Alex Rousskov [Fri, 8 Aug 2014 11:52:58 +0000 (05:52 -0600)] 
Bug 4093: source-maintenance.sh bad perl -i option

10 years agoSourceFormat Enforcement
Alex Rousskov [Fri, 8 Aug 2014 03:07:03 +0000 (21:07 -0600)] 
SourceFormat Enforcement

10 years agoFixed HttpHdr::Private/NoCache(v) implementations and optimized their API.
Alex Rousskov [Thu, 7 Aug 2014 22:33:48 +0000 (16:33 -0600)] 
Fixed HttpHdr::Private/NoCache(v) implementations and optimized their API.

These calls now avoid assertions and extra trailing commas when called with
empty names. The API now allows calling with a String() object, but still
needs more polishing work.

Moved common code from Ftp::Server::setReply and Ftp::Relay::createHttpReply()
into Ftp::HttpReplyWrapper().

Also removed the last non-job callbak from Ftp::Client, polished and synced
new FTP comments with the modern client/server/gateway/relay terminology, as
well as minimized changes compared to trunk.

10 years agoConverted some of the new FTP code to use SBuf and Tokenizer
Alex Rousskov [Thu, 7 Aug 2014 17:31:05 +0000 (11:31 -0600)] 
Converted some of the new FTP code to use SBuf and Tokenizer
instead of MemBuf, String, and c-string manipulations.

10 years agoTokenizer fixes and API improvements.
Alex Rousskov [Thu, 7 Aug 2014 17:26:03 +0000 (11:26 -0600)] 
Tokenizer fixes and API improvements.

Taught Tokenizer to keep track of the number of parsed bytes. Many callers
need to know that because they need to adjust/consume I/O offsets/buffers.

Adjusted unused Parser::Tokenizer::token() to not treat NUL delimiter
specially. Besides the fact that not all grammars can treat NUL that way, the
special NUL treatment resulted in some token() calls returning true for empty
tokens, which was confusing parsers. Callers that do not require trailing
delimiters, should use prefix() instead. This change is based on experience
writing Tokenizer-based FTP parser, although the final parser code uses
prefix() instead of token(), for unrelated reasons.

Split Parser::Tokenizer::skip(set) into skipOne() and skipAll(). All other
skip() methods skip exactly one thing (either a given character or a given
token) but the old skip(set) method was skipping multiple things. That
confused callers. We now force the caller to make a choice.

Fixed Parser::Tokenizer::skip(char) to avoid out of bound access.

10 years agoAdded CharacterSet::complement() to create "all except those in that set" sets
Alex Rousskov [Thu, 7 Aug 2014 17:20:27 +0000 (11:20 -0600)] 
Added CharacterSet::complement() to create "all except those in that set" sets
handy for parsing (e.g., "get all characters until the end of line").

Added CharacterSet::rename() to label sets. Handy in const declarations that
use expressions. For example: const CharacterSet AB = (A+B).renamed("AB").

10 years agoDo not allow SBuf::toLower/toUpper() return a value.
Alex Rousskov [Thu, 7 Aug 2014 17:13:26 +0000 (11:13 -0600)] 
Do not allow SBuf::toLower/toUpper() return a value.

Some callers think toLower() method changes the string and some think it
returns a changed value without changing the string. Without unportable hacks
like __attribute__((warn_unused_result)), some of the callers will guess wrong
and not know about it. It is easier/safer to change the object itself and
return nothing.

Provided ToUpper/ToLower() functions (not methods!) that preserve their
paramter and return a new object for callers that need the old functionality.
These functions are a good candidate for __attribute__ hacks.

10 years agoPolished for the official review, addressing several TODOs.
Alex Rousskov [Tue, 5 Aug 2014 22:44:23 +0000 (16:44 -0600)] 
Polished for the official review, addressing several TODOs.

Use 1.1 version for FTP ports because FTP commands are sent on a
"persistent by default" connection, just like HTTP/1.1.

Cleaned up Ftp::CtrlChannel, Ftp::DataChannel, and Ftp::Client object
construction and destruction.

Do not insist on USER command when intercepting FTP. Interception support
may still not work for other reasons, but USER does not seem to be required
since Squid gets request destination from the intercepted connection info.

10 years agoDone moving FTP code around. Polished moved code to match new locations.
Alex Rousskov [Tue, 5 Aug 2014 00:17:16 +0000 (18:17 -0600)] 
Done moving FTP code around. Polished moved code to match new locations.

src/clients/FtpNative is now src/clients/FtpRelay. It was awkward to use a
non-noun "Native" as a class name, and the class was already described as
"relaying FTP".

10 years agoMajor source layout change: Moved FTP code into servers/, clients/, and ftp/.
Alex Rousskov [Mon, 4 Aug 2014 21:44:31 +0000 (15:44 -0600)] 
Major source layout change: Moved FTP code into servers/, clients/, and ftp/.

  src/servers/FtpServer.*   # new FTP server, relaying FTP
  src/servers/HttpServer.*  # old ConnStateData parts conflicting w/ FtpServer
  src/clients/FtpClient.*   # code shared by old and new FTP clients
  src/clients/FtpGateway.*  # old FTP client, translating back to HTTP
  src/clients/FtpNative.*   # new FTP client, relaying FTP
  src/ftp/*                 # FTP stuff shared by clients and servers

This change attempts to preserve code in moved files to the extent possible:
Only copied or added code was polished. Future changes will polish moved code.

Unfortunately, bzr does not track code changes across file splits, so the code
moved from ConnStateData (client_side.cc) into HttpServer and FtpServer
classes appears as removed and added in bzr diff. If you want to see the
branch log for the FtpServer or HttpServer code added in this revision, look
in the previous branch revision of client_side.cc.

10 years agoFixed (missing DOC_END) and polished ftp_port documentation.
Alex Rousskov [Mon, 4 Aug 2014 21:23:25 +0000 (15:23 -0600)] 
Fixed (missing DOC_END) and polished ftp_port documentation.

11 years agoDocs: update release notes after rev.13524
Amos Jeffries [Sat, 2 Aug 2014 14:03:21 +0000 (07:03 -0700)] 
Docs: update release notes after rev.13524

11 years agoDocs: cleanup obsolete directive listings
Amos Jeffries [Sat, 2 Aug 2014 13:45:47 +0000 (06:45 -0700)] 
Docs: cleanup obsolete directive listings

11 years agoRemove hierarchy_stoplist in favour of always_direct
Amos Jeffries [Sat, 2 Aug 2014 13:01:28 +0000 (06:01 -0700)] 
Remove hierarchy_stoplist in favour of always_direct

This directive was deprecated 2 years (and versions) ago. It can be
replaced with:
  acl stoplist url_regex cgi-bin|\?
  always_direct allow stoplist

The major difference between the two configurations is that the old
hierarchy_stoplist was applied after never_direct and always_direct is
applied before it. Both override the never_direct result, so this is not
a problem.

11 years agoFix reconfiguration leaks: objects tied to http_port part1
Christos Tsantilas [Thu, 31 Jul 2014 14:02:20 +0000 (17:02 +0300)] 
Fix reconfiguration leaks: objects tied to http_port part1

This patch cleans up forgotten(?) clientca and crlfile PortCfg members.

Note:
   PortCfg objects are still leaking so this change alone is not enough

11 years agoMerged from trunk rev.13522
Amos Jeffries [Thu, 31 Jul 2014 12:42:23 +0000 (05:42 -0700)] 
Merged from trunk rev.13522

11 years agoDocs: correct Proxy-Support code comment
Amos Jeffries [Thu, 31 Jul 2014 08:54:46 +0000 (01:54 -0700)] 
Docs: correct Proxy-Support code comment

11 years agoFix typo in rev.13516
Amos Jeffries [Thu, 31 Jul 2014 05:16:21 +0000 (22:16 -0700)] 
Fix typo in rev.13516

11 years agoDocs: update HTTP header registrations
Amos Jeffries [Thu, 31 Jul 2014 05:12:06 +0000 (22:12 -0700)] 
Docs: update HTTP header registrations

11 years agoRegister If-Unmodified-Since from RFC 7232
Amos Jeffries [Thu, 31 Jul 2014 02:06:47 +0000 (19:06 -0700)] 
Register If-Unmodified-Since from RFC 7232

11 years agoMoved ftpAccept outside the irrelevant #if USE_OPENSSL clause.
Alex Rousskov [Wed, 30 Jul 2014 18:21:54 +0000 (12:21 -0600)] 
Moved ftpAccept outside the irrelevant #if USE_OPENSSL clause.

11 years agoMerged from trunk (r13515).
Alex Rousskov [Wed, 30 Jul 2014 17:33:14 +0000 (11:33 -0600)] 
Merged from trunk (r13515).
Needs more work to handle FTP adaptation failures better.

11 years agoFix tcp outgoing tos bugs part 3
Christos Tsantilas [Wed, 30 Jul 2014 16:04:19 +0000 (19:04 +0300)] 
Fix tcp outgoing tos bugs part 3

Set tos and netfilter mark value for outgoing ftp data connections established
using the PASV command. Currently works only for EPSV command.

11 years agoFix %USER_CA_CERT_* and %CA_CERT_ external_acl formating codes
Christos Tsantilas [Wed, 30 Jul 2014 15:31:10 +0000 (18:31 +0300)] 
Fix %USER_CA_CERT_* and %CA_CERT_ external_acl formating codes

  * The attribute part of the %USER_CA_CERT_xx and %CA_CERT_xx formating codes
    is not parsed correctly, make these formating codes useless.
  * The %USER_CA_CERT_xx documented wrongly

11 years agoCleanup: polish header masks and fix incorrect entries
Amos Jeffries [Wed, 30 Jul 2014 15:03:51 +0000 (08:03 -0700)] 
Cleanup: polish header masks and fix incorrect entries

11 years agoMerged from trunk rev.13515
Amos Jeffries [Wed, 30 Jul 2014 07:48:08 +0000 (00:48 -0700)] 
Merged from trunk rev.13515

11 years agoDeprecate tag ACL type in favour of note
Amos Jeffries [Tue, 29 Jul 2014 12:38:47 +0000 (05:38 -0700)] 
Deprecate tag ACL type in favour of note

11 years agoEnable compile-time override for MAXTCPLISTENPORTS
Amos Jeffries [Tue, 29 Jul 2014 10:28:17 +0000 (22:28 +1200)] 
Enable compile-time override for MAXTCPLISTENPORTS

MAXTCPLISTENPORTS controls the permitted number of http(s)_port which
may be configured. The hard-coded default is 128 ports.

This patch enables the use of CXXFLAGS="-DMAXTCPLISTENPORTS=n" to set a
new limit when building Squid.

11 years agoBSD: Fix unit test link errors
Amos Jeffries [Sat, 26 Jul 2014 13:26:27 +0000 (01:26 +1200)] 
BSD: Fix unit test link errors

11 years agoOptimize Comm::Connection IP::address setting
Amos Jeffries [Fri, 25 Jul 2014 12:01:42 +0000 (05:01 -0700)] 
Optimize Comm::Connection IP::address setting

Use an inline setter to set both local and remote IP address values in
one call.

11 years agosquidclient: Fix -N option to correctly read argument
Amos Jeffries [Thu, 24 Jul 2014 10:22:17 +0000 (03:22 -0700)] 
squidclient: Fix -N option to correctly read argument

11 years agoFix distclean on BSD
Amos Jeffries [Thu, 24 Jul 2014 06:31:02 +0000 (23:31 -0700)] 
Fix distclean on BSD

11 years agoFix tcp outgoing tos bugs part2
Christos Tsantilas [Wed, 23 Jul 2014 13:28:05 +0000 (16:28 +0300)] 
Fix tcp outgoing tos bugs part2

Fix for the patch r13505, "Fix tcp outgoing tos bugs":
 The Connection::fd member of a non openned connection used inside
Comm::ConnOpener::createFd member, causing crashes to squid

11 years agoReplace INCLUDES variable deprecated by automake 1.7 with AM_CPPFLAGS
Amos Jeffries [Wed, 23 Jul 2014 12:51:55 +0000 (05:51 -0700)] 
Replace INCLUDES variable deprecated by automake 1.7 with AM_CPPFLAGS

11 years agoFix unit test linker issues in testHttpReply and testStore
Amos Jeffries [Tue, 22 Jul 2014 23:17:16 +0000 (16:17 -0700)] 
Fix unit test linker issues in testHttpReply and testStore

Also, update STUB files for comm.cc, event.cc, and libssl-squid.la

11 years agoSourceFormat Enforcement
Automatic source maintenance [Tue, 22 Jul 2014 00:14:36 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agoFix tcp outgoing tos bugs
Christos Tsantilas [Mon, 21 Jul 2014 14:55:27 +0000 (17:55 +0300)] 
Fix tcp outgoing tos bugs

The tcp_outgoing_tos is buggy in trunk:
 - The ToS is never set for packets of the first request of a TCP connection.
 - The ToS is never set for HTTPS traffic no matter whether requests are bumped
   or not.
 - The ToS value is not set for ftp data connections

This patch solve the above problems:
 - It moves the codes which sets the TOS value for a new connection from the
   the comm_openex to a higher-level code, where the connection protocol
   (IPv4 or IPv6) is known.
 - Add code to set TOS value for ftp data connections.
 - Add a check on parsing code to warn users if the configured ToS value has the
   ECN bits set, and adjust the value to a correct one.

Notes
  Currently squid support only passive ftp data connections. If squid in the
future supports active ftp connections, then some work required to TcpAcceptor
class to allow setting ToS values for connections established on squid listening
sockets.

This is a Measurement Factory project

11 years agoFix various trunk unit test build issues
Amos Jeffries [Mon, 21 Jul 2014 05:39:57 +0000 (22:39 -0700)] 
Fix various trunk unit test build issues

11 years agoFix out of bounds memory access on -n option
Amos Jeffries [Fri, 18 Jul 2014 11:51:17 +0000 (04:51 -0700)] 
Fix out of bounds memory access on -n option

11 years agoFix unit test issue after rev.1498
Amos Jeffries [Fri, 18 Jul 2014 11:02:16 +0000 (04:02 -0700)] 
Fix unit test issue after rev.1498

Moves service_name global definition to tools.h where it can be
accessible to more unit tests, in particular tests outside of
src/Makefile.am

Adds stub_SBuf.cc for use by unit tests not actually needing SBuf.

11 years agosquidclient: Fix -m option to correctly read method argument
Christos Tsantilas [Fri, 18 Jul 2014 08:58:00 +0000 (11:58 +0300)] 
squidclient: Fix -m option to correctly read method argument

11 years agoBug 4085: cache_miss_revalidate / ignore_ims_on_miss docs confusing
Amos Jeffries [Thu, 17 Jul 2014 01:48:19 +0000 (19:48 -0600)] 
Bug 4085: cache_miss_revalidate / ignore_ims_on_miss docs confusing

11 years agoFix http_port after rev.13497
Amos Jeffries [Wed, 16 Jul 2014 12:10:11 +0000 (06:10 -0600)] 
Fix http_port after rev.13497

Also, remove dead code if-statement in httpAccept(). Replace with a note
that the call may have been queued when a reconfgure happened to the port

11 years agoValidate -n service name parameter value
Amos Jeffries [Mon, 14 Jul 2014 12:58:03 +0000 (05:58 -0700)] 
Validate -n service name parameter value

Service name is used for path prefixes in SHM/UDS sockets, Windows
service name, Unix/Linux/BSD daemon names, and file path segments.

Restrict service names to a max 32 character alphanumeric value in order
to accommodate as widely portable names as possible in all these cases.

11 years agoConverts the PortCfgPointer to reference counted
Amos Jeffries [Mon, 14 Jul 2014 09:48:47 +0000 (02:48 -0700)] 
Converts the PortCfgPointer to reference counted

This allows long-lived connections to retain access to their original
receiving port configuration even after squid has been reconfigured.
Reference counting prevents some leaking of these port configuration
details and associated state by removing locking uncertainties.

Also, fixes all parsing errors resulting from the change. Most of
the issues were due to use of raw-pointers and explicit
cbdataReference*() API.

11 years agoSourceFormat Enforcement
Automatic source maintenance [Mon, 14 Jul 2014 00:14:44 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agontlm_sspi_auth: fix various build errors
Amos Jeffries [Sun, 13 Jul 2014 11:03:03 +0000 (04:03 -0700)] 
ntlm_sspi_auth: fix various build errors

* Fix MinGW portability build errors

* Upgrade to current helper protocol.

Also, add SEND_TT helper macro for NTLM helpers

11 years agonegotiate_wrapper: vfork is not portable
Amos Jeffries [Sun, 13 Jul 2014 09:43:10 +0000 (02:43 -0700)] 
negotiate_wrapper: vfork is not portable

Windows does not provide vfork(), so we must test for it before building
the helper.

11 years agoWindows: fix iphlpapi.h include case-sensitivity
Amos Jeffries [Sun, 13 Jul 2014 08:49:42 +0000 (01:49 -0700)] 
Windows: fix iphlpapi.h include case-sensitivity

11 years agoWindows: correct libsspwin32 API for SSP_LogonUser()
Amos Jeffries [Sun, 13 Jul 2014 08:34:06 +0000 (01:34 -0700)] 
Windows: correct libsspwin32 API for SSP_LogonUser()

11 years agonegotiate_sspi_auth: Portability fixes for MinGW
Amos Jeffries [Sun, 13 Jul 2014 08:32:17 +0000 (01:32 -0700)] 
negotiate_sspi_auth: Portability fixes for MinGW

11 years agoext_lm_group_acl: portability fixes for MinGW
Amos Jeffries [Sun, 13 Jul 2014 07:21:11 +0000 (00:21 -0700)] 
ext_lm_group_acl: portability fixes for MinGW

11 years agoRelease Notes: fix configure options text
Amos Jeffries [Sun, 13 Jul 2014 05:28:15 +0000 (22:28 -0700)] 
Release Notes: fix configure options text

11 years agoFix IDENT result in rev.13483
Amos Jeffries [Sun, 13 Jul 2014 03:21:04 +0000 (21:21 -0600)] 
Fix IDENT result in rev.13483

11 years agoSourceFormat Enforcement
Automatic source maintenance [Sun, 13 Jul 2014 00:14:38 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agoSupport client connection annotation by helpers via clt_conn_tag=TAG.
Christos Tsantilas [Sat, 12 Jul 2014 09:34:43 +0000 (12:34 +0300)] 
Support client connection annotation by helpers via clt_conn_tag=TAG.

TCP client connections tagging is useful for faking various forms of
connection-based "authentication" when standard HTTP authentication cannot be
used. A URL rewriter or, external ACL helper may mark the "authenticated"
client connection to avoid going through "authentication" steps during
subsequent requests on the same connection and to share connection
"authentication" information with Squid ACLs, other helpers, and logs.

After this change, Squid accepts optional clt_conn_tag=TAG pair from a
helper and associates the received TAG with the client TCP connection.
Squid treats the received clt_conn_tag=TAG pair as a regular annotation, but
also keeps it across all requests on the same client connection. A helper may
update the client connection TAG value during subsequent requests.

Also after this patch the notes comming from helpers replaces any existing
note values.

This is a Measurement Factory project

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

11 years agoSSL Server connect I/O timeout
Christos Tsantilas [Thu, 10 Jul 2014 14:47:53 +0000 (17:47 +0300)] 
SSL Server connect I/O timeout

FwdState::negotiateSSL() operates on a TCP connection without a timeout. If,
for example, the server never responds to Squid SSL Hello, the connection get
stuck forever. This happens in real world when, for example, a client is trying
to establish an SSL connection through bumping Squid to an HTTP server that
does not speak SSL and does not detect initial request garbage (from HTTP point
of view)

This patch adds support for timeout to SSL negotiation procedure and sets this
timeout so that it does not exceed peer_connect or forward_timeout.

This is a Measurement Factory project

11 years agoBug 4080: worker hangs when client identd is not responding
Oliver Dumschat [Thu, 10 Jul 2014 14:01:34 +0000 (07:01 -0700)] 
Bug 4080: worker hangs when client identd is not responding

11 years agoCleanup: simplify libTrie
Francesco Chemolli [Fri, 27 Jun 2014 15:39:17 +0000 (17:39 +0200)] 
Cleanup: simplify libTrie

11 years agoauthor: Joe Crayne <oh.hellojoe@gmail.com>
Christos Tsantilas [Thu, 26 Jun 2014 09:34:04 +0000 (12:34 +0300)] 
author: Joe Crayne <oh.hellojoe@gmail.com>
Bug 3966:Add KeyEncipherment when ssl-bump substitues RSA for EC.

Libnss3, which is used by Firefox to verify the certificate chain, has
different requirements for RSA keys than it does for EC keys.  In particular,
RSA keys with the keyUsage extension, must set the KeyEncipherment flag.

I've attached a patch that will enable KeyEncipherment whenever ssl-bump
attempts to substitute an RSA key for an EC key that had a keyUsage extension.

This fix was brought to you by the Samizdat project.
http://samizdat.childrenofmay.org

11 years agoDocumented a known bug that took a while to triage. No good fix is available.
Alex Rousskov [Wed, 25 Jun 2014 23:21:28 +0000 (17:21 -0600)] 
Documented a known bug that took a while to triage. No good fix is available.

11 years agoPrep for 3.4.6
Amos Jeffries [Wed, 25 Jun 2014 12:07:37 +0000 (05:07 -0700)] 
Prep for 3.4.6

11 years agoSourceFormat Enforcement
Automatic source maintenance [Wed, 25 Jun 2014 00:14:36 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agoSupport more collapsed forwarding hit cases:
Alex Rousskov [Wed, 25 Jun 2014 00:09:35 +0000 (18:09 -0600)] 
Support more collapsed forwarding hit cases:

Allow STORE_MEMORY_CLIENTs to open disk files if needed and possible.
STORE_*_CLIENT designation is rather buggy (several known XXXs). Some
collapsed clients are marked as STORE_MEMORY_CLIENTs (for the lack of info at
determination time) but their hit content may actually come from a disk cache.

Do not abandon writing a collapsed cache entry when we cannot cache the entry
in RAM if the entry can be cached on disk instead. Both shared memory cache
and the disk cache have to refuse to cache the entry for it to become
non-collapsible. This dual refusal is difficult to detect because each cache
may make the caching decision at different times. Added StoreEntry methods to
track those decisions and react to them.

Recognize disk cache as a potential source of the collapsed entry when the
memory cache is configured. While collapsed entries would normally be found in
the shared memory cache, caching policies and other factors may prohibit
memory caching but still allow disk caching. Memory cache is still preferred.

11 years agoDo not use unknown entry size in StoreEntry::checkTooSmall() determination.
Alex Rousskov [Wed, 25 Jun 2014 00:07:41 +0000 (18:07 -0600)] 
Do not use unknown entry size in StoreEntry::checkTooSmall() determination.

The size of collapsed entries is often unknown, even when they are STORE_OK
(because swap_hdr_sz is unknown when the other worker has created the cache
entry).  The same code has been using this ignore-unknowns logic for the
Content-Length header value, so the rejection of unknown entry size (added as
a part of C++ conversion without a dedicated message in r5766) could have been
a typo.

11 years agoRock and shared memory caches fixes/improvements.
Alex Rousskov [Tue, 24 Jun 2014 23:48:37 +0000 (17:48 -0600)] 
Rock and shared memory caches fixes/improvements.

* Bug fixes:

Avoid "FATAL: Squid has attempted to read data from memory that is not
present" crashes. Improve related code.

Lifted 16777216 slot limit from rock cache_dirs and shared memory caches.
Caches larger than 256GB (assuming default 16KB cache_dir slot-size) require
this fix to use disk space beyond 256GB.  Also fixed rock disk space waste
warning.

Restored Squid ability to cache (in memory) when no disk caches are configured
which was lost during r12662 "Bug 3686: cache_dir max-size default fails" but
other bugs hid this problem.

Allow HITs on entries backed by a shared memory cache only.

Avoid store_client.cc "entry->swap_filen > -1 || entry->swappingOut()" asserts.

Make sure Squid dumps core and not just promises one when memory management
goes wrong.

* Significant RAM usage reduction:

Significantly reduced Large Rock (and slightly shared memory) RAM requirements
by not allocating 40 (and 12) bytes of unused RAM per cache slot.

Stop wasting 96 RAM bytes per slot for high-offset slots in large shared
caches with more than 16777216 slots. For example, a StoreMap for a 1TB shared
cache with default 16KB slot sizes (67108864 slots) occupied about 6.5GB of
RAM. After this change, the same information is stored in about 2.0GB because
unused anchors are not stored.

* Other improvements:

Document counter-intuitive round-robin cache_dir selection; decrease its bias.

Report IpcIo file name with errors and warnings to inform admin which
cache_dir needs troubleshooting or tuning.

11 years agoMerged from trunk r13474.
Alex Rousskov [Tue, 24 Jun 2014 22:52:53 +0000 (16:52 -0600)] 
Merged from trunk r13474.

11 years agoPrep for merge from trunk: undo branch r13313, r13312, and r13311 that were
Alex Rousskov [Tue, 24 Jun 2014 22:21:48 +0000 (16:21 -0600)] 
Prep for merge from trunk: undo branch r13313, r13312, and r13311 that were
temporary undoing trunk r13266, r13269, and r13270 (std::vector migration).

11 years agoEnable ICAP client by default
Amos Jeffries [Sun, 22 Jun 2014 07:05:08 +0000 (00:05 -0700)] 
Enable ICAP client by default

This component of Squid has been relatively stable now for several
series.

11 years agoBug 4073 partial: 3.4 fails to compile on cygwin
Amos Jeffries [Sun, 22 Jun 2014 03:33:30 +0000 (20:33 -0700)] 
Bug 4073 partial: 3.4 fails to compile on cygwin

11 years agoRFC 7239 registers Forwarded header
Amos Jeffries [Sat, 21 Jun 2014 15:52:55 +0000 (08:52 -0700)] 
RFC 7239 registers Forwarded header

This heade obsoletes X-forwarded-For and many other X-* headers.

For now we do nothing special with it except statistics gathering.
Future work will remove X-Forwarded-For support.

11 years agoSourceFormat Enforcement
Automatic source maintenance [Wed, 18 Jun 2014 00:14:50 +0000 (18:14 -0600)] 
SourceFormat Enforcement

11 years agoNon https connectiona on SSL-bump enabled port may stuck
Christos Tsantilas [Tue, 17 Jun 2014 14:54:53 +0000 (17:54 +0300)] 
Non https connectiona on SSL-bump enabled port may stuck

This is can be seen on skype when try to connect to server using an
SSL-bump enabled squid port. Squid try to bump the connection, waiting for ever
the ssl protocol header, and skype client waits for ever  an answer from the
server.

This patch sets the timeout to Config.Timeout.request (request_timeout)

This is a Measurement Factory project

11 years agoDo not leak implicit ACLs during reconfigure.
Alex Rousskov [Mon, 16 Jun 2014 22:50:08 +0000 (16:50 -0600)] 
Do not leak implicit ACLs during reconfigure.

Many ACLs implicitly created by Squid when grouping multiple ACLs were not
destroyed because those implicit ACLs where not covered by the global ACL
registry used for ACL destruction.

See also: r13210 which did not go far enough because it incorrectly assumed
that all InnerNode() children are aclRegister()ed and, hence, will be
centrally freed.

Also, do not use cbdataFree() on non-POD Acl::Tree objects that have
destructors.

TODO: Refcount all ACLs instead.

11 years agoFix build on some 32bit systems with strtoll()
Alex Rousskov [Mon, 16 Jun 2014 22:45:23 +0000 (16:45 -0600)] 
Fix build on some 32bit systems with strtoll()
broken by r13429 that duplicated unportable portability code.

GCC exits with errors: integer constant is too large for 'long' type

nnnL constants are "long" and cannot hold 64bit integers on 32bit platforms.
Use LL suffix for 64bit constants for now. It remains to be seen how portable
that LL C++ extension is: https://gcc.gnu.org/onlinedocs/gcc/Long-Long.html

Also fixed INT64_MIN #define (missing parenthesis).

11 years agofix rev.13465 "LruMap::memLimit_" patch to compile with clang
Christos Tsantilas [Mon, 16 Jun 2014 19:58:50 +0000 (22:58 +0300)] 
fix rev.13465 "LruMap::memLimit_" patch to compile with clang

11 years agoexternal_acl_type documentation lies for cache=n option
Christos Tsantilas [Mon, 16 Jun 2014 16:21:19 +0000 (19:21 +0300)] 
external_acl_type documentation lies for cache=n option

The default cache size for external_acl_type is 256*1024 not unbounded as
documentation says.

11 years agoAssure that when LruMap::memLimit_ is set to 0 no entries stored on LruMap
Christos Tsantilas [Mon, 16 Jun 2014 16:16:10 +0000 (19:16 +0300)] 
Assure that when LruMap::memLimit_ is set to 0 no entries stored on LruMap

Changes:
 - Do not add new entries to LruMap if memLimit is 0
 - Remove all entries in LruMap::trim if memLimit set to 0

11 years agoPOrtability: use 64-bit for X-Cache-Age header
Amos Jeffries [Sat, 14 Jun 2014 01:45:50 +0000 (18:45 -0700)] 
POrtability: use 64-bit for X-Cache-Age header

While the value is expected to be well within 32-bit range some OS
(OpenBSD 5.5 at least) use 64-bit time_t. Use the larger type size for
calculations which also removes 32-bit wrap errors, and cast for older
systems.

11 years agoFixed bug in CharacterSet::addRange()
Francesco Chemolli [Wed, 11 Jun 2014 10:31:56 +0000 (12:31 +0200)] 
Fixed bug in CharacterSet::addRange()

11 years agoComplete ConnOpener::connect change from r13459
Francesco Chemolli [Wed, 11 Jun 2014 10:25:38 +0000 (12:25 +0200)] 
Complete ConnOpener::connect change from r13459

11 years agoWindows: fix various libip build issues
Amos Jeffries [Mon, 9 Jun 2014 15:04:29 +0000 (08:04 -0700)] 
Windows: fix various libip build issues

* Missing include ws2tcpip.h for IPv6 definitions
* Alternative IN6_ARE_ADDR_EQUAL definition required
* 'byte' is a reserved / system defined type on Windows,
 resolve variable shadowing by renaming to ipbyte.

11 years agoWindows: rename TcpLogger::connect
Amos Jeffries [Mon, 9 Jun 2014 14:30:49 +0000 (07:30 -0700)] 
Windows: rename TcpLogger::connect

Windows sockets API is mapped via #define macros. connect() macro and
this TcpLogger method collide. Rename the method doConnect().

11 years agoWindows: rename ConnOpener::connect
Amos Jeffries [Mon, 9 Jun 2014 13:32:43 +0000 (06:32 -0700)] 
Windows: rename ConnOpener::connect

Windows sockets API is mapped via #define macros. connect() macro and
this ConnOpener method collide. Rename the method doConnect().

11 years agoRevert rename of Comm::Flag ERROR
Amos Jeffries [Mon, 9 Jun 2014 13:18:48 +0000 (06:18 -0700)] 
Revert rename of Comm::Flag ERROR

On MinGW at least ERROR is a #define'd macro resulting in build failure.
Revert to the old name COMM_ERROR until we can find a better one that
does not duplicate 'comm'.

11 years agoRFC2616 obsoleted by RFC 7230 et al
Amos Jeffries [Mon, 9 Jun 2014 01:38:06 +0000 (18:38 -0700)] 
RFC2616 obsoleted by RFC 7230 et al