Re: POST+Upgrade, or unexpected limitation of RFC8441
Ben Schwartz <bemasc@meta.com> Wed, 18 December 2024 19:30 UTC
Received: by ietfa.amsl.com (Postfix) id 47DD1C1CAE67; Wed, 18 Dec 2024 11:30:14 -0800 (PST)
Delivered-To: ietfarch-httpbisa-archive-bis2juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 46F0CC19330B for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 18 Dec 2024 11:30:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.855
X-Spam-Level:
X-Spam-Status: No, score=-2.855 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=w3.org header.b="TR1DOl77"; dkim=pass (2048-bit key) header.d=w3.org header.b="K6xDLDkx"; dkim=pass (2048-bit key) header.d=meta.com header.b="elmjnAYC"
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FN2Fyj0N0KVI for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 18 Dec 2024 11:30:10 -0800 (PST)
Received: from mab.w3.org (mab.w3.org [IPv6:2600:1f18:7d7a:2700:d091:4b25:8566:8113]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 524B6C1840DD for <httpbisa-archive-bis2Juki@ietf.org>; Wed, 18 Dec 2024 11:30:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=Subject:MIME-Version:Content-Type:In-Reply-To:References:Message-ID: Date:CC:To:From:Reply-To; bh=2n1i8t5GXe+Lhz8pDs81abeqdLMSZn9LucV4zyMCKbM=; b= TR1DOl77e1lPqFbdfsWgKO2ERasYtWSuV57H7mYQGElW5bw5Orn6p/r3zK5SROg10ckTQU0ZsJCuM mGEWARkhAVXDWx6g+ggh1EashIehVRzwBhmFDTOYUiSTmbCYG9Eof+I1O307pveY2rIC76abaJzF8 H6LrvyYZi1og3srri5IIsFJV75kB8ydl6NBBIXSWSZ+VZWRBrMqqDBYzTxoMh0/qj+1L0Hw2YH4ch oLUYSKe5NoEFHklrJNCzNPXV7wlZmEomE+QX0eREhLkyQ1ka7AF5feGzcn0aIpDMoOKuQ+T7jC18v AxgLZ/LdS3dKqAgqyxkhO1lzyBqEf8UZfw==;
Received: from lists by mab.w3.org with local (Exim 4.96) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1tNzjS-001Yt0-1J for ietf-http-wg-dist@listhub.w3.org; Wed, 18 Dec 2024 19:29:18 +0000
Resent-Date: Wed, 18 Dec 2024 19:29:18 +0000
Resent-Message-Id: <E1tNzjS-001Yt0-1J@mab.w3.org>
Received: from ip-10-0-0-224.ec2.internal ([10.0.0.224] helo=puck.w3.org) by mab.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <prvs=70822aa5b4=bemasc@meta.com>) id 1tNzjQ-001Yrz-1R for ietf-http-wg@listhub.w3.internal; Wed, 18 Dec 2024 19:29:16 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=w3.org; s=s1; h=MIME-Version:Content-Type:In-Reply-To:References:Message-ID:Date: Subject:CC:To:From:Reply-To; bh=2n1i8t5GXe+Lhz8pDs81abeqdLMSZn9LucV4zyMCKbM=; t=1734550156; x=1735414156; b=K6xDLDkxIxy22zxDvG+pvw2fVnNXIESYzxfo4S7JQ7tBNoZ NUk6sPe+dD0ppRRz37ZLYeGdZHQKp38Cjga6QjmODfqX4u1vw7XZ7gomhdN/v3tr6DvsE8JmLyFS/ 9Er+AeBwhQj7ANTy18nCTZScoluqgMyyv9FMhvqgDGZ1ZMYHBVHm1XA9Lv4GByFKTEXb+vJbfO9br fxrF3UG5kUjKADzCmWndvwK5IAsiW+14TwsxaxlNVG4YrrmfwKElgAU7FtkwBFnqmjSGOWb5d2bdi tzyJ6iHhMNUPkOn5TLCFqpOjWRWz8e6H64D0KeIgzRQjAoUkSN25zsm1EoRkasNw==;
Received-SPF: pass (puck.w3.org: domain of meta.com designates 67.231.153.30 as permitted sender) client-ip=67.231.153.30; envelope-from=prvs=70822aa5b4=bemasc@meta.com; helo=mx0a-00082601.pphosted.com;
Received: from mx0b-00082601.pphosted.com ([67.231.153.30] helo=mx0a-00082601.pphosted.com) by puck.w3.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <prvs=70822aa5b4=bemasc@meta.com>) id 1tNzjP-005ARS-1m for ietf-http-wg@w3.org; Wed, 18 Dec 2024 19:29:16 +0000
Received: from pps.filterd (m0001303.ppops.net [127.0.0.1]) by m0001303.ppops.net (8.18.1.2/8.18.1.2) with ESMTP id 4BIJ1gWf028651; Wed, 18 Dec 2024 11:28:47 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:subject:to; s=s2048-2021-q4; bh=2n1i8t5GXe+Lhz8pDs81 abeqdLMSZn9LucV4zyMCKbM=; b=elmjnAYCZj389ct+NbcN8eGpMoLL097h1qx3 1uJZ4aDwmAr7pnVcANdpdONlV7J2qUUlR/LveQpMS4rIGLCq46MYapsUbsvuUQfx FACJw0jNROaRu3ffZLgekHxPndkPv4pTFswOt51Roof6IY1rwsso3X3ddryRsnI7 XCrbEhmcAtQmsQbyulj3OSsZunXnQ35IBMytQDVXHF7Vt58J8qxCJ+T4g1OlkFSB j3nAhdF4U4j+ekiEkW2vQrBlomUJxk5Qwp6Iscc6xPUFxxZcDYMcZEq8XSqQiWg9 IjmvG3tMlHEehK9wTQe+IDnHgYcezcK+fxgn9XFRoyLgsNG/dw==
Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2048.outbound.protection.outlook.com [104.47.55.48]) by m0001303.ppops.net (PPS) with ESMTPS id 43kx4sjymg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 18 Dec 2024 11:28:46 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pQ/XoKqKadUi+PCXevjcZucZ7CCb06IOlMsVkp444/41K9hjZB8YuRpRmk91LONMXl6BN60112oHZbgKb0OxJOEFFjbnjFS6oALVryhI405h1oZck5e+W8zI3p2TZvsvjPcimIz3TklCzGO7bt3OOPQP9vN/RbHcNEDO46tgw5egZC6qb3R6miNj5IdbxsnUhZO9pKBiG4gGWI3v2oCr9EEPSRSlx7IooAaqgUUdGyJboCAlpbARw8ldU7eCXR6oyZbfFeRmgo/pfWWwH/puHfP1XFbesmw+xxeZTY9V3u2RPZ60nYPi2gdcDiIxghvdA+q2vsSqZZwuf/inwz+f3w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xK+NWBqdfPGhoKNu8ZIiOl4Tl6/r3juecDCwRp2w+hA=; b=VwsDcRh5TyPuN3J+hD3oaok1zwxtnmrT4YgehUJkZL/Smefb7Di4HQ6Jsh+JysWdbhrU5oOMZHpYBxKn1joBVrVjwagSK9AIcwULjCv3SP4s0rInQzxmi7WXA1SQ/bZMUugfQs7zN8FLxEWiHl7E53sZzZFxYsHy/YU5b0/NBA2zi8NeOXSypPw1NzZZERwPtFfj7oPF155hbUhBFzJGzFSOFcEVuqyNIq+RaZLNFqN9dE/OVKqq7eeliksEDSG/AGH64CRcomvT7IDdCU+b9r9MG3XrktvwYg/69+tgZUht60vWPaMzN0uvXZbUo5wFG0qEAsEDirjtK1KS4tn7iA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=meta.com; dmarc=pass action=none header.from=meta.com; dkim=pass header.d=meta.com; arc=none
Received: from SA1PR15MB4370.namprd15.prod.outlook.com (2603:10b6:806:191::8) by BLAPR15MB3812.namprd15.prod.outlook.com (2603:10b6:208:276::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8272.12; Wed, 18 Dec 2024 19:28:42 +0000
Received: from SA1PR15MB4370.namprd15.prod.outlook.com ([fe80::b6dd:72cc:243a:babb]) by SA1PR15MB4370.namprd15.prod.outlook.com ([fe80::b6dd:72cc:243a:babb%7]) with mapi id 15.20.8272.005; Wed, 18 Dec 2024 19:28:41 +0000
From: Ben Schwartz <bemasc@meta.com>
To: Willy Tarreau <w@1wt.eu>, Glenn Strauss <gs-lists-ietf-http-wg@gluelogic.com>
CC: HTTP Working Group <ietf-http-wg@w3.org>, "mcmanus@ducksong.com" <mcmanus@ducksong.com>
Thread-Topic: POST+Upgrade, or unexpected limitation of RFC8441
Thread-Index: AQHbUTgaOeOLJAZed0mUaoT5DmSm5bLr5YQAgAAbaACAAF4x/A==
Date: Wed, 18 Dec 2024 19:28:41 +0000
Message-ID: <SA1PR15MB4370872301334B5CDCBBC6EBB3052@SA1PR15MB4370.namprd15.prod.outlook.com>
References: <20241218102834.GB2858@1wt.eu> <Z2K4mo6NKPxBKjl1@xps13> <20241218133520.GE2858@1wt.eu>
In-Reply-To: <20241218133520.GE2858@1wt.eu>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1PR15MB4370:EE_|BLAPR15MB3812:EE_
x-ms-office365-filtering-correlation-id: 2476bf37-75f9-4579-9a07-08dd1f9a2e07
x-fb-source: Internal
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|10070799003|1800799024|8096899003|7053199007|38070700018;
x-microsoft-antispam-message-info: vgXBf/1NMuEKs2VMhRgZBtBKH7M+Ol+ztggb/MKCf7zC1IuCuM7SIlgRnDpUCHScfwF5/swwm9fV9OG2TuHYZNwHC8p5RJKQwHqo8vrZ3jM0xf0JeNTXdcpBeE8XGz7CcKyGq8NRJh78b1rqwR4MK88xQN+gFtgxQKcZfSJ18lDBwVC+KXVMwlADJM5YgePo5K6MUA1aZlFx3LisrR1JnAXzYTfsq27eb7FM0IXaXGi7ihSXKOWKop8YvaNKjON3maQ5RIIOPIywwhfaMe0XV2JkEWKyIrZbiQ6Tkubpek0Gsb85kc4Fw+oOuGTjZp4+TAMEu4qEGHwdB5Q/J8jgQk+FSYazaJaLUG/Gm57vMLQlzgHYIQa3CLk/yn5uyusEUztO/U1EpO6ej2BvHcigOnyr9xNcysFTRM78UH/Y/52pHqtcuDTEeUGlRBH970MaLotnVORr4H6t/G99W9aYHVxtSqePzdNCOpc8qj+nwTsYZ/wgJWmiVKnYjuO4pNJDpSvokl+UMlJLg8Zx/e4eQF3moz8ojTHbvi1uszC3JT2GZKAW7gY5VE+aCetaX1hb0dxSSzXdhcB7jgKLt6yEtcyGWQ5/PWr0c8uLpWalhK2F79J4FK+9C2kdC/wf+7pmYArM9LlNxUcBx+tIwBBk3en6OPwB01uIg5jeqpQ/loE57k5jbqno691whr5+d5/8rd87lchrAQB6Nx10jk1VCbH9e9Yb2WEu7yp6wYyVEvgos9y1zLp3pXaKyJZPM1+/Z9WPQ/e5P0alYZx9yMNEqA9g+Q4bSvgTkqk13D1OAFhfe52CqQM0vJVuot/6zfWR16NSxXX/EdfOROEOvOzOcc/1aYNesJU10Kylca5fg+V/dHyPzXC+ewj2VpktDI64vTj00w5zOoxtQ2OFKmBLUmebLfTgFnLf+tnGhmTfAi/pxg9AdSUaSC2dK/vTop9cOR68mDqZIrZGVPYItUJWcFA30HBQdQZses1NBCgKOsS3G6t/69QhG+7O0FjaVsBbBijaVdX+5MvdHxTP44vp6iDhFTA6Fbe2uxk4PlY1nEgvmPQG6etY3bvH0M0p3VH3RLu17LZ40s+JHzQpnKx7EUUC33siAyllIiVGmWNR29MLF12yjmXLURhgHvmYj+ddYZPegjW2WPuVmwk2+lCc6n51fJQ8/YP3gUDylZMHYSXC+C8NZTnf/otxQPSpxhP+Zi4Z+tW6vocGR5Z9K6ZOkkpbMrDJlorhDRuPDT5y/+0nC9xug6uKqjfuHCj4QCiy2tTCmSmrUOljjCslcwORrOzNxD3e2O3NlZBUIgSQCa/y2rKW7MrOpm5Dpovk9NPV8G5XL6r2X2mrV0h7QTjnKRO4PMji5DFBrqq9JPzyHoG0vl0huYRKjtgaB+r4lD2L
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR15MB4370.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(10070799003)(1800799024)(8096899003)(7053199007)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: KKapRf73Yi9ni6pcwNDUjvuw9xbwugZlYuFSKlXtqPhTzJMlH0lMq/gsMkf1IciZ6vxNzY0OTqG+0e6Ks8HdNQ/u4VU5fFJL22N3B5GFe4aL6YJa6/CGQcGEIXapUXN+re4baIxsIa249PSOIiHfaoPNWCbjOb0hO8v/A4L+TSfSlOIxhpXQqkUTGS8CBGY6HD92aAnr/Ga5PdLrcV0GjDTCoT0psgOWqE9nJqDLO2wcGGStgYq1G86Ih7F7YVhf8WCxlkJQEcIL89CtQYvumfZs4XiQwErGNyBmnLI25yk0JjG15uhwM8p2kMsUiUDMghaKRsR63ORyGc6yqaCuu5Tzm0gHHrpzyv+BE5IZmJiDvv37LkOChke+J0sR27S3dYpOT0oiAiPI52e5uumNGQwx9cHk40mTK8vFAaPx8LKYR498fCDLYQzSAIn8vKEZ1DEEaWUaMnBNtXumuKG4cPwQ1brtul+Fnq2gDzdeiphUQ0uTuSWDht5nQuq1lMi3twB8ja6lsF/ou6HBTgRt7HVqVkaPFbvHvyydhjj5gzWCqjCIOHuQPVHRFv28mOMXVHAMIT9O97aDuNFRG+MGNCVEIK/ZLbeVIBhKfhbKSrOqigb6LuCXmD9uazK0uX+P+2JMk8n/J3G1m67XfAf8SVYRzJZ87KWRG//2KMsYk0dF6QOx/XHeWobVALXA1MfXMOEicFFSd3tNTKsn5UnjFKdD0rIDHatFOcyhr46h98iYc3UgFI7utKbJR/R7limkqMqlL54JFIztNmf7OGSTRInPbUJTi8aFS2Q1NfR0xDYUaZZI5Oe+PIlixyB4DRjYpaI/3foFkJmtvCkUNdfnYACrMLf5dYPP2KYWjRqsaxmx8Sm/xTZArkpN1Nnl1jzx8NnGStdUw/N7/xLIRv2vasrrP6S9AVTWh8NCCy52us36ZYQXryy95vO8yupHggtGB+CwtCLxQCFYs1tNwpkyIboWo0wMeKr1MDuGXK13XIak+P4OB5xsAHDy9/rZovXPcO0sNqpLIT4rPHq0qXUCO8AxE/6HftV3OD/Ki9eV/CRtIkWntDU6aHio+JqMA//zN3EXK7n9jMpU36YAQCdHQ0k526E2ETmuT0RbYDGD2uWiLwk6AUtQgnk+hfQNQV5YV57wmSIe0a4u6mGCkrXJIciPuSoOu4qYnBlsmUu8AMWONUJ9dZ7TiyGtEg5E73ARfZZqiYNNCLmf1iZfpNWS20GvHrOM0RG2bQqsgN30PS5INn5+tHGtzzXdP79TgY9uUgr8dRz06+j2SIWIjqtt8bxTeZ3CAj9lANXggYClwwEfWfH93QNBMVD6xrEid4qYGLr2PLDULNcF36cRU+gVmokiRx0ykS0whDIMKnWFu1znJR8h4nown2tpSjJSJYtUu1sx1rMUhWynUNoS9mpRLyhYslACRx6TZmlJztqfVXmdq+fy9Ge03karJ4dVQdjLAcdrd1RBcKBm2oO9S8z1+20tInRaDF8CMn3cDVcRPStzMOVBEiEjUvJCFd0iqf/7E1k242XNYQussfVTRTh6nUVY8xcnj0X4xQyZIq2cIetHdjVESLgTP7ZHYV6rc42W
Content-Type: multipart/alternative; boundary="_000_SA1PR15MB4370872301334B5CDCBBC6EBB3052SA1PR15MB4370namp_"
MIME-Version: 1.0
X-OriginatorOrg: meta.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1PR15MB4370.namprd15.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2476bf37-75f9-4579-9a07-08dd1f9a2e07
X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Dec 2024 19:28:41.3880 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: /05T9oMeuXgF6eShbVcR8G3p7bCKgFJVlMNlAyHZZGT6GA24OIT/7YWg776QDvY1
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR15MB3812
X-Proofpoint-GUID: sMMlbDgkN4Wul2AMh3ipVQYDTvtXgfVE
X-Proofpoint-ORIG-GUID: sMMlbDgkN4Wul2AMh3ipVQYDTvtXgfVE
X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-05_03,2024-10-04_01,2024-09-30_01
X-W3C-Hub-DKIM-Status: validation passed: (address=prvs=70822aa5b4=bemasc@meta.com domain=meta.com), signature is good
X-W3C-Hub-Spam-Status: No, score=-4.1
X-W3C-Hub-Spam-Report: ARC_SIGNED=0.001, ARC_VALID=0.001, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, DMARC_PASS=-0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: puck.w3.org 1tNzjP-005ARS-1m ab0f4d86855a9aaab0f54125df579e90
X-Original-To: ietf-http-wg@w3.org
Subject: Re: POST+Upgrade, or unexpected limitation of RFC8441
Archived-At: <https://www.w3.org/mid/SA1PR15MB4370872301334B5CDCBBC6EBB3052@SA1PR15MB4370.namprd15.prod.outlook.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/52661
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>
It seems like the underlying confusion here comes from two false (but understandable!) assumptions: 1. The ":protocol" pseudoheader's value is an Upgrade Token, so it can contain any Upgrade Token. 2. It is possible to convert HTTP/1.1 Upgrade to Extended CONNECT generically. In fact, ":protocol" only supports a subset of the registered Upgrade Tokens (i.e. those that explicitly describe their use with Extended CONNECT), and even if an Upgrade Token is defined for use in both HTTP/1.1 Upgrade and Extended CONNECT, there is no generic process for converting between these forms without detailed knowledge of the specific Upgrade Token. I wish it were otherwise. And in fact, I think we could fix this for a subset of Upgrade Tokens (those that use the Capsule Protocol): https://datatracker.ietf.org/doc/html/draft-kb-capsule-conversion-00 That's not going to help you with whatever Docker is doing though. Someone should tell them that "tcp" is not a registered Upgrade Token [1] and "h2c" is deprecated. As for haproxy, it needs to restrict its HTTP Version Conversion logic to recognized Upgrade Tokens where the conversion logic is known to be correct. --Ben Schwartz [1] https://docs.docker.com/reference/api/engine/version/v1.47/#tag/Container/operation/ContainerAttach ________________________________ From: Willy Tarreau <w@1wt.eu> Sent: Wednesday, December 18, 2024 8:35 AM To: Glenn Strauss <gs-lists-ietf-http-wg@gluelogic.com> Cc: HTTP Working Group <ietf-http-wg@w3.org>; mcmanus@ducksong.com <mcmanus@ducksong.com> Subject: Re: POST+Upgrade, or unexpected limitation of RFC8441 Hi Glenn, On Wed, Dec 18, 2024 at 06:57:14AM -0500, Glenn Strauss wrote: > HTTP/1.1 Upgrade overloads the request. > > There is an HTTP 1.1 request and there is an HTTP/1.1 Upgrade request. > > If the Upgrade is not handled, the HTTP request proceeds. > > If the Upgrade is to be handled, then the request be must read in full > prior to the Upgrade taking effect on data *after the full request* > received from the client. There is a danger here for exposure to > request smuggling if various intermediaries handle or do not handle the > request body differently. I pretty much agree with all of this, and that's clearly the problem here of switching to CONNECT which doesn't offer option for marking a boundary on a request payload. > Some of these issues were discussed earlier this year regarding > Security Considerations for Optimistic Use of HTTP Upgrade > https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-schwartz-httpbis-optimistic-upgrade/__;!!Bt8RZUm9aw!74ic5DESaXPLq1JkO-MTfn1BE3voxl1MrOzJT0bZxUt6hv0gSOoT-EbqHAsvFw3tXir3$ > both on list and at the IETF meetings, e.g. > https://urldefense.com/v3/__https://httpwg.org/wg-materials/ietf120/minutes.html*security-considerations-for-optimistic-use-of-http-upgrade----ben-schwartz__;Iw!!Bt8RZUm9aw!74ic5DESaXPLq1JkO-MTfn1BE3voxl1MrOzJT0bZxUt6hv0gSOoT-EbqHAsvFwNdML1v$ > > (I think on the list) I made a suggestion that the draft limit future > Upgrade tokens for use in requests *without* a request body and with > idempotent HTTP request methods. > > I still feel that way and so for these reasons would oppose adding > complexity to extend RFC8441 CONNECT to allow a request body. I'm not strongly against that, it's just that we may be ossifying some applications what will require H1 exclusively and forever. But hey, we have set-cookie as well... > Why does the docker engine API use POST along with Upgrade? I have no idea. But I can understand how some implementors could consider that they need to open a bidirectional channel not working on HTTP boundaries, hence an upgrade, and that the initial context to start with is passed as a message body. We could for example imagine that some applications repost the last dumped state of the previous session, which the gateway searches among all known servers, to route the final tunnel request to the proper region/server. That's certainly not the case here but there can be valid use cases (which technically do work). > HTTP POST method is not intrinsically idempotent. > Would it not be better if the docker API sent the POST request, and > separately, depending on success/failure of the POST request, sent > an HTTP/1.1 Upgrade: websocket request via GET? Or even the reverse, request first, then use their protocol to send the data. But anyway I don't know their protocol and am not qualified to judge their choice. Maybe in their context it's the best one. > From my quick look in Moby, the open source repo for community Docker: > > Search for "Upgrade:" to see the examples > Upgrade: tcp and Upgrade: h2c > https://github.com/moby/moby/blob/master/api/swagger.yaml > > Since swagger.yaml mentions Upgrade: h2c, I'll note that lighttpd will > ignore HTTP/1.1 Upgrade: h2c if there is a non-zero HTTP request body > included with HTTP/1.1 Upgrade: h2c. That is done to avoid the > potential for request smuggling with HTTP/1.1 Upgrade: h2c. Same here. Actually it's not just about smuggling, it's also about bypassing everything (routing rules, filtering etc). > At the moment, I do not know why Docker API is using POST instead of GET > and if the POST even has a body, or if it happens to use > Transfer-Encoding: chunked even in cases where it could explicitly use > Content-Length: 0. I don't know either, I don't even have these tools nor do I know how to test them. And if we had to try each and every strangely behaving application, it would require more people than are likely subscribed to this list! > > [...] but the problem remains that the mechanism proposed by > > RFC8441 doesn't offer provisions for completely transporting H1 > > over H2, nor replacing H1 with H2. [...] > > True. Perhaps HTTP/1.1 RFCs should be updated to deprecate > non-zero request body and use an idempotent method when including > an Upgrade token with the request? Similar to your last suggestion: > > > - or we could do nothing and consider that some parts of HTTP/1 will > > remain HTTP/1 forever and will not be transportable over newer > > versions. I'm not fundamentally against it but it would warrant > > some extra documentation (especially in the H1 related specs) to > > discourage such use so that we make sure no new protocol adopts > > them and stay stuck in a corner. > > BTW, there is already another outstanding issue mentioned on this list > (but not followed with an errata) about HTTP/2 extended CONNECT breaking > HTTP Digest authentication for an HTTP/1.x request translated to HTTP/2 > since the HTTP method is included in the digest, but the HTTP/1.1 > request sent over HTTP/2 uses HTTP method CONNECT. [1] Ben noted that > the issue may also apply to MASQUE protocols. > > [1] https://urldefense.com/v3/__https://lists.w3.org/Archives/Public/ietf-http-wg/2024JulSep/0169.html__;!!Bt8RZUm9aw!74ic5DESaXPLq1JkO-MTfn1BE3voxl1MrOzJT0bZxUt6hv0gSOoT-EbqHAsvF7ZDPB7v$ Hmmm interesting. Actually this class of problems can probably be extended to any info passed in a the request as the method or a header field that's normally not expected with CONNECT. After all, section 5 of 8441 says: The :protocol pseudo-header field MUST be included in the CONNECT request, and it MUST have a value of "websocket" to initiate a WebSocket connection on an HTTP/2 stream. Other HTTP request and response-header fields, such as those for manipulating cookies, may be included in the HEADERS with the CONNECT method as usual. This request replaces the GET-based request in [RFC6455] and is used to process the WebSockets opening handshake. So there's a way to read it as "any field including content-length...". And for the original method a specific header could be imagined. All of this just doesn't have totally obvious implications and may require implementors to be very careful about (which is already the case in fact). Cheers, Willy
- Re: POST+Upgrade, or unexpected limitation of RFC… Lucas Pardue
- POST+Upgrade, or unexpected limitation of RFC8441 Willy Tarreau
- Re: POST+Upgrade, or unexpected limitation of RFC… Lucas Pardue
- Re: POST+Upgrade, or unexpected limitation of RFC… Willy Tarreau
- Re: POST+Upgrade, or unexpected limitation of RFC… Willy Tarreau
- Re: POST+Upgrade, or unexpected limitation of RFC… Glenn Strauss
- Re: POST+Upgrade, or unexpected limitation of RFC… Willy Tarreau
- Re: POST+Upgrade, or unexpected limitation of RFC… Ben Schwartz
- Re: POST+Upgrade, or unexpected limitation of RFC… Willy Tarreau
- Re: POST+Upgrade, or unexpected limitation of RFC… Ben Schwartz
- RE: POST+Upgrade, or unexpected limitation of RFC… Mike Bishop