aboutsummaryrefslogtreecommitdiff
path: root/src/js/node
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 /src/js/node
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
Diffstat (limited to 'src/js/node')
-rw-r--r--src/js/node/http.ts16
1 files changed, 13 insertions, 3 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;