]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
10 years agoBug 4293: wrong SNI sent to server after URL-rewrite
Alex Wu [Sat, 1 Aug 2015 05:59:31 +0000 (22:59 -0700)] 
Bug 4293: wrong SNI sent to server after URL-rewrite

10 years agoAdd ENABLE_POD2MAN_DOC automake conditional for pod2man builds
Amos Jeffries [Sat, 1 Aug 2015 01:09:59 +0000 (18:09 -0700)] 
Add ENABLE_POD2MAN_DOC automake conditional for pod2man builds

10 years agobasic_smb_auth: rejecting valid credentials
Unknown - Debian Project [Fri, 31 Jul 2015 20:17:23 +0000 (13:17 -0700)] 
basic_smb_auth: rejecting valid credentials

basic_smb_auth.sh delivers the credentials via environment in
a form "$USER%$PASSWORD", which is not expected from smbclient. This seem to
result from an obsolete or inferior documentation of smbclient. While it is
perfectly valid to deliver the credentials in this form via commandline
parameter -U, for example in

  smbclient //domain_controller/NETLOGON -d 0 -E -W windows_domain -c "get
  proxyauth -" -U herrmann%mysecurepassword 2>/dev/null

this form is not valid, when the credentials will be delivered via environment.

Via environment the credentials must be delivered in two separate variables
  USER=$USER%
  PASSWD=$PASSWORD.

10 years agobasic_smb_auth: doesn't handle passwords with backslashes
Jeff Licquia [Fri, 31 Jul 2015 20:13:45 +0000 (13:13 -0700)] 
basic_smb_auth: doesn't handle passwords with backslashes

 From; Jeff Licquia <jlicquia@scinet.springfieldclinic.com>
 Subject; squid: SMB auth proxy has problems with some passwords
 Date; Tue, 18 Jul 2000 12:45:01 -0500 (CDT)

The SMB authenticator doesn't handle passwords with backslashes in them
correctly.  The fix appears to be easy; just put a -r in the "read SMBPASS"
line in smb_auth.sh.

10 years agobasic_smb_auth: nmblookup fails when smb.conf contaisn WINS servers
John M Cooper [Fri, 31 Jul 2015 20:12:12 +0000 (13:12 -0700)] 
basic_smb_auth: nmblookup fails when smb.conf contaisn WINS servers

 From; John M Cooper
 To; Debian Bug Tracking System
 Subject; squid: smb_auth does not work with a wins server defined in smb.conf
 Date; 28 Jan 2002 17:46:13 +0000

If you define a wins server in the file /etc/samba/smb.conf then the
smb_auth script gets the wrong Domain Controller IP address.

There should be a change to smb_auth.sh at line 50

basically adding in the extra "\..+" stops the number of Wins servers
from being returned from the nmblookup command.

10 years agoDocs: fix man(8) page syntax for lexgrof tool
Amos Jeffries [Fri, 31 Jul 2015 19:51:29 +0000 (12:51 -0700)] 
Docs: fix man(8) page syntax for lexgrof tool

10 years agoMake pod2man an optional dependency
Amos Jeffries [Fri, 31 Jul 2015 04:13:29 +0000 (21:13 -0700)] 
Make pod2man an optional dependency

Documentation files can be built on a best-effort basis. This allows
Squid more helpers to be built without pod2man and sub-dependencies.

configure.ac already checks for pod2man existence and sets appropriate
automake conditionals.

10 years agoHandle exceptions during squid.conf parse
Amos Jeffries [Wed, 29 Jul 2015 08:56:44 +0000 (01:56 -0700)] 
Handle exceptions during squid.conf parse

Increasingly code used inside squid.conf parsing is capable of throwing
exceptions to signal errors. Catch any unexpected exceptions that reach
the config parse initiator(s) and report as a FATAL event before self
destructing.

 Detected by Coverity Scan. Issue 1231352

10 years agoWhen SBuf chop()s away everything, always clear the buffer.
Alex Rousskov [Wed, 29 Jul 2015 08:54:08 +0000 (01:54 -0700)] 
When SBuf chop()s away everything, always clear the buffer.

The old code was trying to make the clearance decision without
normalizing parameters first and missed most cases as the result.

In theory, clear()ing SBuf during chop() is just an optimization
that should have no effect on correct code functionality.

10 years agoCleanup: avoid mentioning compiler directives in configure output
Amos Jeffries [Wed, 29 Jul 2015 08:51:50 +0000 (01:51 -0700)] 
Cleanup: avoid mentioning compiler directives in configure output

In particular -march=native. It confuses some downstream build tools
to encounter the option in its full name form.

10 years agoBug 4251: incorrect instance name for memory segments in /dev/shm
Jose Luis Godoy [Sat, 25 Jul 2015 16:31:02 +0000 (09:31 -0700)] 
Bug 4251: incorrect instance name for memory segments in /dev/shm

10 years agoBug 3345: Support %un (any available user name) format code for external ACLs.
Amos Jeffries [Sat, 25 Jul 2015 16:25:42 +0000 (09:25 -0700)] 
Bug 3345: Support %un (any available user name) format code for external ACLs.

The same %un code, with the same meaning is already supported in access.log.
In an external ACL request, it expands to the first available user name
from the following list of information sources:

  - authenticated user name, like %ul or %LOGIN
  - user name supplied by an external ACL to Squid via the "user=..."
    key=value pair, like %ue or %EXT_USER
  - SSL client name, like %us
  - ident user name, like %ui

Based on Amos Jeffries 2011 patch and "arronax28" design:
http://www.squid-cache.org/mail-archive/squid-dev/201112/0080.html
with TODO completion by Measurement Factory

10 years agoAUFS: Raise I/O queue congestion limits
Amos Jeffries [Fri, 24 Jul 2015 13:32:26 +0000 (06:32 -0700)] 
AUFS: Raise I/O queue congestion limits

... from 8 to 8196 before initial congestion message appears.

Modern networks can be quite busy and even amateur installations have a
much higher I/O throughput than Squid was originally designed for. This
often results in a series of "Queue congestion" warnings appearing on
startup before Squid learns what the local environment requires.

The new limit helps to cater for this and reduce teh frequency of
unnecessary warnings. They may still occur, so debug output is also
updated to show what the queue length has grown to with each warning.

Also updating the congestion counter from 32-bit to 64-bit unsigned
since the new limit already consumes half the available growth bits in
32-bit integer.

NP: this update was triggered by reports from admin with proxies needing
    to expand AIO queues to over 4K entries on startup.

10 years agoImprove handling of client connections on shutdown
Amos Jeffries [Fri, 24 Jul 2015 13:30:14 +0000 (06:30 -0700)] 
Improve handling of client connections on shutdown

When Squid which are processing a lot of traffic, using persistent
client connections, or dealing with long duration requests are shutdown
they can exit with a lot of connections still open. The
shutdown_lifetime directive exists to allow time for existing
transactions to complete, but this is not always possible and has no
effect on idle connections.

The result is a large dump of aborted FD entries being logged as the TCP
sockets get abruptly reset. Potentially active transactions cache
objects being "corrupted" in the process.

Makes ConnStateData and its children implement Runner API callbacks
to receive signals about Squid shutdown. Which allows their close()
handlers to be run properly and make use of AsyncCalls API. Idle client
connections are closed immediately on the startShutdown() signal, so
their closure CPU cycles happens during the shutdown grace period.

An extra 0-delay event step is added to SignalEngine shutdown sequence
with a new Runner registry hook 'endingShutdown' is added to signal that
the shutdown_lifetime grace period is over for closure of active
transactions. All network FD sockets should be considered unusable for
read()/write() at that point since close handlers may have already been
scheduled by other Runners. AsyncCall's may still be scheduled to
release resources.

Also adds a DeregisterRunner() API action to remove Runners dynamically
from the registered set.

The Squid shutdown sequence is now:

* shutdown signal received:
 - listening sockets closed
 - idle client connections closed

* shutdown grace period ends:
 - remaining client connections closed

* shutdown finishes:
 - main signal and Async loop halted
 - all memory free'd

Server connections which are PINNED or in active use during the
endingShutdown execution will be closed cleanly as a side-effect of the
client closures. Otherwise there is no change (yet) to server connections
or other FD sockets behaviour on shutdown.

10 years agoAvoid SSL certificate db corruption with empty index.txt as a symptom.
Christos Tsantilas [Thu, 16 Jul 2015 07:24:24 +0000 (00:24 -0700)] 
Avoid SSL certificate db corruption with empty index.txt as a symptom.

* Detect cases where the size file is corrupted or has a clearly wrong
  value. Automatically rebuild the database in such cases.

* Teach ssl_crtd to keep running if it is unable to store the generated
  certificate in the database. Return the generated certificate to Squid
  and log an error message in such cases.

Background:

There are cases where ssl_crtd may corrupt its certificate database.
The known cases manifest themselves with an empty db index file.  When
that happens, ssl_crtd helpers quit, SSL bumping does not work any more,
and the certificate DB has to be deleted and re-initialized.

We do not know exactly what causes corruption in deployments, but one
known trigger that is easy to reproduce in a lab is the block size
change in the ssl_crtd configuration. That change has the following
side-effects:

1. When ssl_crtd removes certificates, it computes their size using a
   different block size than the one used to store the certificates.
   This is may result in negative database sizes.

2. Signed/unsigned conversion results in a huge number near LONG_MAX,
   which is then written to the "size" file.

3. The ssl_crtd helper remoces all certificates from database trying to make
   space for new certificates.

4. The ssl_crtd helper refuses to store new certificates because the
   database size (as described by the "size" file) still exceeds the
   configured limit.

5. The ssl_crtd helper exits because it cannot store a new certificates
   to the database. No helper response is sent to Squid in this case.

Most likely, there are other corruption triggers -- the database
management code is of an overall poor quality. This change resolves some
of the underlying problems in hope to address at least some of the
unknown triggers as well as the known one.

This is a Measurement Factory project.

10 years agoErrors served using invalid certificates when dealing with SSL server errors.
Christos Tsantilas [Thu, 16 Jul 2015 07:14:42 +0000 (00:14 -0700)] 
Errors served using invalid certificates when dealing with SSL server errors.

When bumping Squid needs to send an Squid-generated error "page" over a
secure connection, Squid needs to generate a certificate for that connection.
Prior to these changes, several scenarios could lead to Squid generating
a certificate that clients could not validate. In those cases, the user would
get a cryptic and misleading browser error instead of a Squid-generated
error page with useful details about the problem.

For example, is a server certificate that is rejected by the certificate
validation helper. Squid no longer uses CN from that certificate to generate
a fake certificate.

Another example is a user accessing an origin server using one of its
"alternative names" and getting a Squid-generated certificate containing just
the server common name (CN).

These changes make sure that certificate for error pages is generated using
SNI (when peeking or staring, if available) or CONNECT host name (including
server-first bumping mode). We now update the ConnStateData::sslCommonName
field (used as CN field for generated certificates) only _after_ the server
certificate is successfully validated.

This is a Measurement Factory project.

10 years agoIPv6: improve BCP 177 compliance
Amos Jeffries [Thu, 16 Jul 2015 07:01:37 +0000 (00:01 -0700)] 
IPv6: improve BCP 177 compliance

Always perform the IP transport probes to detect IPv6 availability.

* Accept lack of IPv6 assignment as per normal by auto-disabling IPv6.

* Whine loudly if (and only if) it would have worked but has been
  forced OFF by --disable-ipv6.

10 years agoPolish debugs on NAT failure
Amos Jeffries [Thu, 16 Jul 2015 07:00:12 +0000 (00:00 -0700)] 
Polish debugs on NAT failure

10 years agoFix crash in TcpAccepter with profiler enabled
Amos Jeffries [Thu, 16 Jul 2015 06:59:08 +0000 (23:59 -0700)] 
Fix crash in TcpAccepter with profiler enabled

10 years agoSplice to origin cache_peer.
Christos Tsantilas [Tue, 14 Jul 2015 17:51:21 +0000 (10:51 -0700)] 
Splice to origin cache_peer.

Currently, Squid cannot redirect intercepted connections that are subject to
SslBump rules to _originserver_ cache_peer. For example, consider Squid that
enforces "safe search" by redirecting clients to forcesafesearch.example.com.
Consider a TLS client that tries to connect to www.example.com. Squid needs to
send that client to forcesafesearch.example.com (without changing the host
header and SNI information; those would still point to www.example.com for
safe search to work as intended!).

The admin may configure Squid to send intercepted clients to an originserver
cache_peer with the forcesafesearch.example.com address. Such a configuration
does not currently work together with ssl_bump peek/splice rules.

This patch:

* Fixes src/neighbors.cc bug which prevented CONNECT requests from going
  to originserver cache peers. This bug affects both true CONNECT requests
  and intercepted SSL/TLS connections (with fake CONNECT requests). Squid
  use the CachePeer::in_addr.port which is not meant to be used for the HTTP
  port, apparently. HTTP checks should use CachePeer::http_port instead.

* Changes Squid to not initiate SSL/TLS connection to cache_peer for
  true CONNECT requests.

* Allows forwarding being-peeked (or stared) at connections to originserver
  cache_peers.

The bug fix described in the first bullet makes the last two changes
necessary.

This is a Measurement Factory project.

10 years agoBug 4227: invalid key in AuthUserHashPointer causing assertation failure
Manuel Meitinger [Tue, 7 Jul 2015 08:42:54 +0000 (01:42 -0700)] 
Bug 4227: invalid key in AuthUserHashPointer causing assertation failure

Temporary workaroudn patch, reverting SBuf conversion of AuthUser key
data storage.

NOTE:
    This patch is applied to 3.5 series only.
    Squid-4 series and later are not yet fixed.

10 years ago3.5.6 SQUID_3_5_6
Amos Jeffries [Fri, 3 Jul 2015 09:11:09 +0000 (02:11 -0700)] 
3.5.6

10 years agoext_edirectory_userip_acl: fix uninitialized variable
Amos Jeffries [Wed, 1 Jul 2015 11:34:25 +0000 (04:34 -0700)] 
ext_edirectory_userip_acl: fix uninitialized variable

 Detected by Coverity Scan. Issue 1258704

10 years agoDo not blindly forward cache peer CONNECT responses.
Alex Rousskov [Wed, 1 Jul 2015 06:26:38 +0000 (23:26 -0700)] 
Do not blindly forward cache peer CONNECT responses.

Squid blindly forwards cache peer CONNECT responses to clients. This
may break things if the peer responds with something like HTTP 403
(Forbidden) and keeps the connection with Squid open:
  -  The client application issues a CONNECT request.
  -  Squid forwards this request to a cache peer.
  -  Cache peer correctly responds back with a "403 Forbidden".
  -  Squid does not parse cache peer response and
     just forwards it as if it was a Squid response to the client.
  -  The TCP connections are not closed.

At this stage, Squid is unaware that the CONNECT request has failed. All
subsequent requests on the user agent TCP connection are treated as
tunnelled traffic. Squid is forwarding these requests to the peer on the
TCP connection previously used for the 403-ed CONNECT request, without
proper processing. The additional headers which should have been applied
by Squid to these requests are not applied, and the requests are being
forwarded to the cache peer even though the Squid configuration may
state that these requests must go directly to the origin server.

This fixes Squid to parse cache peer responses, and if an error response
found, respond with "502 Bad Gateway" to the client and close the
connections.

10 years agoBug 3483: assertion failed store.cc:1866: 'isEmpty()'
Chudy Fernandez [Wed, 1 Jul 2015 04:40:00 +0000 (21:40 -0700)] 
Bug 3483: assertion failed store.cc:1866: 'isEmpty()'

10 years agoUse relative-URL in errorpage.css for SN.png
Amos Jeffries [Sun, 28 Jun 2015 10:13:58 +0000 (03:13 -0700)] 
Use relative-URL in errorpage.css for SN.png

Modern browsers now seem to be accepting relative-URLs in CSS, and Squid
global_internal_static non-https:// URLs are working (bug 4132). So we
can do this now without as many failures.

10 years agoBug 4193: Memory leak on FTP listings
Matthias Pitzl [Sun, 28 Jun 2015 10:12:54 +0000 (03:12 -0700)] 
Bug 4193: Memory leak on FTP listings

10 years agoBug 4274: ssl_crtd.8 not being installed
Amos Jeffries [Sun, 28 Jun 2015 10:11:34 +0000 (03:11 -0700)] 
Bug 4274: ssl_crtd.8 not being installed

10 years agoFix CONNECT failover to IPv4 after trying broken IPv6 servers
Amos Jeffries [Sun, 28 Jun 2015 10:09:15 +0000 (03:09 -0700)] 
Fix CONNECT failover to IPv4 after trying broken IPv6 servers

This makes CONNECT tunnel connection attempts obey forward_timeout
and continue retrying instead of aborting with a client error when one
possible server hits a connect_timeout.

10 years agoFixed segfault when freeing https_port clientca on reconfigure or exit.
Alex Rousskov [Sun, 28 Jun 2015 10:05:58 +0000 (03:05 -0700)] 
Fixed segfault when freeing https_port clientca on reconfigure or exit.

AnyP::PortCfg::clientCA list was double-freed because the SSL context takes
ownership of the STACK_OF(X509_NAME) supplied via SSL_CTX_set_client_CA_list(),
but Squid was not aware of that. Squid now supplies a clone of clientCA.

10 years agoTLS: Disable client-initiated renegotiation
Paulo Matias [Sun, 28 Jun 2015 10:04:16 +0000 (03:04 -0700)] 
TLS: Disable client-initiated renegotiation

Hardening against CVE-2009-3555 mitigating a DoS attack which
might be possible with some builds of the OpenSSL library.

10 years agoTranslations: add Spanish US dialect alias
Amos Jeffries [Mon, 22 Jun 2015 03:53:34 +0000 (20:53 -0700)] 
Translations: add Spanish US dialect alias

10 years agoCleanup: replace __DATE__ and __TIME__ macros
Amos Jeffries [Mon, 22 Jun 2015 03:50:59 +0000 (20:50 -0700)] 
Cleanup: replace __DATE__ and __TIME__ macros

... with code VERSION and SQUID_BUILD_INFO maros.

This allows separately built binaries to be compared for equivalence. A
small security check, but useful.

10 years agoFix assertion String.cc:221: "str"
Christos Tsantilas [Fri, 5 Jun 2015 23:46:42 +0000 (16:46 -0700)] 
Fix assertion String.cc:221: "str"

This bug can be caused by certificates does not contain a CN field. In this
case the Ssl::ErrorDetail::cn method may return NULL causing this assertion
somewhere inside Ssl::ErrorDetail::buildDetail method, which expects always
a non NULL value from Ssl::ErrorDetail::cn and similar methods.

This patch try to hardening the Ssl::ErrorDetail error formating functions to
avoid always check for NULL values and also avoid sending wrong information
for various certificate fields in the case of an error while extracting the
information from certificate..

This is a Measurement Factory project

10 years agoFix assertion comm.cc:759: "Comm::IsConnOpen(conn)" in ConnStateData::getSslContextDone
Christos Tsantilas [Fri, 5 Jun 2015 23:41:22 +0000 (16:41 -0700)] 
Fix assertion comm.cc:759: "Comm::IsConnOpen(conn)" in ConnStateData::getSslContextDone

This is an ssertion inside ConnStateData::getSslContextDone while
setting timeout. The reason is that the ConnStateData::clientConnection
may closed while waiting response from ssl_crtd helper.

This is a Measurement Factory project

10 years agoBug 3875: bad mimeLoadIconFile error handling
Amos Jeffries [Fri, 5 Jun 2015 23:38:34 +0000 (16:38 -0700)] 
Bug 3875: bad mimeLoadIconFile error handling

Improve the MimeIcon reliability when filesystem I/O errors or others
cause the icon data to not be loadable.

The loading process is re-worked to guarantee that once the
MimeIon::created callback occurs it will result in a valid StoreEntry in
the cache representing the wanted icon.

* If the image can be loaded without any issues it will be placed in
the cache as a 200 response.

* If errors prevent the image being loaded or necessary parameters
(size and mtime) being known a 204 object will be placed into the cache.

NP: There is no clear agreement on 204 being 'the best' status for this
case. 500 Internal Error is also appropriate. I have use 204 since:

* the bug is not in the clients request (eliminating 400, 404, etc),
* a 500 would be revealing details about server internals unnecessarily
   often and incur extra complexity creating the error page.
* 204 also avoids needing to send Content-Length, Cache-Control header
  and body object (bandwidth saving over 500 status).

NP: This started with just correcting the errno usage, but other bugs
promptly started appearing once I got to seriously testing this load
process. So far it fixes:
* several assertions resulting from StoreEntry being left invalid in
  cache limbo beween created hash entries and valid mem_obj data.
* repeated attempts on startup to load absent icons files which dont
  exist in the filesystem.
* buffer overfow on misconfigured or corrupt mime.conf file entries
* incorrect debugs messages about file I/O errors
* large error pages delivered when icons not installed (when it does
  not assert from the StoreEntry)

10 years agoSupport custom OIDs in *_cert ACLs
Christos Tsantilas [Fri, 5 Jun 2015 23:30:10 +0000 (16:30 -0700)] 
Support custom OIDs in *_cert ACLs

This patch allow user_cert and ca_cert ACLs to match arbitrary
stand-alone OIDs (not DN/C/O/CN/L/ST objects or their substrings).
For example, should be able to match certificates that have
1.3.6.1.4.1.1814.3.1.14 OID in the certificate Subject or Issuer field.

Squid configuration would look like this:
 acl User_Cert-TrustedCustomerNum user_cert 1.3.6.1.4.1.1814.3.1.14 1001

This is a Measurement Factory project

10 years agoBug 3329: The server side pinned connection is not closed properly
Christos Tsantilas [Fri, 5 Jun 2015 23:22:22 +0000 (16:22 -0700)] 
Bug 3329: The server side pinned connection is not closed properly

... in ConnStateData::clientPinnedConnectionClosed CommClose handler.

Squid enters a buggy state when an idle connection pinned to a peer closes:

 - The ConnStateData::clientPinnedConnectionRead, the pinned peer
   connection read handler, is called with the io.flag set to
   Comm::ERR_CLOSING. The read handler does not close the peer
   Comm::Connection object. This is correct and expected -- the I/O
   handler must exit on ERR_CLOSING without doing anything.

 - The ConnStateData::clientPinnedConnectionClosed close handler is called,
   but it does not close the peer Comm::Connection object either. Again,
   this is correct and expected -- the close handler is not the place to
   close a being-closed connection.

 - The corresponding fde object is marked as closed (fde::flags.open
   is false), but the peer Comm::Connection object is still open
   (Comm::Connection.fd >= 0)! From this point on, we have an inconsistency
   between the peer Comm::Connection object state and the real world.

 - When the ConnStateData::pinning::serverConnection object is later
   destroyed (by refcounting), it will try to close its fd. If that fd
   is already in use (e.g., by another Comm::Connection), bad things
   happen (crashes, segfaults, etc). Otherwise (i.e., if that fd is
   not open), comm_close may cry about BUG 3556 (or worse).

To fix this problem, we must not allow Comm::Connections to get out
of sync with fd_table, even when a descriptor is closed without going
through Connection::close(). There are two ways to accomplished that:

 * Change Comm to always store Comm::Connections and similar high-level
   objects instead of fdes. This is a huge change that has been long on
   the TODO list (those "other high-level objects" is on of the primary
   obstacles there because not everything with a FD is a Connection).

 * Notify Comm::Connections about closure in their closing handlers
   (this change). This design relies on every Comm::Connection having
   a close handler that notifies it. It may take us some time to reach
   that goal, but this change is the first step providing the necessary
   API, a known bug fix, and a few preventive changes.

This change:

 - Adds a new Comm::Connection::noteClosure() method to inform the
   Comm::Connection object that somebody is closing its FD.

 - Uses the new method inside ConnStateData::clientPinnedConnectionClosed
   handler to inform the ConnStateData::pinning::serverConnection object
   that its FD is being closed.

 - Replaces comm_close calls which may cause bug #3329 in other places with
   Comm::Connection->close() calls.

Initially based on Nathan Hoad research for bug 3329.

This is a Measurement Factory project.

10 years ago3.5.5 SQUID_3_5_5
Amos Jeffries [Thu, 28 May 2015 11:01:47 +0000 (04:01 -0700)] 
3.5.5

10 years agoPortability: migrate auto_ptr to C++11 unique_ptr
Amos Jeffries [Wed, 27 May 2015 23:28:09 +0000 (16:28 -0700)] 
Portability: migrate auto_ptr to C++11 unique_ptr

Improving the backward compatibility workaround for older compilers.

This is required for GCC 5.x which does not include any auto_ptr support
or compatibility at all.

This does apply for 3.5 where C++11 support is still optional, since it
is the portability definition to allow patch back-ports.

10 years agoPortability: Define nullptr if not provided
Amos Jeffries [Wed, 27 May 2015 23:25:58 +0000 (16:25 -0700)] 
Portability: Define nullptr if not provided

For use building with non-C++11 compilers, or broken stdlib definitions.
In the absence of nullptr we define it to be a synonym for NULL.

Also, remove the old hack defining NULL in terms of nullptr. It has never
worked properly and C++11 compilers define NULL explicitly.

10 years agoCleanup: sync ModSelect.cc and ModSelectWin32.cc
Amos Jeffries [Sat, 23 May 2015 12:41:58 +0000 (05:41 -0700)] 
Cleanup: sync ModSelect.cc and ModSelectWin32.cc

10 years agoFix segmentation fault inside Adaptation::Icap::Xaction::swanSong
Christos Tsantilas [Sat, 23 May 2015 12:15:40 +0000 (05:15 -0700)] 
Fix segmentation fault inside Adaptation::Icap::Xaction::swanSong

The Adaptation::Icap::Xaction::swanSong may try to use an invalid
Icap::Xaction::cs object (Comm::ConnOpener object) if the  Comm::ConnOpener
is already gone (because its job finished) but the  Xaction::noteCommConnected
method is not called yet.

This patch makes the Adaptation::Icap::Xaction::cs object a CbcPointer instead
of a raw pointer and checks if the Xaction::cs object is still valid before
using it.

This is a Measurement Factory project

10 years agoFix "Not enough space to hold server hello message" error message
Christos Tsantilas [Fri, 22 May 2015 05:05:33 +0000 (22:05 -0700)] 
Fix "Not enough space to hold server hello message" error message

This patch merges the Ssl::ClientBio and Ssl::ServerBio read buffering code
to the Ssl::Bio::readAndBuffer method and uses the MemBuf::potentialSpaceSize
instead of MemBuf::spaceSize to check space size for SSL hello messages buffer,
to take in account available space after a possible buffer grow.

This is a Measurement Factory project

10 years agoBug 4132: regression in short_icon_urls with global_internal_static on
Andre Albsmeier [Fri, 22 May 2015 05:01:24 +0000 (22:01 -0700)] 
Bug 4132: regression in short_icon_urls with global_internal_static on

10 years agoPrevent unused ssl_crtd helpers being run
Amos Jeffries [Fri, 22 May 2015 04:55:35 +0000 (21:55 -0700)] 
Prevent unused ssl_crtd helpers being run

The conditions for when to start ssl_crtd helpers was ignoring the
generate-host-certificates=off option. Meaning most ssl-bump installs
were running them needlessly.

10 years agoDocs: fix debug output on https_port context failure
Amos Jeffries [Fri, 22 May 2015 04:54:27 +0000 (21:54 -0700)] 
Docs: fix debug output on https_port context failure

10 years agoHTTP/2: publish RFC 7540
Amos Jeffries [Fri, 22 May 2015 04:51:39 +0000 (21:51 -0700)] 
HTTP/2: publish RFC 7540

10 years agoFix incorrect use of errno in various libcomm.la places
Alex Dowad [Fri, 22 May 2015 04:47:22 +0000 (21:47 -0700)] 
Fix incorrect use of errno in various libcomm.la places

Fix problems with 'errno' in TcpAcceptor::Listen, Comm::HandleRead, and
Comm::HandleWrite. 'errno' is only valid after a standard library function
returns an error. Also, we must avoid calling out to other functions before
recording the value of 'errno', since they might overwrite it.

10 years agoBug 4236: SSL negotiation error of 'success'
Nathan Hoad [Fri, 22 May 2015 04:45:06 +0000 (21:45 -0700)] 
Bug 4236: SSL negotiation error of 'success'

10 years agoFix signal.h usage to resolve compiler warning
Alex Dowad [Fri, 22 May 2015 04:33:41 +0000 (21:33 -0700)] 
Fix signal.h usage to resolve compiler warning

When included, musl libc's sys/signal.h issues a compiler warning
stating that signal.h should be used directly instead. If gcc is
treating all warnings as errors, this breaks the build.

glibc's sys/signal.h does not contain any definitions; all it does
is include signal.h (indirectly). So directly including signal.h
doesn't break anything with glibc.

10 years agoBug 3930: assertion 'connIsUsable(http->getConn())'
Amos Jeffries [Fri, 22 May 2015 04:30:02 +0000 (21:30 -0700)] 
Bug 3930: assertion 'connIsUsable(http->getConn())'

10 years agoFix missing external ACL helper notes
Nathan Hoad [Fri, 22 May 2015 04:26:17 +0000 (21:26 -0700)] 
Fix missing external ACL helper notes

external ACL helper notes are only added onto the HTTP request that
kicked off the external ACL lookup, and not cached ACL responses.
This means if you set notes from an external ACL that are used for
some processing in other ACLs, or post-processing on logs, things
may be missed.

10 years agoBug 4238: assertion Read.cc:205: "params.data == data"
Christos Tsantilas [Mon, 11 May 2015 15:50:30 +0000 (08:50 -0700)] 
Bug 4238: assertion Read.cc:205: "params.data == data"

Inside IdleConnList::findUseable the IdleConnList::removeAt call can delete
"this" IdleConnList object. The IdleConnList::clearHandlers called imediatelly
after the removeAt method, will try to use the invalid "this" object in
a comm_read_cancel function call, causing this assertion or other similar.

This patch fixes the IdleConnList::findUseable, IdleConnList::pop and
IdleConnList::findAndClose methods to call IdleConnList::clearHandlers before
the IdleConnList::removeAt is called.

This is a Measurement Factory project

10 years agoDocs: remove 4.0-only info added by rev.13823
Amos Jeffries [Sun, 10 May 2015 06:59:41 +0000 (23:59 -0700)] 
Docs: remove 4.0-only info added by rev.13823

10 years agocomm_connect_addr on failures returns Comm:OK
Christos Tsantilas [Sat, 9 May 2015 11:51:06 +0000 (04:51 -0700)] 
comm_connect_addr on failures returns Comm:OK

NOTE: regression from bug 4324 patch in rev.13811

The comm_connect_addr on connect failures sets the xerrno to 0
and returns Comm::OK. This is causes problems on ConnOpener
class users which believes the connection is established and
it is ready for use.

 This is a Measurement Factory project

10 years agoDocs: shuffle SMP specific options to the top of squid.conf
Amos Jeffries [Sat, 9 May 2015 11:48:35 +0000 (04:48 -0700)] 
Docs: shuffle SMP specific options to the top of squid.conf

The workers directive is required to be used before several other
directives. It makes little sense to documents it after the controls
which depend on it.

Make a new config section to contain the SMP specific options.

10 years agoCacheMgr: display 'client_db off' instead of 0 clients accessing cache
Amos Jeffries [Sat, 9 May 2015 11:43:14 +0000 (04:43 -0700)] 
CacheMgr: display 'client_db off' instead of 0 clients accessing cache

... to clarify why there is no record of even the mgr request happening.
The client_db mechanism needs to be enabled and measuring traffic for
any useful client counter value to exist.

10 years agoFix assertion errorpage.cc:600: "entry->isEmpty()"
Christos Tsantilas [Sat, 9 May 2015 11:40:55 +0000 (04:40 -0700)] 
Fix assertion errorpage.cc:600: "entry->isEmpty()"

While squid shuting down, aborted transactions, for which body data already
downloaded, can cause this bug.

This is a Measurement Factory project

10 years agoFix assertion MemBuf.cc:380: "new_cap > (size_t) capacity" in SSL I/O buffer
Christos Tsantilas [Sat, 9 May 2015 11:24:04 +0000 (04:24 -0700)] 
Fix assertion MemBuf.cc:380: "new_cap > (size_t) capacity" in SSL I/O buffer

The maximum buffer size for holding Server and Client SSL hello messages is only
16k which is not enough hold a Hello message which includes some extensions and
1-2 or more Certificates.
This patch increases the maximum size to 65535 and also adds some checks to
avoid squid crashes in the case the hello messages buffer overflows.

This is a Measurement Factory project

10 years ago3.5.4 SQUID_3_5_4
Amos Jeffries [Fri, 1 May 2015 11:26:58 +0000 (04:26 -0700)] 
3.5.4

10 years agoPrep for 3.5.4, 3.4.13, 3.3.14, 3.2.14
Amos Jeffries [Fri, 1 May 2015 07:41:39 +0000 (00:41 -0700)] 
Prep for 3.5.4, 3.4.13, 3.3.14, 3.2.14

10 years agoFix X509 server certificate domain matching
Amos Jeffries [Fri, 1 May 2015 06:53:07 +0000 (23:53 -0700)] 
Fix X509 server certificate domain matching

The X509 certificate domain fields may contain non-ASCII encodings.
Ensure the domain match algorithm is only passed UTF-8 ASCII-compatible
strings.

10 years agoBug 3775: Disable HTTP/1.1 pipeline feature for pinned connections
Christos Tsantilas [Fri, 1 May 2015 06:43:48 +0000 (23:43 -0700)] 
Bug 3775: Disable HTTP/1.1 pipeline feature for pinned connections

10 years agoCleanup: Display correct error code in debugging output for IoCallback::finish
Alex Dowad [Fri, 1 May 2015 06:42:54 +0000 (23:42 -0700)] 
Cleanup: Display correct error code in debugging output for IoCallback::finish

It seems clear that the debugging log message in IoCallback::finish
was intended to display the arguments passed to the method.

10 years agoCleanup: Fix spelling error in debug message in parseHttpRequest()
Alex Dowad [Fri, 1 May 2015 06:41:16 +0000 (23:41 -0700)] 
Cleanup: Fix spelling error in debug message in parseHttpRequest()

10 years agoCleanup: Add whitespace to make debug message in writeComplete() more readable
Alex Dowad [Fri, 1 May 2015 06:40:28 +0000 (23:40 -0700)] 
Cleanup: Add whitespace to make debug message in writeComplete() more readable

10 years agoAdd Kerberos support for MAC OS X 10.x
Markus Moeller [Sun, 26 Apr 2015 16:55:18 +0000 (09:55 -0700)] 
Add Kerberos support for MAC OS X 10.x

10 years agoBug 4234: comm_connect_addr uses errno incorrectly
Alex Dowad [Sun, 26 Apr 2015 16:48:02 +0000 (09:48 -0700)] 
Bug 4234: comm_connect_addr uses errno incorrectly

comm_connect_addr() uses errno to determine whether library calls like connect()
are successful. Its callers also use errno for extra information on the cause
of any problem. However, after calling library functions like connect(),
comm_connect_addr() calls other library functions which can overwrite errno.

As the errno manpage explains, "a function that succeeds is allowed to change
errno". So even when nothing is wrong, comm_connect_addr() may return an error
flag if libc sets errno. And when something *is* wrong, incorrect error information
may be returned to the caller because errno was overwritten with a different code.

Correct this by using our own error code variable which is set only when a library
call fails. To avoid breaking callers, set errno before returning.

10 years agoFix 'access_log none' to prevent following logs being used
Amos Jeffries [Sun, 26 Apr 2015 16:45:36 +0000 (09:45 -0700)] 
Fix 'access_log none' to prevent following logs being used

The documented behaviour of "access_log none" for preventing logging
using log lines following the directive has not been working in
Squid-3 for some time.

Since the 'none' type does not have a log module associated the entire
switch logic where its abort is checked for was being skipped.

10 years agoUnexpected SQUID_X509_V_ERR_DOMAIN_MISMATCH errors while accessing sites with valid...
Christos Tsantilas [Sun, 26 Apr 2015 16:44:23 +0000 (09:44 -0700)] 
Unexpected SQUID_X509_V_ERR_DOMAIN_MISMATCH errors while accessing sites with valid certificates

A "const char *" pointer retrieved using the SBuf::c_str() method may attached
to an SSL object using the SSL_set_ex_data method as server name used to
validate server certificates. This pointer may become invalid, causing
the SQUID_X509_V_ERR_DOMAIN_MISMATCH errors.

This patch changes the type of the ssl_ex_index_server index used with the
SSL_set_ex_data function to be an SBuf object.

This is a Measurement Factory project

10 years agoDocs: Update CONTRIBUTORS
Source Maintenance [Thu, 23 Apr 2015 14:35:55 +0000 (14:35 +0000)] 
Docs: Update CONTRIBUTORS

10 years agoEnsure class Lock counter remains within bounds
Amos Jeffries [Thu, 23 Apr 2015 12:04:52 +0000 (05:04 -0700)] 
Ensure class Lock counter remains within bounds

10 years agoPortability: Add hacks to define C++11 explicit N-bit type limits
Amos Jeffries [Thu, 23 Apr 2015 12:03:38 +0000 (05:03 -0700)] 
Portability: Add hacks to define C++11 explicit N-bit type limits

Add cstdint and stdint.h to libcompat headers and ensure that type limits
used by Squid are always available. Mostly this involves shuffling
existing hacks into the compat headers but the UINT32_* limits are new.

10 years agoFix SSL_get_peer_certificate memory leak
Christos Tsantilas [Thu, 23 Apr 2015 11:55:57 +0000 (04:55 -0700)] 
Fix SSL_get_peer_certificate memory leak

The SSL_get_peer_certificate openSSL function increases the lock for X509
object it returns so X509 object retrieved using this function must be
released with X509_free after use.
This patch uses the Ssl::X509_Pointer TidyPointer to release X509 object
retrieved with the SSL_get_peer_certificate function inside the
Ssl::PeerConnector::handleNegotiateError method

This is a Measurement Factory project

10 years agoBug 4231 pt2: comm_open_uds does not provide description for newly opened FD
Amos Jeffries [Thu, 23 Apr 2015 11:44:47 +0000 (04:44 -0700)] 
Bug 4231 pt2: comm_open_uds does not provide description for newly opened FD

Thanks to Alex Dowad for identifying the problem.

10 years agoBug 4231 pt1: fd_open() not correctly handling empty descriptions
Alex Dowad [Thu, 23 Apr 2015 11:43:22 +0000 (04:43 -0700)] 
Bug 4231 pt1: fd_open() not correctly handling empty descriptions

10 years agoNegotiate Kerberos authentication request size exceeds output buffer size.
Christos Tsantilas [Mon, 20 Apr 2015 02:46:43 +0000 (19:46 -0700)] 
Negotiate Kerberos authentication request size exceeds output buffer size.

Despite the "must match" comment, MAX_AUTHTOKEN_LEN in
auth/UserRequest.h got out of sync with similar constants in Negotiate helpers.
A 32KB buffer cannot fit some helper requests (e.g., those carrying Privilege
Account Certificate information in the client's Kerberos ticket). Each truncated
request blocks the negotiate helper channel, eventually causing helper queue
overflow and possibly killing Squid.

This patch increases MAX_AUTHTOKEN_LEN in UserRequest.h to 65535 which
is also the maximum used by the negotiate helpers. The patch also adds checks
to avoid sending truncated requests, treating them as helper errors instead.

This is a Measurement Factory project.

10 years agoDo not increment an iterator invalidated by std::map::erase().
Alex Rousskov [Mon, 20 Apr 2015 02:41:44 +0000 (19:41 -0700)] 
Do not increment an iterator invalidated by std::map::erase().

10 years agoFix require-proxy-header preventing HTTPS proxying and ssl-bump
Yuhua Wu [Mon, 20 Apr 2015 02:38:20 +0000 (19:38 -0700)] 
Fix require-proxy-header preventing HTTPS proxying and ssl-bump

When require-proxy-header was used, the request->flags.interceptTproxy is
wrongly set to 1.

Since request->flags.interceptTproxy is 1, the 200 status code for CONNECT
call is not sent which breaks both HTTPS proxying and SSL-bump.

10 years agoFix atomics check broken by C++11 #include added in v3.5 branch r13783
Alex Rousskov [Fri, 17 Apr 2015 05:59:34 +0000 (23:59 -0600)] 
Fix atomics check broken by C++11 #include added in v3.5 branch r13783
(which was a fix for atomics check broken by v3.5 branch r13778).

10 years agoSupport for resuming TLS sessions
Christos Tsantilas [Wed, 15 Apr 2015 11:35:52 +0000 (04:35 -0700)] 
Support for resuming TLS sessions

This patch adds code in squid to control SslBump behavior when dealing with
"resuming SSL/TLS sessions". Without these changes, SslBump usually terminates
all resuming sessions with an error because such sessions do not include
server certificates, preventing Squid from successfully validating the server
identity.

After these changes, Squid splices resuming sessions. Splicing is the right
because Squid most likely has spliced the original connections that the client
and server are trying to resume now.
Without SslBump, session resumption would just work, and SslBump behaviour
should approach that ideal.

Future projects may add ACL checks for allowing resuming sessions and may
add more complex algorithms, including maintaining an SMP-shared
cache of sessions that may be resumed in the future and evaluating
client/server attempts to resume a session using that cache.

This patch also makes SSL client Hello message parsing more robust and
adds an SSL server Hello message parser.

Also add support for NPN (next protocol negotiation) and ALPN
(Application-Layer Protocol Negotiation) tls extensions, required to
correctly bump web clients support these extensions

Technical details
-----------------

In Peek mode, the old Squid code would forward the client Hello message to the
server. If the server tries to resume the previous (spliced) SSL session with
the client, then Squid SSL code gets an ssl/PeerConnector.cc "ccs received
early" error (or similar) because the Squid SSL object expects a server
certificate and does not know anything about the session being resumed.

With this patch, Squid detects session resumption attempts and splices

Session resumption detection
----------------------------

There are two mechanism in SSL/TLS for resuming sessions. The traditional
shared session IDs and the TLS ticket extensions:

* If Squid detects a shared ID in both client and server Hello messages, then
Squid decides whether the session is being resumed by comparing those client
and server shared IDs. If (and only if) the IDs are the same, then Squid
assumes that it is dealing with a resuming session (using session IDs).

* If Squid detects a TLS ticket in the client Hello message and TLS ticket
support in the server Hello message as well as a Change Cipher Spec or a New
TLS Ticket message (following the server Hello message), then (and only then)
Squid assumes that it is dealing with a resuming session (using TLS tickets).

The TLS tickets check is not performed if Squid detects a shared session ID
in both client and server Hello messages.

NPN and ALPN tls extensions
---------------------------

Even if squid has some SSL hello messages parsing code, we are relying to
OpenSSL for full parsing. The openSSL used in peek and splice mode to  parse
server hello message, check for errors and verify server certificates.
If the openSSL, while parses the server hello message, find an extension enabled
in the server hello message, which is not enabled in its side, fails with an
error ("...parse tlsext...").

OpenSSL supports NPN tls extension and from 1.0.2 release supports also the
ALPN tls extensions. In peek mode we are forwading the client SSL hello message
as is, and if this message include support for NPN or ALPN tls extension is
possible that the SSL server support them and include related extensions
in its response. The openSSL will fail if support for these extensions is
not enabled in its side.

This patch handles the NPN (TLSEXT_TYPE_next_proto_neg) as follows:
Try to select the http/1.1 protocol from the server protocols list. If the
http/1.1 is not supported then the SSL bumping will fail. This is valid
because only http protocol we are supporting in squid.
Splicing is not affected.

Also add support for the ALPN TLS extension. This extension is a replacement
for the NPN extension. The client sends a list of supported protocols. In the
case of stare mode squid now sends only http as supported protocol. In the
case of server-first or client-first bumbing modes, squid does enable this
extension.

The NPN supported by chromium browser the ALPN supported by firefox.
Support for ALPN is added to openSSL 1.0.2 release.
These extensions are used to support SPDY and similar protocols.

This is a Measurement Factory project.

10 years agoBug 4212: ssl_crtd crashes with corrupt database
Amos Jeffries [Tue, 14 Apr 2015 07:26:12 +0000 (00:26 -0700)] 
Bug 4212: ssl_crtd crashes with corrupt database

The fix for Bug 3664 "ssl_crtd fails to build on OpenSolaris/OpenIndiana/Solaris 11"
introduced a regression on BSD and Linux where lockf() implementations appear not to
lock the entire file correctly or as reliably as flock().

Reverting the flock/lockf change for non-Solaris OS.

10 years agoFix rev.13795 ServerName class
Amos Jeffries [Tue, 14 Apr 2015 07:20:32 +0000 (00:20 -0700)] 
Fix rev.13795 ServerName class

MEMPROXY_CLASS operates differently in v3.5 from v4

10 years agoAdd server_name ACL matching server name(s) obtained from various sources
Christos Tsantilas [Mon, 13 Apr 2015 05:59:05 +0000 (22:59 -0700)] 
Add server_name ACL matching server name(s) obtained from various sources

... such as CONNECT request URI, client SNI, and SSL server certificate CN.

During each SslBump step, Squid improves its understanding of a "true server
name", with a bias towards server-provided (and Squid-validated) information.

The server-provided server names are retrieved from the server certificate CN
and Subject Alternate Names. The new server_name ACL matches any of alternate
names and CN. If the CN or an alternate name is a wildcard, then the new ACL
matches any domain that matches the domain with the wildcard.

Other than supporting many sources of server name information (including
sources that may supply Squid with multiple server name variants and
wildcards), the new ACL is similar to dstdomain.

Also added a server_name_regex ACL.

This is a Measurement Factory project.

10 years agoBug 4226: digest_edirectory_auth: found but cannot be built
Amos Jeffries [Sat, 11 Apr 2015 01:52:02 +0000 (18:52 -0700)] 
Bug 4226: digest_edirectory_auth: found but cannot be built

10 years agoInvalid request->clientConnectionManager object used by Ssl::PeerConnector::handleNeg...
Christos Tsantilas [Thu, 9 Apr 2015 02:15:19 +0000 (19:15 -0700)] 
Invalid request->clientConnectionManager object used by Ssl::PeerConnector::handleNegotiateError

This patch adds the Ssl::ServerBio::bumpMode() method to retrieve the configured
mode from a ServerBio object, and uses this method for checking the bumping
mode inside Ssl::PeerConnector::handleNegotiateError method

This is a Measurement Factory project

10 years agoBug 4198: assertion failed: client_side.h:364: "sslServerBump == srvBump"
Christos Tsantilas [Thu, 9 Apr 2015 02:10:55 +0000 (19:10 -0700)] 
Bug 4198: assertion failed: client_side.h:364: "sslServerBump == srvBump"

After a failed http_access acl check of an HTTP request, tunneled through a
SSL bumped connection, ssl bumping code try to re-setup the connection for a
client-first bumping mode to serve the error crashing squid.

This is a Measurement Factory project

10 years agoFix cross-compile issues with SSL_get_certificate()
Amos Jeffries [Thu, 9 Apr 2015 02:08:31 +0000 (19:08 -0700)] 
Fix cross-compile issues with SSL_get_certificate()

Explicitly assume 'no' to these hacks when cross-compiling and create
the autoconf.h #define.

Thanks to Cambier Gaëtan for identifying the problem.

10 years agoDocs: RFC 7238 obsoleted by RFC 7538
Amos Jeffries [Thu, 9 Apr 2015 02:07:17 +0000 (19:07 -0700)] 
Docs: RFC 7238 obsoleted by RFC 7538

10 years agoBoilerplate: reference Translator copyrights in CREDITS
Amos Jeffries [Thu, 9 Apr 2015 02:03:40 +0000 (19:03 -0700)] 
Boilerplate: reference Translator copyrights in CREDITS

10 years agoCleanup: Place explicit size on ref-count lock counter
Amos Jeffries [Thu, 9 Apr 2015 02:01:55 +0000 (19:01 -0700)] 
Cleanup: Place explicit size on ref-count lock counter

This allows us to make explicit calculation of child object sizes in a
portable way despite differences in system 'unsigned' size.

10 years agoCleanup: extend SBuf debugging information
Amos Jeffries [Thu, 9 Apr 2015 02:00:54 +0000 (19:00 -0700)] 
Cleanup: extend SBuf debugging information

It can be hard determining what simple operations (ie cow(), grow()) are
being done no what SBuf object. Add the SBuf::id to debugs() output on
many more operations.

10 years agodigest_edirectory_auth: Fix -lnettle dependency error
Eray Aslan [Tue, 31 Mar 2015 10:34:51 +0000 (03:34 -0700)] 
digest_edirectory_auth: Fix -lnettle dependency error

10 years ago3.5.3 SQUID_3_5_3
Amos Jeffries [Sat, 28 Mar 2015 10:56:22 +0000 (03:56 -0700)] 
3.5.3

10 years agoFix Squid crash while an error page generated
Christos Tsantilas [Fri, 27 Mar 2015 11:12:42 +0000 (04:12 -0700)] 
Fix Squid crash while an error page generated

When squid generated an error page which contains the "%m" formating code
but the authentication information is not available squid dies with
segfault.

This is a Measurement Factory project

10 years agoFix rev.13778 GNU atomics detection, and enable caching for them
Francesco Chemolli [Fri, 27 Mar 2015 10:48:37 +0000 (03:48 -0700)] 
Fix rev.13778 GNU atomics detection, and enable caching for them

10 years agoRework SBufStatsAction registration to use explicit code path
Henrik Nordstrom [Sat, 21 Mar 2015 08:16:46 +0000 (01:16 -0700)] 
Rework SBufStatsAction registration to use explicit code path

GCC was not happy about the global level registration "variable" not
being used

10 years agoBug 4206: Regression in expect:100-continue
Mike Mitchell [Sat, 21 Mar 2015 07:53:13 +0000 (00:53 -0700)] 
Bug 4206: Regression in expect:100-continue

10 years agoBug 4204: ./configure does not abort when required helpers cannot be built
Amos Jeffries [Sat, 21 Mar 2015 07:50:49 +0000 (00:50 -0700)] 
Bug 4204: ./configure does not abort when required helpers cannot be built