Compare commits

...

2 Commits

Author SHA1 Message Date
Jarred Sumner
cc569a2607 Slight improvement 2024-09-01 20:28:09 -07:00
Jarred Sumner
22823d638f Add failing test for #13678 2024-09-01 18:39:13 -07:00
2 changed files with 30 additions and 5 deletions

View File

@@ -1061,7 +1061,10 @@ pub fn BodyMixin(comptime Type: type) type {
return handleBodyAlreadyUsed(globalObject);
}
return value.Locked.setPromise(globalObject, .{ .getText = {} });
value.toBlobIfPossible();
if (value.* == .Locked) {
return value.Locked.setPromise(globalObject, .{ .getText = {} });
}
}
var blob = value.useAsAnyBlobAllowNonUTF8String();
@@ -1122,7 +1125,10 @@ pub fn BodyMixin(comptime Type: type) type {
if (value.Locked.isDisturbed(Type, globalObject, callframe.this())) {
return handleBodyAlreadyUsed(globalObject);
}
return value.Locked.setPromise(globalObject, .{ .getJSON = {} });
value.toBlobIfPossible();
if (value.* == .Locked) {
return value.Locked.setPromise(globalObject, .{ .getJSON = {} });
}
}
var blob = value.useAsAnyBlobAllowNonUTF8String();
@@ -1149,7 +1155,10 @@ pub fn BodyMixin(comptime Type: type) type {
if (value.Locked.isDisturbed(Type, globalObject, callframe.this())) {
return handleBodyAlreadyUsed(globalObject);
}
return value.Locked.setPromise(globalObject, .{ .getArrayBuffer = {} });
value.toBlobIfPossible();
if (value.* == .Locked) {
return value.Locked.setPromise(globalObject, .{ .getArrayBuffer = {} });
}
}
// toArrayBuffer in AnyBlob checks for non-UTF8 strings
@@ -1173,7 +1182,10 @@ pub fn BodyMixin(comptime Type: type) type {
if (value.Locked.isDisturbed(Type, globalObject, callframe.this())) {
return handleBodyAlreadyUsed(globalObject);
}
return value.Locked.setPromise(globalObject, .{ .getBytes = {} });
value.toBlobIfPossible();
if (value.* == .Locked) {
return value.Locked.setPromise(globalObject, .{ .getBytes = {} });
}
}
// toArrayBuffer in AnyBlob checks for non-UTF8 strings
@@ -1252,6 +1264,7 @@ pub fn BodyMixin(comptime Type: type) type {
if (value.Locked.promise == null or value.Locked.promise.?.isEmptyOrUndefinedOrNull()) {
return value.Locked.setPromise(globalObject, .{ .getBlob = {} });
}
return handleBodyAlreadyUsed(globalObject);
}

View File

@@ -22,6 +22,11 @@ const baseline = await (async function runAll() {
if (!textLength) {
throw new Error("Content-Length header is not set");
}
// Access the body as a ReadableStream.
// https://github.com/oven-sh/bun/issues/13678
resp.body;
(await resp.arrayBuffer()).byteLength;
return process.memoryUsage.rss();
})();
@@ -36,7 +41,14 @@ for (let j = 0; j < COUNT; j++) {
cert: "-----BEGIN CERTIFICATE-----\nMIIDXTCCAkWgAwIBAgIJAKLdQVPy90jjMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTkwMjAzMTQ0OTM1WhcNMjAwMjAzMTQ0OTM1WjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEA7i7IIEdICTiSTVx+ma6xHxOtcbd6wGW3nkxlCkJ1UuV8NmY5ovMsGnGD\nhJJtUQ2j5ig5BcJUf3tezqCNW4tKnSOgSISfEAKvpn2BPvaFq3yx2Yjz0ruvcGKp\nDMZBXmB/AAtGyN/UFXzkrcfppmLHJTaBYGG6KnmU43gPkSDy4iw46CJFUOupc51A\nFIz7RsE7mbT1plCM8e75gfqaZSn2k+Wmy+8n1HGyYHhVISRVvPqkS7gVLSVEdTea\nUtKP1Vx/818/HDWk3oIvDVWI9CFH73elNxBkMH5zArSNIBTehdnehyAevjY4RaC/\nkK8rslO3e4EtJ9SnA4swOjCiqAIQEwIDAQABo1AwTjAdBgNVHQ4EFgQUv5rc9Smm\n9c4YnNf3hR49t4rH4yswHwYDVR0jBBgwFoAUv5rc9Smm9c4YnNf3hR49t4rH4ysw\nDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEATcL9CAAXg0u//eYUAlQa\nL+l8yKHS1rsq1sdmx7pvsmfZ2g8ONQGfSF3TkzkI2OOnCBokeqAYuyT8awfdNUtE\nEHOihv4ZzhK2YZVuy0fHX2d4cCFeQpdxno7aN6B37qtsLIRZxkD8PU60Dfu9ea5F\nDDynnD0TUabna6a0iGn77yD8GPhjaJMOz3gMYjQFqsKL252isDVHEDbpVxIzxPmN\nw1+WK8zRNdunAcHikeoKCuAPvlZ83gDQHp07dYdbuZvHwGj0nfxBLc9qt90XsBtC\n4IYR7c/bcLMmKXYf0qoQ4OzngsnPI5M+v9QEHvYWaKVwFY4CTcSNJEwfXw+BAeO5\nOA==\n-----END CERTIFICATE-----",
}
: null;
oks += !!(await (await fetch(SERVER, { tls })).arrayBuffer())?.byteLength;
oks += !!(await fetch(SERVER, { tls })
.then(r => {
// Access the body as a ReadableStream.
// https://github.com/oven-sh/bun/issues/13678
r.body;
return r.arrayBuffer();
})
.then(r => r.byteLength));
})();
}