]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
8 years ago4.0.3 SQUID_4_0_3
Amos Jeffries [Sat, 28 Nov 2015 15:29:39 +0000 (07:29 -0800)] 
4.0.3

8 years agoPrep for 4.0.3 and 3.5.12
Amos Jeffries [Sat, 28 Nov 2015 14:18:32 +0000 (06:18 -0800)] 
Prep for 4.0.3 and 3.5.12

8 years agoCleanup: rename Security::ContextPointer to ContextPtr
Amos Jeffries [Sat, 28 Nov 2015 03:00:35 +0000 (19:00 -0800)] 
Cleanup: rename Security::ContextPointer to ContextPtr

... Pointer is used in Squid for smart pointers, which this is not (yet).

Also convert remaining SSL_CTX* instances with ContextPtr.

8 years agoAdd missing include after rev.14418
Amos Jeffries [Thu, 26 Nov 2015 21:14:30 +0000 (13:14 -0800)] 
Add missing include after rev.14418

8 years agoSourceFormat Enforcement
Source Maintenance [Wed, 25 Nov 2015 06:12:10 +0000 (06:12 +0000)] 
SourceFormat Enforcement

8 years agoCleanup: Refactor ConnStateData pipeline handling
Amos Jeffries [Wed, 25 Nov 2015 04:21:40 +0000 (20:21 -0800)] 
Cleanup: Refactor ConnStateData pipeline handling

This refactors the request pipeline management API to use std::list
instead of a custom linked-list with accessors spread over both
ConnStateData and ClientSocketContext.

To do this a new class Pipeline is created with methods wrapping
std::list API and extending it slightly to meet the HTTP/1.1 pipeline
behaviours and perform basic stats gathering. The pipeline management
methods and state variables are moved inside this class.

ClientSocketContext was performing several layering violations in
relation to ConnStateData when one transaction ended and the next needed
starting. Treating the pipeline properly as a std::list forced removal
of that violation.

* actions for starting or resuming a transaction on the connection are
now moved to ConnStateData::kick(). Which gets called after each
transaction completes.
 - with some further cleanup it can be called at any point the
ConnStateData needs to resume processing. However, that is left out of
scope for this patch.

* the ClientSocketContext scope now ends when the finished() method is
used to mark completion of these contexts transactions. Which will mark
itself done and de-register from the Pipeline queue. The ConnStateData
kick() method still needs to be called to resume other transactions
processing.

* the queue is now holding RefCounted Pointers. So that the
ClientSocketContext destructor no longer needs to be careful of
registrations, and the queue entries are guaranteed to still exist while
queued.

* The old freeAllContexts() and notifyAllContexts(int) members of
ConnStateData have been combined into Pipeline::terminateAll(int).

The ClientSocketContext and ConnStateData documentation is updated to
describe what they do in regards to connection and transaction processing.

Initial testing revealed CONNECT tunnels always being logged as ABORTED.
This turns out to be techincally correct, since the only way a tunnel
can finish is for client or server to just close the connection.
However, it is not right to log these as abnormal aborts. Instead, I
have now made the context be finished() just prior to the
TunnelStateData being destroyed. That way normal closure should show up
only as TUNNEL, but timeouts and I/O errors should still be recorded as
abnormal.

Two potential bugs have been highlighted:

* The on_unsupported_protocol handling function appears to be a bit
broken. It pop()'s contexts off the pipeline directly without going
through the proper finished() process to release their state data. I
have highlighted that with an XXX and comment.

* The ssl-bump handling logic switching to TLS begins with a terminateAll(0)
run on all active contexts. It does not check whether there is any existing
pipeline of requests waiting to be processed. And the action prematurely
purges the bumped CONNECT message context, which should be closed properly
and logged as successful.

8 years agoAdd missing stub definition for CPU_ISSET
Amos Jeffries [Tue, 24 Nov 2015 08:01:16 +0000 (00:01 -0800)] 
Add missing stub definition for CPU_ISSET

8 years agoBug 4383: Kerberos library detection failing
Amos Jeffries [Tue, 24 Nov 2015 01:43:30 +0000 (17:43 -0800)] 
Bug 4383: Kerberos library detection failing

8 years agoFix typo in tunnel.cc
Amos Jeffries [Mon, 23 Nov 2015 08:18:35 +0000 (00:18 -0800)] 
Fix typo in tunnel.cc

8 years agoFix build errors in cpuafinity.cc
Amos Jeffries [Mon, 23 Nov 2015 01:46:29 +0000 (17:46 -0800)] 
Fix build errors in cpuafinity.cc

So OS provide stub sched.h which contain various amounts of the CPU_*
macro gadgets but not working sched_setaffinity / sched_getaffinity.

We need to check for each macro separately and limit the
HAVE_CPU_AFFINITY protection to the syscalls which configure actually
checked for.

8 years agoIncluded <vector> that was missing on some platforms after r14411.
Alex Rousskov [Sat, 21 Nov 2015 14:59:09 +0000 (07:59 -0700)] 
Included <vector> that was missing on some platforms after r14411.

8 years agoError on missing MIT libraries only if MIT was required
Amos Jeffries [Thu, 19 Nov 2015 14:07:53 +0000 (06:07 -0800)] 
Error on missing MIT libraries only if MIT was required

8 years agoSourceFormat Enforcement
Source Maintenance [Thu, 19 Nov 2015 06:12:03 +0000 (06:12 +0000)] 
SourceFormat Enforcement

8 years agoStore API and layout polishing. No functionality changes intended.
Alex Rousskov [Thu, 19 Nov 2015 05:51:49 +0000 (22:51 -0700)] 
Store API and layout polishing. No functionality changes intended.

Fixes "any Store is a Root" API that forced us to bloat the base
Store class with methods needed only in Store::Root() Controller.
Unblocks bug #7 (cached headers update) fixes.

Class renaming and source file movement map:

  src/SwapDir.h => src/store/Disk.h (and Controller.h)
  src/SwapDir.cc => src/store/Disk.cc
  src/StoreHashIndex.h => src/store/Disks.h (and LocalSearch.h)
  src/store_dir.cc => src/store/Controller.cc (and Disks.cc, LocalSearch.cc)
  src/disk.* => src/fs_io.*

The Store namespace hierarchy now looks like this:

* Storage: Any storage. Similar to the old Store class, but leaner.
* Controller: Combined memory/disks caches and transients. Root API.
* Controlled: Memory cache, disk(s) cache, or transient Storage.
* Disks: All disk caches combined.
* Disk: A single cache_dir Storage.
* Memory: A memory cache.
* Transients: Entries capable of being collapsed for CF.

Please see merged branch commits for details.

8 years agoAdd missing bit of rev.14405
Amos Jeffries [Thu, 19 Nov 2015 02:30:20 +0000 (18:30 -0800)] 
Add missing bit of rev.14405

8 years agoFix build after rev.14402 https_port currently still requires OpenSSL
Amos Jeffries [Thu, 19 Nov 2015 00:24:50 +0000 (16:24 -0800)] 
Fix build after rev.14402 https_port currently still requires OpenSSL

8 years agoFix various DiskIO bugs after rev.14178
Amos Jeffries [Thu, 19 Nov 2015 00:10:31 +0000 (16:10 -0800)] 
Fix various DiskIO bugs after rev.14178

8 years agoBug 4368: A simpler and more robust HTTP request line parser.
Alex Rousskov [Wed, 18 Nov 2015 23:56:16 +0000 (15:56 -0800)] 
Bug 4368: A simpler and more robust HTTP request line parser.

The primary changes are: Removed incremental parsing and revised parsing
sequence to accept virtually any URI (by default and also configurable
as before).

Also doubled hard-coded 16-character method length limit.

No changes to parsing HTTP header fields (a.k.a. the MIME block) were
intended.

Known side effects:

* Drastically simpler code.
* Some unit test case adjustments.
* The new parser no longer treats some request lines ending with
  "HTTP/1.1" as HTTP/0.9 requests for URIs that end with "HTTP/1.1".
* The new parser no longer re-allocates character sets while parsing
  each request.

Intentional Changes:

* Removal of incremental request line parsing.

Squid parsed the request line incrementally. That optimization was
unnecessary:
  - most request lines are short enough to fit into one network I/O,
  - the long lines contain only a single long field (the URI), and
  - the user code must not use incomplete parsing results anyway.

Incremental parsing made code much more complex and possibly slower than
necessary.

The only place where incremental parsing of request lines potentially
makes sense is the URI field itself, and only if we want to accept URIs
exceeding request buffer capacity. Neither the old code, nor the
simplified one do that right now.

* Accept virtually any request-target (when allowed).

1. relaxed_header_parser allows whitespace in request-target.
2. relaxed_header_parser combined with USE_HTTP_VIOLATIONS now allows
   any characters except non-whitespace CTL characters (see RFC 5234
   appendix B.1) in the message request-target (aka URI).

#2 being the default build and configuration situation allows virtually
any URI that Squid can isolate by stripping method (prefix) and
HTTP/version (suffix) off the request line. This approach allows Squid to
forward slightly malformed (in numerous ways) URIs instead of misplacing
on the Squid admin the burden of explaining why something does not work
going through Squid but works fine when going directly or through another
popular proxy (or through an older version of Squid!).

URIs in what Squid considers an HTTP/0.9 request obey the same rules.
Whether the rules should differ for HTTP/0 is debatable, but the current
implementation is the simplest possible one, and the code makes it easy
to add complex rules.

* Code simplification.

RequestParser::parseRequestFirstLine() is now a simple sequence of
sequential if statements. There is no longer a path dedicated for the
strict parser. The decisions about parsing individual fields and
delimiters are mostly isolated to the corresponding methods.

* Unit test cases adjustments.

Removal of incremental request line parsing means that we should not
check parsed fields when parsing fails or has not completed yet.

Some test cases made arguably weird decisions apparently to accommodate
the old parser. The expectations of those test cases are more natural now.

Also, added optional (and disabled by default) debugging, to help pin-point
failures to test sub-cases that CPPUNIT cannot see.

Changing request methods to "none" in test sub-cases with invalid input
was not technically necessary because the new code ignores the method
when parsing fails, but it may help whoever would decide to reduce test
code duplication (by replacing hand-written expected outcomes for failed
test cases with a constant assignment or function call).

8 years agoRemoved src/tests/stub_store_search.cc as unneeded.
Alex Rousskov [Wed, 18 Nov 2015 21:48:34 +0000 (14:48 -0700)] 
Removed src/tests/stub_store_search.cc as unneeded.

8 years agoUse "override" more consistently.
Alex Rousskov [Wed, 18 Nov 2015 21:48:22 +0000 (14:48 -0700)] 
Use "override" more consistently.

Some broken compilers may not like it when only some overridden
methods in a class declaration have the "override" specifier.

8 years agoConvert old comments to Doxygen syntax per review request.
Alex Rousskov [Wed, 18 Nov 2015 20:47:28 +0000 (13:47 -0700)] 
Convert old comments to Doxygen syntax per review request.

8 years agoUse "override" more consistently.
Alex Rousskov [Wed, 18 Nov 2015 20:04:35 +0000 (13:04 -0700)] 
Use "override" more consistently.

Some broken compilers may not like it when only some overridden
methods in a class declaration have the "override" specifier.

8 years agoDo not _require_ anchor/updateCollapsed() re-implementation.
Alex Rousskov [Wed, 18 Nov 2015 20:03:55 +0000 (13:03 -0700)] 
Do not _require_ anchor/updateCollapsed() re-implementation.

Also do not override Controlled methods that Disk is not going to
provide because doing so will complicate changing or deleting those
methods later as we revise the APIs.

8 years agoAdding missing #include, fixing layer-02-maximus build test.
Alex Rousskov [Wed, 18 Nov 2015 18:54:53 +0000 (11:54 -0700)] 
Adding missing #include, fixing layer-02-maximus build test.

8 years agoSourceFormat Enforcement
Source Maintenance [Wed, 18 Nov 2015 18:12:15 +0000 (18:12 +0000)] 
SourceFormat Enforcement

8 years agoC++ convert the global C functions that operate on class CacheDigest
Amos Jeffries [Wed, 18 Nov 2015 13:28:57 +0000 (05:28 -0800)] 
C++ convert the global C functions that operate on class CacheDigest

This is largely a symbol renaming change. But there are two relatively
small logic changes:

1) convert the class to MEMPROXY_CLASS.

Which alters the pool creation timing from general memory pool
initialization time, to whenever the CacheDigest object is first used.

A nice side effect is removal the macro conditional within the old pool
type enumeration. Macros like that in enumeration lists such as this one
have been causing some builds to have run-time errors accessing memory
arrays out-of-bounds or incorrect postions when the build-time
dependency detection issues caused build objects to link with different
./configure'd versions.

2) Constructor logic sequence alteration.

The old *Create function used to set some members then call the *Init
function which would re-set some of them, and initialize most of the
rest (but not all).
The old *UpdateCap function would call a helper that emulated
safe_free(mask) then *Init to alter the objects mask related members
whether they needed it or not.

The class constructor now initializes all members via initialization
list then calls updateCapacity(), which calls a simplified init(). This
altered sequence contains the same operational acts while the new order
avoids repeated or unnecesarily setting members on create and update.

8 years agoMerged from trunk rev.14404
Amos Jeffries [Wed, 18 Nov 2015 13:26:10 +0000 (05:26 -0800)] 
Merged from trunk rev.14404

8 years agoRename CacheDigest::test() to CacheDigest::contains()
Amos Jeffries [Wed, 18 Nov 2015 13:25:29 +0000 (05:25 -0800)] 
Rename CacheDigest::test() to CacheDigest::contains()

8 years agoext_unix_group_acl: Add support via -r flag to strip @REALM from usernames
Chris Addie [Wed, 18 Nov 2015 10:09:05 +0000 (02:09 -0800)] 
ext_unix_group_acl: Add support via -r flag to strip @REALM from usernames

8 years agoSourceFormat
Alex Rousskov [Wed, 18 Nov 2015 06:07:42 +0000 (23:07 -0700)] 
SourceFormat

8 years agoStore API and layout polishing. No functionality changes intended.
Alex Rousskov [Wed, 18 Nov 2015 05:46:36 +0000 (22:46 -0700)] 
Store API and layout polishing. No functionality changes intended.

This first step towards bug #7 fix focuses on fixing "any Store is a
Root" API that forced us to bloat the base Store class with methods
needed only in Store::Root() Controller.

We resolved about 15 XXXs and 10 TODOs (although these counts are
inflated by many duplicated/repeated problems). We added a few new
XXXs and TODOs as well, but they are just marking already problematic
code, not adding more problems or genuinely new work.

Class renaming and source file movement map:

  src/SwapDir.h => src/store/Disk.h (and Controller.h)
  src/SwapDir.cc => src/store/Disk.cc
  src/StoreHashIndex.h => src/store/Disks.h (and LocalSearch.h)
  src/store_dir.cc => src/store/Controller.cc (and Disks.cc, LocalSearch.cc)
  src/disk.* => src/fs_io.*

The code movement to files in parenthesis is not tracked by bzr
because bzr cannot track file splits, and most of the moved code had
to be split across multiple files to untangle various messes. When
deciding what to tell "bzr mv", we picked file pairs that would allow
us to track the most complex, most voluminous code but there is
probably no single correct way to do that.

src/disk.* files were renamed to src/fs_io.* to avoid "src/foo
conflicts with src/store/Foo" problems expected on some case-
insensitive platforms.

The Store namespace hierarchy now looks like this:

* Storage: Any storage. Similar to the old Store class, but leaner.
* Controller: Combined memory/disks caches and transients. Root API.
* Controlled: Memory cache, disk(s) cache, or transient Storage.
* Disks: All disk caches combined.
* Disk: A single cache_dir Storage.
* Memory: A memory cache.
* Transients: Entries capable of being collapsed for CF.

The last two are not moved/finalized yet, but it should not be too
difficult to do that later because there are few direct references to
them from the high-level code.

Related polishing touches:

Moved a lot of misplaced code into the right class and/or source file.

Simplified Store::search() interface to match the actual code that
does not support any search parameters. Removed the search API from
all other stores because the code did not really support store-
specific searches. Resisted the temptation to rename parameterless
search() to iterate() or similar because the actual future of this API
is murky. We may add search parameters or even remove the method
completely. This could quickly snowball into a separate project.

Removed Store::get(x,y,z) API as unused and unsupported.

Removed FreeObject() template as unused (and possibly technically
flawed).

Simplified default Store initialization/cleanup sequence. Removed
empty disk_init(). The non-default Store::Init() parameter is used by
the unit testing code only.

Simplified Store::dereference() API by moving the second parameter to
dedicated Controller::dereferenceIdle() method that is the only ones
using that parameter.

8 years agoUse "standard" STUB macros/API. Also marked the file as unused.
Alex Rousskov [Wed, 18 Nov 2015 05:38:42 +0000 (22:38 -0700)] 
Use "standard" STUB macros/API. Also marked the file as unused.

8 years agoFixed STUB_RETREF() implementation to return the right type.
Alex Rousskov [Wed, 18 Nov 2015 05:34:33 +0000 (22:34 -0700)] 
Fixed STUB_RETREF() implementation to return the right type.
Removed bogus STUB_RETREF() comment about memory leaks in _unreachable_ code.
Deprecated STUB_RETSTATREF() as essentially duplicating STUB_RETREF().

8 years agoMake RefCount pointers behave more like regular pointers.
Alex Rousskov [Wed, 18 Nov 2015 05:32:24 +0000 (22:32 -0700)] 
Make RefCount pointers behave more like regular pointers.

Allow default (but safe, thanks to C++11) conversion of RefCount
pointers to bool. This helps keep the code succinct, minimizes changes
during conversion of reference counting pointers to/from other pointer
types, and avoids nullptr/NULL differences.

8 years agoext_ldap_group_acl: fix std::cerr build error
Aymeric Vincent [Wed, 18 Nov 2015 03:30:57 +0000 (19:30 -0800)] 
ext_ldap_group_acl: fix std::cerr build error

8 years agoCombine the https_port list internal state with http_port state.
Amos Jeffries [Wed, 18 Nov 2015 03:23:59 +0000 (19:23 -0800)] 
Combine the https_port list internal state with http_port state.

These two lists have been near identical for some time now and we can
easily reduce code by simply merging the two and using either the
secure.encryptTransport flag or the transport.protocol type to select
the remaining non-identical code paths.

8 years agoPrevent all TUNNELs being marked as ABORTED
Amos Jeffries [Tue, 17 Nov 2015 10:14:15 +0000 (02:14 -0800)] 
Prevent all TUNNELs being marked as ABORTED

TUNNEL transactions are naturally ended by one of the client or server
closing the connection. This is not an abort. So finish the CONNECT
message context cleanly when the tunnel is closed.

8 years agoupdate docs for finished()
Amos Jeffries [Tue, 17 Nov 2015 08:18:25 +0000 (00:18 -0800)] 
update docs for finished()

8 years agoSplit kick() out of finished(), making terminateAll() cleaner
Amos Jeffries [Tue, 17 Nov 2015 08:14:47 +0000 (00:14 -0800)] 
Split kick() out of finished(), making terminateAll() cleaner

8 years agoDocument bug in clientTunnelOnError
Amos Jeffries [Tue, 17 Nov 2015 07:06:50 +0000 (23:06 -0800)] 
Document bug in clientTunnelOnError

8 years agoRemove unnecessary and dangerous terminateAll()
Amos Jeffries [Tue, 17 Nov 2015 06:58:37 +0000 (22:58 -0800)] 
Remove unnecessary and dangerous terminateAll()

8 years agoUpdate docs and make pop() check the context being removed
Amos Jeffries [Tue, 17 Nov 2015 06:50:47 +0000 (22:50 -0800)] 
Update docs and make pop() check the context being removed

8 years agoDocs: update ConnStateData::kick() comment
Amos Jeffries [Tue, 17 Nov 2015 06:39:08 +0000 (22:39 -0800)] 
Docs: update ConnStateData::kick() comment

8 years agoDocs: Update ConnStateData and ClientServerContext descriptions
Amos Jeffries [Tue, 17 Nov 2015 05:58:08 +0000 (21:58 -0800)] 
Docs: Update ConnStateData and ClientServerContext descriptions

8 years agoMerged from trunk rev.14401
Amos Jeffries [Tue, 17 Nov 2015 04:24:26 +0000 (20:24 -0800)] 
Merged from trunk rev.14401

8 years agoRename ClientSocketContext::connIsFinished() to finished()
Amos Jeffries [Tue, 17 Nov 2015 03:50:31 +0000 (19:50 -0800)] 
Rename ClientSocketContext::connIsFinished() to finished()

Removes some needless mentions of "conn" and clarifies that the method
handles the context object and transaction finishing, not the connection
it belongs to.

8 years agoUse connIsFinished() when a transaction is completed successfully
Amos Jeffries [Tue, 17 Nov 2015 03:26:01 +0000 (19:26 -0800)] 
Use connIsFinished() when a transaction is completed successfully

initiateClose() may sound okay, but it actually is the error handling logic.
It will terminate the ConnStateData with an erro rmessage, leaving the completed
request in the pipeline which in turn will result in *_ABORTED being logged for
all requests with Connection:close headers even if they are cleanly finished.

connIsFinished() is (now) the clean way to finish ClientSocketContext objects
lifetime regardless of whether keep-alive is needed. The ConnStateData::kick()
will now handle that so we do not even need to call keepaliveNextRequest().

Remove the now unused ClientSocketContext::keepaliveNextRequest().

8 years agoFix delay_parameters documentation
Amos Jeffries [Tue, 17 Nov 2015 00:21:01 +0000 (16:21 -0800)] 
Fix delay_parameters documentation

8 years agoError on missing Heimdal libraries only if Heimdal was required
Amos Jeffries [Mon, 16 Nov 2015 22:51:28 +0000 (14:51 -0800)] 
Error on missing Heimdal libraries only if Heimdal was required

8 years agoStop using dangling pointers for eCAP-set custom HTTP reason phrases.
Alex Rousskov [Sun, 15 Nov 2015 17:54:58 +0000 (10:54 -0700)] 
Stop using dangling pointers for eCAP-set custom HTTP reason phrases.

Squid still does not support [external] custom reason phrases and,
hence, cannot reliably support eCAP API that sets the reason phrase to
the one supplied by the adapter.  This and r14398 changes fix [known]
regression bugs introduced by r12728 ("SourceLayout").

8 years agoFixed status code-based HTTP reason phrase for eCAP-generated messages.
Alex Rousskov [Sun, 15 Nov 2015 16:59:12 +0000 (09:59 -0700)] 
Fixed status code-based HTTP reason phrase for eCAP-generated messages.

Calling .reason() on a not-yet-set theMessage.sline object resulted in
"Init" status reason phrase for all from-scratch (i.e., not cloned)
eCAP-made HTTP responses. This fix lets Squid compute the reason phrase
based on the status code, just like Squid does for forwarded responses
(IIRC).

8 years agoCleanup pipeline handling on 1xx message sending
Amos Jeffries [Sun, 15 Nov 2015 13:42:41 +0000 (05:42 -0800)] 
Cleanup pipeline handling on 1xx message sending

8 years agoRemove unused ClientSocketContext::next member
Amos Jeffries [Sun, 15 Nov 2015 13:40:50 +0000 (05:40 -0800)] 
Remove unused ClientSocketContext::next member

8 years agoRemove last traces of ConnStateData::currentobject
Amos Jeffries [Sun, 15 Nov 2015 13:36:19 +0000 (05:36 -0800)] 
Remove last traces of ConnStateData::currentobject

8 years agoReplace ClientSocketContext::removeFromConnectionList() with Pipeline::pop()
Amos Jeffries [Sun, 15 Nov 2015 13:33:44 +0000 (05:33 -0800)] 
Replace ClientSocketContext::removeFromConnectionList() with Pipeline::pop()

8 years agoReplace ConnStateData::getCurrentContext() with Pipeline::front()
Amos Jeffries [Sun, 15 Nov 2015 13:24:11 +0000 (05:24 -0800)] 
Replace ConnStateData::getCurrentContext() with Pipeline::front()

8 years agoRemove ClientSocketContext::deRegisterWithConn()
Amos Jeffries [Sun, 15 Nov 2015 12:47:04 +0000 (04:47 -0800)] 
Remove ClientSocketContext::deRegisterWithConn()

Merge with ClientSocketContext::connIsFinished(). Completing transactions
is the proper way to get requests de-queued.

8 years agoSplit ConnStateData manipulation out of ClientSocketContext::keepaliveNextRequest()
Amos Jeffries [Sun, 15 Nov 2015 12:39:27 +0000 (04:39 -0800)] 
Split ConnStateData manipulation out of ClientSocketContext::keepaliveNextRequest()

 ... move it to a ConnStateData::kick() method instead. Which is called
whenever a transaction is completed and the front queued context changes.

8 years agoReplace ConnStateData::notifyAllContexts() with Pipeline::terminateAll()
Amos Jeffries [Sun, 15 Nov 2015 12:02:50 +0000 (04:02 -0800)] 
Replace ConnStateData::notifyAllContexts() with Pipeline::terminateAll()

8 years agoReplace ConnStateData::freeAllContexts() with Pipeline::terminateAll(0)
Amos Jeffries [Sun, 15 Nov 2015 11:08:29 +0000 (03:08 -0800)] 
Replace ConnStateData::freeAllContexts() with Pipeline::terminateAll(0)

8 years agoRemove ConnStateData::areAllContextsForThisConnection()
Amos Jeffries [Sun, 15 Nov 2015 10:43:52 +0000 (02:43 -0800)] 
Remove ConnStateData::areAllContextsForThisConnection()

8 years agoReplace ConnStateData::getConcurrentRequestCount() with pipeline methods
Amos Jeffries [Sun, 15 Nov 2015 10:40:52 +0000 (02:40 -0800)] 
Replace ConnStateData::getConcurrentRequestCount() with pipeline methods

8 years agoReplace ConnStateData::addContextToQueue() with Pipeline::add()
Amos Jeffries [Sun, 15 Nov 2015 10:16:35 +0000 (02:16 -0800)] 
Replace ConnStateData::addContextToQueue() with Pipeline::add()

8 years agoUse pipeline object for transaction accounting
Amos Jeffries [Sun, 15 Nov 2015 09:55:45 +0000 (01:55 -0800)] 
Use pipeline object for transaction accounting

8 years agoUse pipeline stats in cachemgr reports
Amos Jeffries [Sun, 15 Nov 2015 09:45:47 +0000 (01:45 -0800)] 
Use pipeline stats in cachemgr reports

8 years agoPresent pipeline via class Server
Amos Jeffries [Sun, 15 Nov 2015 09:45:18 +0000 (01:45 -0800)] 
Present pipeline via class Server

8 years agoAdd class Pipeline with API for handling client request pipelines
Amos Jeffries [Sun, 15 Nov 2015 02:54:32 +0000 (18:54 -0800)] 
Add class Pipeline with API for handling client request pipelines

8 years agoUpdated stale "Ssl" text to make the comment match the code again.
Alex Rousskov [Thu, 12 Nov 2015 18:45:11 +0000 (11:45 -0700)] 
Updated stale "Ssl" text to make the comment match the code again.

8 years agoBug 4372: missing template files
Christos Tsantilas [Thu, 12 Nov 2015 08:51:03 +0000 (10:51 +0200)] 
Bug 4372: missing template files

The ERR_SECURE_ACCEPT_FAIL and ERR_REQUEST_START_TIMEOUT errors apears that
have missing templates on squid startup.
Actually these errors does not produce any error page. Move them under the
TCP_RESET error in err_type.h to mark them as optional.

This is a Measurement Factory project

8 years agorefresh_pattern regression was in 3.3, not 4.0
Amos Jeffries [Tue, 10 Nov 2015 09:18:41 +0000 (01:18 -0800)] 
refresh_pattern regression was in 3.3, not 4.0

8 years agoBug 4228: links with krb5 libs despite --without options
Amos Jeffries [Tue, 10 Nov 2015 09:12:31 +0000 (01:12 -0800)] 
Bug 4228: links with krb5 libs despite --without options

8 years agoext_kerberos_ldap_group_acl: Add missing workarounds for Heimdal Kerberos
Amos Jeffries [Tue, 10 Nov 2015 02:13:13 +0000 (18:13 -0800)] 
ext_kerberos_ldap_group_acl: Add missing workarounds for Heimdal Kerberos

error_message() function is not always provided.

8 years agoFix cache_peer forceddomain= in CONNECT
Aymeric Vincent [Mon, 9 Nov 2015 21:38:44 +0000 (13:38 -0800)] 
Fix cache_peer forceddomain= in CONNECT

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

8 years agoHandshake Problem during Renegotiation
Christos Tsantilas [Mon, 9 Nov 2015 16:24:34 +0000 (18:24 +0200)] 
Handshake Problem during Renegotiation

Here is what happens:

   - Squid receives TLS Hello from the client (TCP connection A).
   - Squid successfully negotiates an TLS connection with the origin server
     (TCP connection B).
   - Squid successfully negotiates an TLS connection with the client
     (TCP connection A).
   - Squid marks connection B as "idle" and waits an HTTP request from
     connection A.
   - The origin server continues talking to Squid (TCP connection B).
     Squid detects a network read on an idle connection and closes TCP
     connection B (and then the associated TCP connection A as well).

This patch:
   - When squid detects a network read on server idle connection do an
     SSL_read to:
       a) see if application data received from server and abort in this case
       b) detect possible TLS error, or TLS shutdown message from server
       c) or ignore if only TLS protocol related packets received.

This is a Measurement Factory project

8 years agoQuieten ALE missing messages
Amos Jeffries [Sun, 8 Nov 2015 22:54:47 +0000 (14:54 -0800)] 
Quieten ALE missing messages

8 years agoFix compile erorr on clang undefined reference to '__atomic_load_8'
Amos Jeffries [Sun, 8 Nov 2015 15:09:16 +0000 (07:09 -0800)] 
Fix compile erorr on clang undefined reference to '__atomic_load_8'

Later versions of GCC on some architectures push atomic functions
out into a separate atomic library. Older versions of clang do not
handle that automatically and require the library to be linked
explicitly.

Add a check for when this is required and set ATOMICLIB if needed.

8 years agoBug 4371: compile errors: no such file or directory: DiskIO/*/*DiskIOModule.o
Amos Jeffries [Sun, 8 Nov 2015 13:32:16 +0000 (05:32 -0800)] 
Bug 4371: compile errors: no such file or directory: DiskIO/*/*DiskIOModule.o

8 years agoSourceFormat Enforcement
Source Maintenance [Sat, 7 Nov 2015 12:12:13 +0000 (12:12 +0000)] 
SourceFormat Enforcement

8 years agoSplit core Server operations from ConnStateData
Amos Jeffries [Sat, 7 Nov 2015 12:08:33 +0000 (04:08 -0800)] 
Split core Server operations from ConnStateData

This improves the servers/libserver.la class hierarchy in
preparation for HTTP/2 and other non-HTTP/1.1 protocol support.

The basic I/O functionality of ConnStateData is moved to Server
class and a set of virtual methods designed to allow for child
class implementation of data processing operations.

No logic is changed in this patch, just symbol renaming and
moving of method logics as-is into libservers.la

8 years agoFix SSL_get_certificate() problem detection
Stuart Henderson [Sat, 7 Nov 2015 06:30:27 +0000 (22:30 -0800)] 
Fix SSL_get_certificate() problem detection

The autoconf check for SQUID_SSLGETCERTIFICATE_BUGGY fails on ssl library
builds which don't include SSLv3; as a result of the autoconf decision
this can end up triggering the assert(0) in Ssl::verifySslCertificate()
in ssl/support.cc (line 1712 in 3.5.11).

8 years agoSourceFormat Enforcement
Source Maintenance [Fri, 6 Nov 2015 18:12:11 +0000 (18:12 +0000)] 
SourceFormat Enforcement

8 years agoAllow unlimited LDAP search filter for ext_ldap_group_acl helper.
Christos Tsantilas [Fri, 6 Nov 2015 17:08:02 +0000 (19:08 +0200)] 
Allow unlimited LDAP search filter for ext_ldap_group_acl helper.

The LDAP search filter in ext_ldap_group_acl is limited to 256 characters.
In some environments the user DN or group filter can be larger than this
limitation.
This patch uses dynamic allocated buffers for LDAP search filters.

This is a Measurement Factory project

8 years agoFix variable clone shadowing method symbol
Amos Jeffries [Fri, 6 Nov 2015 10:06:53 +0000 (02:06 -0800)] 
Fix variable clone shadowing method symbol

8 years agoConvert cacheDigestInit to method
Amos Jeffries [Fri, 6 Nov 2015 09:35:26 +0000 (01:35 -0800)] 
Convert cacheDigestInit to method

8 years agoConvert cacheDigestBitUtil to a method
Amos Jeffries [Fri, 6 Nov 2015 07:34:54 +0000 (23:34 -0800)] 
Convert cacheDigestBitUtil to a method

Also, convert from int output to double. Avoiding implicit cast wrap,
overflow and signed/unsigned data inaccuracy.

8 years agoConvert add/remove functions to methods
Amos Jeffries [Thu, 5 Nov 2015 18:23:13 +0000 (10:23 -0800)] 
Convert add/remove functions to methods

8 years agoConvert cacheDigestCalcMaskSize and cacheDigestTest to methods
Amos Jeffries [Thu, 5 Nov 2015 18:13:31 +0000 (10:13 -0800)] 
Convert cacheDigestCalcMaskSize and cacheDigestTest to methods

8 years agoRemove unnecessary modification of bits_per_entry
Amos Jeffries [Thu, 5 Nov 2015 17:01:26 +0000 (09:01 -0800)] 
Remove unnecessary modification of bits_per_entry

8 years agoMake cacheDigestChangeCap() a method
Amos Jeffries [Thu, 5 Nov 2015 16:58:09 +0000 (08:58 -0800)] 
Make cacheDigestChangeCap() a method

* Rename to updateCapacity(int)

* Also, use updateCapacity() instead of *Init() to construct the digest

8 years agoConvert cacheDigestClear() to method
Amos Jeffries [Thu, 5 Nov 2015 16:27:43 +0000 (08:27 -0800)] 
Convert cacheDigestClear() to method

8 years agoPolished cache_peer_access and related documentation.
Alex Rousskov [Thu, 5 Nov 2015 15:50:04 +0000 (08:50 -0700)] 
Polished cache_peer_access and related documentation.

Admins complained that it is not clear how cache_peer_access is
evaluated and how it interacts with cache peer selection algorithms.

8 years agoConvert cacheDigestClone() to member
Amos Jeffries [Thu, 5 Nov 2015 15:37:50 +0000 (07:37 -0800)] 
Convert cacheDigestClone() to member

8 years agoMove cacheDigestDestroy to CacheDigest destructor
Amos Jeffries [Thu, 5 Nov 2015 14:10:02 +0000 (06:10 -0800)] 
Move cacheDigestDestroy to CacheDigest destructor

8 years agoRemove now useless include in mem/old_api.cc
Amos Jeffries [Thu, 5 Nov 2015 13:32:30 +0000 (05:32 -0800)] 
Remove now useless include in mem/old_api.cc

8 years agoConvert CacheDigest to MEMPROXY_CLASS
Amos Jeffries [Thu, 5 Nov 2015 12:55:45 +0000 (04:55 -0800)] 
Convert CacheDigest to MEMPROXY_CLASS

* Convert cacheDigestCreate to CacheDigest constructor

* Update cacheDigestDestroy to use delete operator

8 years agoBug 4374: refresh_pattern config parser (%)
Amos Jeffries [Wed, 4 Nov 2015 16:42:55 +0000 (08:42 -0800)] 
Bug 4374: refresh_pattern config parser (%)

8 years agoMake FATAL messages have a consistent prefix
Amos Jeffries [Tue, 3 Nov 2015 14:42:13 +0000 (06:42 -0800)] 
Make FATAL messages have a consistent prefix

8 years agoBug 4373: assertion failed: client_side_request.cc:1709: 'calloutContext->redirect_st...
Amos Jeffries [Tue, 3 Nov 2015 13:05:03 +0000 (05:05 -0800)] 
Bug 4373: assertion failed: client_side_request.cc:1709: 'calloutContext->redirect_state == REDIRECT_NONE'

8 years ago4.0.2 SQUID_4_0_2
Amos Jeffries [Sun, 1 Nov 2015 12:17:11 +0000 (04:17 -0800)] 
4.0.2