Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 549C7200BD5 for ; Thu, 8 Dec 2016 11:48:13 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 533F8160B1F; Thu, 8 Dec 2016 10:48:13 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9AA61160B1E for ; Thu, 8 Dec 2016 11:48:12 +0100 (CET) Received: (qmail 40328 invoked by uid 500); 8 Dec 2016 10:48:11 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 40318 invoked by uid 99); 8 Dec 2016 10:48:11 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 08 Dec 2016 10:48:11 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 2E5031A057A for ; Thu, 8 Dec 2016 10:48:11 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -3.099 X-Spam-Level: X-Spam-Status: No, score=-3.099 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RP_MATCHES_RCVD=-2.999, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=greenbytes.de header.b=SqUkYU45; dkim=pass (1024-bit key) header.d=greenbytes.de header.b=ejXxHgue Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id OiagkgMBRE8T for ; Thu, 8 Dec 2016 10:48:08 +0000 (UTC) Received: from mail.greenbytes.de (mail.greenbytes.de [5.10.171.186]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 0EAC35F571 for ; Thu, 8 Dec 2016 10:48:08 +0000 (UTC) Received: by mail.greenbytes.de (Postfix, from userid 117) id 29A8915A1741; Thu, 8 Dec 2016 11:48:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=greenbytes.de; s=mail; t=1481194087; bh=TVnubXRNB377b1xkU3xEAbr8I+eJmrGMqAv5BQBhRoE=; h=From:Subject:Date:References:To:In-Reply-To:From; b=SqUkYU455+qwl19q+9i4vP8qdMj4t0LG4myiEaU2IocWcHy68NUpTVZXJRVON8xSc /MEtGR+bTC5WMgnfuIb5fMDIPe9xWuYzVPgi88/Ln3dhKPq/DMrfqqTDvxGFyRDfoD 2gSzBQtWakh+QSk6PQAimi3GMddckgrbJ53drX3E= Received: from [192.168.1.175] (unknown [192.168.1.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mail.greenbytes.de (Postfix) with ESMTPSA id 8E10615A0A55 for ; Thu, 8 Dec 2016 11:48:06 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=greenbytes.de; s=mail; t=1481194086; bh=TVnubXRNB377b1xkU3xEAbr8I+eJmrGMqAv5BQBhRoE=; h=From:Subject:Date:References:To:In-Reply-To:From; b=ejXxHguejA3H/PbA+JHj4X3ojI737sX6LterOL4pQSdofdKtggXij2a1KDI7c+bLm CIIEWbwrVDqt5vpr9woi2r1/TzuMdAmfp6fuVCMIcLn7gXSlp08XY8F6Jc9EpqZocp eZnj4r1mVx5qRt7qvyKwtmjhNydenShnrw4hEy1g= From: Stefan Eissing Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 10.1 \(3251\)) Subject: Re: About Interim Response Headers (was: Content-Length header for 1xx status codes) Date: Thu, 8 Dec 2016 11:48:06 +0100 References: <2094ae26-d63b-9d7f-2f99-564b17762a91@gmail.com> <4fb0bb83-bcb4-22d3-0074-8dcf7d0216d7@gmail.com> To: dev@httpd.apache.org In-Reply-To: Message-Id: X-Mailer: Apple Mail (2.3251) archived-at: Thu, 08 Dec 2016 10:48:13 -0000 > Am 08.12.2016 um 11:25 schrieb Yann Ylavic : >=20 > On Thu, Dec 8, 2016 at 3:12 AM, William A Rowe Jr = wrote: >> On Dec 7, 2016 6:23 PM, "Jacob Champion" = wrote: >>=20 >> On 12/07/2016 04:00 PM, William A Rowe Jr wrote: >>>=20 >>> Consider for a moment the case of an HTTP/1.1 upgrade request >>> unrecognized by a proxy agent. >>=20 >>=20 >> It was my understanding that this is an impossible situation for a >> conforming proxy, since Upgrade is hop-by-hop. What am I missing? >>=20 >>=20 >> The fact that there is no way for us to predict what new headers we = are >> passed in the future are defined in the future to be hop-by-hop, = which >> result in a 105 response code with a similarly imponderable = conundrum. No >> way for RFC2068 servers to know 101 became a hop by hop unhandleable >> response. >=20 > "Connection: Upgrade, ..." is a MUST when the Upgrade header is used, > so servers/proxies do know. Exactly. There are three things mixed in this dicussion: 1. what the HTTP/1.1 protocol allows and asks us to do 2. what we need to change for 2.4.24 3. what our implementation should be in the future As to 1:=20 basically https://tools.ietf.org/html/rfc7231#section-6.2 says it all. = HTTP/1.1 defines 1xx interim responses and requires clients, on = receiving them, to act on the known and ignore the unknown ones and = continue processing.=20 For HTTP/1.1, as a server, we should not generate 1xx interims on = HTTP/1.1 connections without a really good reason. There is high = probability on unasked and especially unknown 1xx breakage in HTTP/1.1 = clients and proxies.=20 In HTTP/2, we are pushing to change that behaviour, due to the = opportunities that 1xx responses present and the relatively small set of = implementations. mod_http2 does fully support it in the upcoming 2.4.24. As to 2: I agree that our interim handling and generation could do with some = love. But it is working well enough, from my point of view, that I would = say we can release a 2.4.24 on it. Even the one item that William = mentioned, a HTTP/1.1 client talking via mod_proxy_http2 to a backend, = works correctly. mod_proxy_http2 does not forward 1xx responses to a = HTTP/1.1 main connection. As to 3: Possibilities are endless. =46rom my PoV it was not simple to track down = the working of our implementation when I worked on mod_http2 and = mod_proxy_http2 and on the 1xx dependencies between them. I agree with = the comments made that it is not clear which header are send out under = which processing phase. However I think the possibility of modules/hooks = to add headers to 1xx response should be there. The protocol allows it = and we cannot peak into the future and see all uses cases. Just look at = 103 and the Link header. What is unsatisfying from HTTP/2 implementation PoV is that interim = responses need to be serialized and parsed again. That is a course for = breakage and, since mod_http2 had to make its own parser, needs to be = fixed. In the beginning, I though I could intercept the 1xx generation = and skip the parsing. However some modules like mod_proxy_http sends = down a HTTP/1.1 serialized format. -Stefan