From c09f2c863a00185479ba8e139947368f05b2cbeb Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 7 Jun 2023 10:44:12 +0200 Subject: [PATCH] Transform header names to lowercase (#125) --- CHANGELOG.md | 4 ++++ lib/src/hpack/hpack.dart | 5 ++++- pubspec.yaml | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 618f83d..70a9352 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.1.0-dev + +- Transform headers to lowercase. + ## 2.1.0 - Require Dart `3.0.0` diff --git a/lib/src/hpack/hpack.dart b/lib/src/hpack/hpack.dart index e59cd37..f34e043 100644 --- a/lib/src/hpack/hpack.dart +++ b/lib/src/hpack/hpack.dart @@ -49,7 +49,10 @@ class Header { Header(this.name, this.value, {this.neverIndexed = false}); factory Header.ascii(String name, String value) { - return Header(ascii.encode(name), ascii.encode(value)); + // Specs: `However, header field names MUST be converted to lowercase prior + // to their encoding in HTTP/2. A request or response containing uppercase + // header field names MUST be treated as malformed (Section 8.1.2.6).` + return Header(ascii.encode(name.toLowerCase()), ascii.encode(value)); } } diff --git a/pubspec.yaml b/pubspec.yaml index ac436ed..05f88e2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: http2 -version: 2.1.0 +version: 2.1.0-dev description: A HTTP/2 implementation in Dart. repository: https://github.com/dart-lang/http2