From 4f14f4fbcfcc0046af7d99d1287c7948cbe1ce50 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sat, 6 Mar 2010 15:33:11 +1300 Subject: [PATCH] Author: Henrik Nordstrom Swallow 1xx status messages Ported from 2.7. This makes Squid swallow 1xx replies from 1.1 servers safely without breaking the clients connection. --- src/http.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/http.cc b/src/http.cc index a5566f2584..60b848c9d4 100644 --- a/src/http.cc +++ b/src/http.cc @@ -714,6 +714,26 @@ HttpStateData::processReplyHeader() readBuf->consume(header_bytes_read); } + /* Skip 1xx messages for now. Advertised in Via as an internal 1.0 hop */ + if (newrep->sline.protocol == PROTO_HTTP && newrep->sline.status >= 100 && newrep->sline.status < 200) { + +#if WHEN_HTTP11 + /* When HTTP/1.1 check if the client is expecting a 1xx reply and maybe pass it on */ + if (orig_request->header.has(HDR_EXPECT)) { + // TODO: pass to the client anyway? + } +#endif + delete newrep; + debugs(11, 2, HERE << "1xx headers consume " << header_bytes_read << " bytes header."); + header_bytes_read = 0; + if (reply_bytes_read > 0) + debugs(11, 2, HERE << "1xx headers consume " << reply_bytes_read << " bytes reply."); + reply_bytes_read = 0; + ctx_exit(ctx); + processReplyHeader(); + return; + } + flags.chunked = 0; if (newrep->sline.protocol == PROTO_HTTP && newrep->header.hasListMember(HDR_TRANSFER_ENCODING, "chunked", ',')) { flags.chunked = 1; -- 2.47.3