Created by Alex Rousskov and last modified
Get this branch:
bzr branch lp:~rousskov/squid/3p1-rock
Only Alex Rousskov can upload to this branch. If you are Alex Rousskov please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Alex Rousskov

Recent revisions

9640. By Alex Rousskov on 2012-08-30

Log TCP_IMS_HIT status when sending a hit due to If-None-Match mismatch.

We used to log TCP_MISS instead, which was wrong because this is a pure
hit case (the origin server is not contacted at all).

TODO: Consider adding a more precise/specific TCP_INM_HIT request status.

9639. By Alex Rousskov on 2012-08-30

Bug 3063 workaround: Avoid "server_fd == fd" assertion in forward.cc.

Ignore connection closure notifications that arrived after we are already done
using the connection. It is not clear whether such late notifications are

If notification is inconsistent, bail instead of asserting. This part may need
more work because it is not clear whether it is safe to call errorCon() and
decrease self refcount in this case.

9638. By Alex Rousskov on 2012-08-30

If a worker process crashes during shutdown, dump core and prevent restarts.

Before the change, if a worker process crashes during shutdown, death()
handler would exit with code 1, and master process would restart the
worker. Now workers send SIGUSR1 to master when shutting down. When
master process gets the SIGUSR1 signal, it stops restarting workers.

SIGUSR1 is already used for log rotation, but it is fine to use SIGUSR1
for master process shutdown notifications because master is never
responsible for both log rotation and kid restarts.

Terminate with abort(3) instead of exit(3) to leave a core dump if Squid
worker crashes during shutdown.

9637. By Alex Rousskov on 2012-08-30

Bogus ERR_ZERO_SIZE_OBJECT responses were observed in lab tests.

A compliant proxy may retry PUTs, but Squid lacks the [rather complicated]
code required to protect the PUT request body from being nibbled during the
first try, when pconn races are possible. Squid also lacks code to inject
"Expect: 100-continue" headers to confirm reused pconn availability. Thus,
Squid cannot safely retry [some] PUTs today, and FwdState::checkRetriable()
must return false for all PUTs, to avoid bogus ERR_ZERO_SIZE_OBJECT errors
(especially for clients that did not reuse a pconn and, hence, may not be
ready to handle/retry an error response).

In theory, requests with safe or idempotent methods other than PUT might
have bodies so the change applies the same logic to them as well.

9636. By Alex Rousskov on 2012-08-30

Fixed "signed vs unsigned" compilation errors --with-large-files.

9635. By Alex Rousskov on 2012-08-23

Merged from parent (branch 3.1 at r10470, v3.1.20+).

9634. By Alex Rousskov on 2012-08-03

Do not add HTTP 110 and 111 Warnings to TCP_REFRESH_UNMODIFIED responses.

The old "stale if hit" logic did not account for cases where the stored stale
response became fresh due to a successful revalidation with the origin server.
When the stored response was stale at the time of the request, we were adding
110 "Response is stale" and even 111 "Revalidation failed" Warning headers to
responses while logging TCP_REFRESH_UNMODIFIED, which is considered a hit.

9633. By Alex Rousskov on 2012-08-03

Fixed comm.cc:371: "!fd_table[fd].closing()" assertion.
Ported Squid bug 3131 fix (closing-from-noteMoreBodySpaceAvailable.patch).

Adjusted to work after branch r9632 (close-err-after-resp-t2.patch).

9632. By Alex Rousskov on 2012-08-03

Do not wait for HTTP client to send request body we no longer need.
Also fixes Squid bug 3420 (!theConsumer exception) and other related problems.

9631. By Alex Rousskov on 2011-11-15

Bug 3190: Large HTTP POST stuck after early ICAP 400 error response

When an ICAP REQMOD service responds with an error to
(or the REQMOD transaction aborts while processing) a large HTTP
request, the HTTP request may get stuck because the request body
buffer gets full and nobody consumes the no-longer-needed content.

The ICAP code quits but leaves the body buffer intact in case the
client-side code wants to bypass the error. After that, nobody consumes
the request body because the buggy client side does not inform the body
pipe that there will be no other consumers, which would have triggered
a noteBodyConsumerAborted() callback and enable auto-consumption or closed
the client connection.

Same as trunk r11766 and v3.1 r10383.

Branch metadata

Branch format:
Branch format 6
Repository format:
Bazaar pack repository format 1 (needs bzr 0.92)
This branch contains Public information 
Everyone can see this information.