Re: 100 Continue clarification

Willy Tarreau <> Fri, 10 April 2020 11:08 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E15253A20AE for <>; Fri, 10 Apr 2020 04:08:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.653
X-Spam-Status: No, score=-2.653 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.248, MAILING_LIST_MULTI=-1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id p5bPCL2FEvyx for <>; Fri, 10 Apr 2020 04:08:21 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 57E733A20AC for <>; Fri, 10 Apr 2020 04:08:20 -0700 (PDT)
Received: from lists by with local (Exim 4.92) (envelope-from <>) id 1jMrTE-0006EF-6K for; Fri, 10 Apr 2020 11:05:12 +0000
Resent-Date: Fri, 10 Apr 2020 11:05:12 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from <>) id 1jMrTC-0006DP-Ra for; Fri, 10 Apr 2020 11:05:11 +0000
Received: from ([] by with esmtp (Exim 4.92) (envelope-from <>) id 1jMrT9-0002G4-Ad for; Fri, 10 Apr 2020 11:05:10 +0000
Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 03AB4pMr014721; Fri, 10 Apr 2020 13:04:51 +0200
Date: Fri, 10 Apr 2020 13:04:51 +0200
From: Willy Tarreau <>
To: Olivier Boel EXT <>
Cc: "" <>
Message-ID: <>
References: <>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.6.1 (2016-04-27)
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-7.9
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, W3C_AA=-1, W3C_IRA=-1, W3C_IRR=-3, W3C_WL=-1
X-W3C-Scan-Sig: 1jMrT9-0002G4-Ad f4ecd4956dea493f10855aeb32fd94df
Subject: Re: 100 Continue clarification
Archived-At: <>
X-Mailing-List: <> archive/latest/37498
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>


On Thu, Apr 09, 2020 at 12:42:24PM +0000, Olivier Boel EXT wrote:
> as the server already sent a final status (meaning "the request-line and
> header fields are sufficient to cause an immediate success, redirect, or
> error response"), client should understand it is not worthwhile to send the
> message body before actually doing so (which can improve efficiency when the
> message body is huge or when the client anticipates that an error is likely)
> even though server says "Connection: keep-alive", but rather send the next
> request.

This is not possible in HTTP/1 because the framing depends on the body
to reach its end. At best if the client uses the chunked transfer coding
then it may perform an early abort by completing the current chunk and
sending the zero-sized chunk to mark the end of the transfer. But as
long as XXX bytes were promised in content-length there is no way the
client can abort this and keep the connection alive: how would the
server know that finally those bytes will not come ? All the server
knows in such a case is that everything that follows the headers for
XXX bytes is supposed to be the request's body, and that it's only
after these ones that a new request may appear.

Hoping this helps,