mirror of
https://github.com/oven-sh/bun
synced 2026-02-14 12:51:54 +00:00
Fixes #6973 Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
This commit is contained in:
@@ -264,8 +264,7 @@ JSC_DEFINE_HOST_FUNCTION(jsHTTPAssignHeaders, (JSGlobalObject * globalObject, Ca
|
||||
auto scope = DECLARE_THROW_SCOPE(vm);
|
||||
|
||||
JSValue requestValue = callFrame->argument(0);
|
||||
JSObject* prototype = callFrame->argument(1).getObject();
|
||||
JSObject* objectValue = callFrame->argument(2).getObject();
|
||||
JSObject* objectValue = callFrame->argument(1).getObject();
|
||||
|
||||
JSC::InternalFieldTuple* tuple = JSC::InternalFieldTuple::create(vm, globalObject->m_internalFieldTupleStructure.get());
|
||||
|
||||
@@ -273,7 +272,7 @@ JSC_DEFINE_HOST_FUNCTION(jsHTTPAssignHeaders, (JSGlobalObject * globalObject, Ca
|
||||
JSValue urlValue = JSValue();
|
||||
if (auto* jsRequest = jsDynamicCast<WebCore::JSRequest*>(requestValue)) {
|
||||
if (uWS::HttpRequest* request = Request__getUWSRequest(jsRequest->wrapped())) {
|
||||
return assignHeadersFromUWebSockets(request, prototype, objectValue, tuple, globalObject, vm);
|
||||
return assignHeadersFromUWebSockets(request, globalObject->objectPrototype(), objectValue, tuple, globalObject, vm);
|
||||
}
|
||||
|
||||
if (jsRequest->m_headers) {
|
||||
@@ -317,7 +316,7 @@ JSC_DEFINE_HOST_FUNCTION(jsHTTPAssignHeaders, (JSGlobalObject * globalObject, Ca
|
||||
RETURN_IF_EXCEPTION(scope, {});
|
||||
}
|
||||
|
||||
return assignHeadersFromFetchHeaders(impl, prototype, objectValue, tuple, globalObject, vm);
|
||||
return assignHeadersFromFetchHeaders(impl, globalObject->objectPrototype(), objectValue, tuple, globalObject, vm);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -610,13 +610,10 @@ function assignHeadersSlow(object, req) {
|
||||
object.headers = outHeaders;
|
||||
object.rawHeaders = rawHeaders;
|
||||
}
|
||||
// This is the prototype for the req.headers object.
|
||||
// It must not be exposed
|
||||
const kEmptyObjectInternal = Object.create(null);
|
||||
|
||||
function assignHeaders(object, req) {
|
||||
// This fast path is an 8% speedup for a "hello world" node:http server, and a 7% speedup for a "hello world" express server
|
||||
const tuple = assignHeadersFast(req, kEmptyObjectInternal, object);
|
||||
const tuple = assignHeadersFast(req, object);
|
||||
if (tuple !== null) {
|
||||
object.headers = $getInternalField(tuple, 0);
|
||||
object.rawHeaders = $getInternalField(tuple, 1);
|
||||
|
||||
@@ -157,6 +157,9 @@ describe("node:http", () => {
|
||||
function runTest(done: Function, callback: (server: Server, port: number, done: (err?: Error) => void) => void) {
|
||||
var timer;
|
||||
var server = createServer((req, res) => {
|
||||
if (req.headers.__proto__ !== {}.__proto__) {
|
||||
throw new Error("Headers should inherit from Object.prototype");
|
||||
}
|
||||
const reqUrl = new URL(req.url!, `http://${req.headers.host}`);
|
||||
if (reqUrl.pathname) {
|
||||
if (reqUrl.pathname === "/redirect") {
|
||||
|
||||
Reference in New Issue
Block a user