From 93b663e43d2288cea5f7b2e8f045c719427a914f Mon Sep 17 00:00:00 2001 From: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> Date: Wed, 17 Aug 2022 07:36:18 -0700 Subject: New Zig <> C++ bindings generator. +20% faster HTTP server --- src/bun.js/bindings/webcore/FetchHeaders.cpp | 45 +++++++++++++++++----------- 1 file changed, 28 insertions(+), 17 deletions(-) (limited to 'src/bun.js/bindings/webcore/FetchHeaders.cpp') diff --git a/src/bun.js/bindings/webcore/FetchHeaders.cpp b/src/bun.js/bindings/webcore/FetchHeaders.cpp index 26af08f1a..d4ecba216 100644 --- a/src/bun.js/bindings/webcore/FetchHeaders.cpp +++ b/src/bun.js/bindings/webcore/FetchHeaders.cpp @@ -67,13 +67,27 @@ static ExceptionOr appendToHeaderMap(const String& name, const String& val if (canWriteResult.hasException()) return canWriteResult.releaseException(); if (!canWriteResult.releaseReturnValue()) - return { }; + return {}; headers.set(name, combinedValue); - if (guard == FetchHeaders::Guard::RequestNoCors) - removePrivilegedNoCORSRequestHeaders(headers); + // if (guard == FetchHeaders::Guard::RequestNoCors) + // removePrivilegedNoCORSRequestHeaders(headers); - return { }; + return {}; +} + +static void appendToHeaderMapFast(const String& name, const String& value, HTTPHeaderMap& headers, FetchHeaders::Guard guard) +{ + String combinedValue; + if (headers.contains(name)) { + combinedValue = makeString(headers.get(name), ", ", value); + } else { + combinedValue = value.isolatedCopy(); + } + + headers.append(name.isolatedCopy(), WTFMove(combinedValue)); + // if (guard == FetchHeaders::Guard::RequestNoCors) + // removePrivilegedNoCORSRequestHeaders(headers); } static ExceptionOr appendToHeaderMap(const HTTPHeaderMap::HTTPHeaderMapConstIterator::KeyValue& header, HTTPHeaderMap& headers, FetchHeaders::Guard guard) @@ -83,16 +97,13 @@ static ExceptionOr appendToHeaderMap(const HTTPHeaderMap::HTTPHeaderMapCon if (canWriteResult.hasException()) return canWriteResult.releaseException(); if (!canWriteResult.releaseReturnValue()) - return { }; + return {}; if (header.keyAsHTTPHeaderName) headers.add(header.keyAsHTTPHeaderName.value(), header.value); else headers.add(header.key, header.value); - if (guard == FetchHeaders::Guard::RequestNoCors) - removePrivilegedNoCORSRequestHeaders(headers); - - return { }; + return {}; } // https://fetch.spec.whatwg.org/#concept-headers-fill @@ -116,7 +127,7 @@ static ExceptionOr fillHeaderMap(HTTPHeaderMap& headers, const FetchHeader } } - return { }; + return {}; } ExceptionOr> FetchHeaders::create(std::optional&& headersInit) @@ -145,7 +156,7 @@ ExceptionOr FetchHeaders::fill(const FetchHeaders& otherHeaders) return result.releaseException(); } - return { }; + return {}; } ExceptionOr FetchHeaders::append(const String& name, const String& value) @@ -161,18 +172,18 @@ ExceptionOr FetchHeaders::remove(const String& name) if (m_guard == FetchHeaders::Guard::Immutable) return Exception { TypeError, "Headers object's guard is 'immutable'"_s }; if (m_guard == FetchHeaders::Guard::Request && isForbiddenHeaderName(name)) - return { }; + return {}; if (m_guard == FetchHeaders::Guard::RequestNoCors && !isNoCORSSafelistedRequestHeaderName(name) && !isPriviledgedNoCORSRequestHeaderName(name)) - return { }; + return {}; if (m_guard == FetchHeaders::Guard::Response && isForbiddenResponseHeaderName(name)) - return { }; + return {}; m_headers.remove(name); if (m_guard == FetchHeaders::Guard::RequestNoCors) removePrivilegedNoCORSRequestHeaders(m_headers); - return { }; + return {}; } ExceptionOr FetchHeaders::get(const String& name) const @@ -196,14 +207,14 @@ ExceptionOr FetchHeaders::set(const String& name, const String& value) if (canWriteResult.hasException()) return canWriteResult.releaseException(); if (!canWriteResult.releaseReturnValue()) - return { }; + return {}; m_headers.set(name, normalizedValue); if (m_guard == FetchHeaders::Guard::RequestNoCors) removePrivilegedNoCORSRequestHeaders(m_headers); - return { }; + return {}; } void FetchHeaders::filterAndFill(const HTTPHeaderMap& headers, Guard guard) -- cgit v1.2.3