From 91cac31f795409b3a729ac67f53f287aa37bda8c Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Mon, 13 Nov 2023 18:35:10 +0900 Subject: [PATCH 1/4] fix: implement `Headers#set` correctly --- lib/fetch/headers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fetch/headers.js b/lib/fetch/headers.js index f37c5c99e03..3df839f71f6 100644 --- a/lib/fetch/headers.js +++ b/lib/fetch/headers.js @@ -401,7 +401,7 @@ class Headers { // 7. Set (name, value) in this’s header list. // 8. If this’s guard is "request-no-cors", then remove // privileged no-CORS request headers from this - return this[kHeadersList].set(name, value) + this[kHeadersList].set(name, value) } // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie From ea135c8f1d9022531a26ee26764f1374448bdb0e Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Mon, 13 Nov 2023 18:37:42 +0900 Subject: [PATCH 2/4] fix: HeadersList --- lib/fetch/headers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fetch/headers.js b/lib/fetch/headers.js index 3df839f71f6..035560428bc 100644 --- a/lib/fetch/headers.js +++ b/lib/fetch/headers.js @@ -190,7 +190,7 @@ class HeadersList { // the first such header to value and remove the // others. // 2. Otherwise, append header (name, value) to list. - return this[kHeadersMap].set(lowercaseName, { name, value }) + this[kHeadersMap].set(lowercaseName, { name, value }) } // https://fetch.spec.whatwg.org/#concept-header-list-delete From 013d1e94a906b191dd0a0ffb469dde42f69db225 Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Tue, 14 Nov 2023 03:45:33 +0900 Subject: [PATCH 3/4] test: add --- test/fetch/headers.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/fetch/headers.js b/test/fetch/headers.js index c4b4e03d297..1ee66445d98 100644 --- a/test/fetch/headers.js +++ b/test/fetch/headers.js @@ -250,7 +250,7 @@ tap.test('Headers has', t => { }) tap.test('Headers set', t => { - t.plan(4) + t.plan(5) t.test('sets valid header entry to instance', t => { t.plan(2) @@ -294,6 +294,16 @@ tap.test('Headers set', t => { t.throws(() => headers.set('undici'), 'throws on missing value') t.throws(() => headers.set('invalid @ header ? name', 'valid value'), 'throws on invalid name') }) + + // https://github.com/nodejs/undici/issues/2431 + t.test('`Headers#set` returns undefined', t => { + t.plan(2) + const headers = new Headers() + + t.same(headers.set('a', 'b'), undefined) + + t.notOk(headers.set('c') instanceof Map) + }) }) tap.test('Headers forEach', t => { From 2faa1297a66de0448e23558a299a94dac19a6a94 Mon Sep 17 00:00:00 2001 From: tsctx <91457664+tsctx@users.noreply.github.com> Date: Tue, 14 Nov 2023 04:00:38 +0900 Subject: [PATCH 4/4] test: fix --- test/fetch/headers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/fetch/headers.js b/test/fetch/headers.js index 1ee66445d98..5da1a1ded1f 100644 --- a/test/fetch/headers.js +++ b/test/fetch/headers.js @@ -302,7 +302,7 @@ tap.test('Headers set', t => { t.same(headers.set('a', 'b'), undefined) - t.notOk(headers.set('c') instanceof Map) + t.notOk(headers.set('c', 'd') instanceof Map) }) })