aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-11 13:07:03 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-11 13:07:03 -0700
commitbab58b754156cdd749faa6e5ee41bd4758346da6 (patch)
treea9e36ba811edb55ad4e75cec781a87aa1f5a48f0
parentc4c5eb2d3257fdddf47b843cfb621098dca816ee (diff)
downloadbun-jarred/fix-http-compression.tar.gz
bun-jarred/fix-http-compression.tar.zst
bun-jarred/fix-http-compression.zip
Avoid Object.getPrototypeOfjarred/fix-http-compression
-rw-r--r--src/js/node/http.ts16
-rw-r--r--src/js/out/modules/node/http.js12
2 files changed, 22 insertions, 6 deletions
diff --git a/src/js/node/http.ts b/src/js/node/http.ts
index 563cb8c46..42388b32e 100644
--- a/src/js/node/http.ts
+++ b/src/js/node/http.ts
@@ -957,6 +957,7 @@ export class OutgoingMessage extends Writable {
}
}
+let OriginalWriteHeadFn, OriginalImplicitHeadFn;
export class ServerResponse extends Writable {
declare _writableState: any;
@@ -1055,14 +1056,20 @@ export class ServerResponse extends Writable {
);
}
+ #drainHeadersIfObservable() {
+ if (this._implicitHeader === OriginalImplicitHeadFn && this.writeHead === OriginalWriteHeadFn) {
+ return;
+ }
+
+ this._implicitHeader();
+ }
+
_final(callback) {
if (!this.headersSent) {
var data = this.#firstWrite || "";
this.#firstWrite = undefined;
this.#finished = true;
- if (this.writeHead !== Object.getPrototypeOf(this).writeHead) {
- this._implicitHeader();
- }
+ this.#drainHeadersIfObservable();
this._reply(
new Response(data, {
headers: this.#headers,
@@ -1181,6 +1188,9 @@ export class ServerResponse extends Writable {
}
}
+OriginalWriteHeadFn = ServerResponse.prototype.writeHead;
+OriginalImplicitHeadFn = ServerResponse.prototype._implicitHeader;
+
export class ClientRequest extends OutgoingMessage {
#timeout;
#res: IncomingMessage | null = null;
diff --git a/src/js/out/modules/node/http.js b/src/js/out/modules/node/http.js
index 7a9b87604..d0937a945 100644
--- a/src/js/out/modules/node/http.js
+++ b/src/js/out/modules/node/http.js
@@ -626,6 +626,7 @@ class OutgoingMessage extends Writable {
return this;
}
}
+var OriginalWriteHeadFn, OriginalImplicitHeadFn;
class ServerResponse extends Writable {
constructor({ req, reply }) {
@@ -692,12 +693,15 @@ class ServerResponse extends Writable {
statusText: this.statusMessage ?? STATUS_CODES[this.statusCode]
}));
}
+ #drainHeadersIfObservable() {
+ if (this._implicitHeader === OriginalImplicitHeadFn && this.writeHead === OriginalWriteHeadFn)
+ return;
+ this._implicitHeader();
+ }
_final(callback) {
if (!this.headersSent) {
var data = this.#firstWrite || "";
- if (this.#firstWrite = void 0, this.#finished = !0, this.writeHead !== Object.getPrototypeOf(this).writeHead)
- this._implicitHeader();
- this._reply(new Response(data, {
+ this.#firstWrite = void 0, this.#finished = !0, this.#drainHeadersIfObservable(), this._reply(new Response(data, {
headers: this.#headers,
status: this.statusCode,
statusText: this.statusMessage ?? STATUS_CODES[this.statusCode]
@@ -783,6 +787,8 @@ class ServerResponse extends Writable {
return _writeHead(statusCode, statusMessage, headers, this), this;
}
}
+OriginalWriteHeadFn = ServerResponse.prototype.writeHead;
+OriginalImplicitHeadFn = ServerResponse.prototype._implicitHeader;
class ClientRequest extends OutgoingMessage {
#timeout;