mirror of
https://github.com/denoland/deno.git
synced 2025-03-10 14:17:49 -04:00
chore(ext/node): revert changes to ClientRequest.onSocket (#19426)
Partially reverts https://github.com/denoland/deno/pull/19340 because it causes hangs in some situations.
This commit is contained in:
parent
eb28a37cf8
commit
d6271e204b
2 changed files with 37 additions and 16 deletions
|
@ -195,14 +195,11 @@ Deno.test("[node/http] request default protocol", async () => {
|
||||||
// @ts-ignore IncomingMessageForClient
|
// @ts-ignore IncomingMessageForClient
|
||||||
// deno-lint-ignore no-explicit-any
|
// deno-lint-ignore no-explicit-any
|
||||||
let clientRes: any;
|
let clientRes: any;
|
||||||
// deno-lint-ignore no-explicit-any
|
|
||||||
let clientReq: any;
|
|
||||||
server.listen(() => {
|
server.listen(() => {
|
||||||
clientReq = http.request(
|
const req = http.request(
|
||||||
// deno-lint-ignore no-explicit-any
|
// deno-lint-ignore no-explicit-any
|
||||||
{ host: "localhost", port: (server.address() as any).port },
|
{ host: "localhost", port: (server.address() as any).port },
|
||||||
(res) => {
|
(res) => {
|
||||||
assert(res.socket instanceof EventEmitter);
|
|
||||||
assertEquals(res.complete, false);
|
assertEquals(res.complete, false);
|
||||||
res.on("data", () => {});
|
res.on("data", () => {});
|
||||||
res.on("end", () => {
|
res.on("end", () => {
|
||||||
|
@ -213,14 +210,13 @@ Deno.test("[node/http] request default protocol", async () => {
|
||||||
promise2.resolve();
|
promise2.resolve();
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
clientReq.end();
|
req.end();
|
||||||
});
|
});
|
||||||
server.on("close", () => {
|
server.on("close", () => {
|
||||||
promise.resolve();
|
promise.resolve();
|
||||||
});
|
});
|
||||||
await promise;
|
await promise;
|
||||||
await promise2;
|
await promise2;
|
||||||
assert(clientReq.socket instanceof EventEmitter);
|
|
||||||
assertEquals(clientRes!.complete, true);
|
assertEquals(clientRes!.complete, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -267,9 +267,6 @@ const kError = Symbol("kError");
|
||||||
|
|
||||||
const kUniqueHeaders = Symbol("kUniqueHeaders");
|
const kUniqueHeaders = Symbol("kUniqueHeaders");
|
||||||
|
|
||||||
class FakeSocket extends EventEmitter {
|
|
||||||
}
|
|
||||||
|
|
||||||
/** ClientRequest represents the http(s) request from the client */
|
/** ClientRequest represents the http(s) request from the client */
|
||||||
class ClientRequest extends OutgoingMessage {
|
class ClientRequest extends OutgoingMessage {
|
||||||
defaultProtocol = "http:";
|
defaultProtocol = "http:";
|
||||||
|
@ -544,7 +541,6 @@ class ClientRequest extends OutgoingMessage {
|
||||||
this.onSocket(createConnection(optsWithoutSignal));
|
this.onSocket(createConnection(optsWithoutSignal));
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
this.onSocket(new FakeSocket());
|
|
||||||
|
|
||||||
const url = this._createUrlStrFromOptions();
|
const url = this._createUrlStrFromOptions();
|
||||||
|
|
||||||
|
@ -574,12 +570,41 @@ class ClientRequest extends OutgoingMessage {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(bartlomieju): handle error
|
onSocket(socket, err) {
|
||||||
onSocket(socket, _err) {
|
if (this.destroyed || err) {
|
||||||
nextTick(() => {
|
this.destroyed = true;
|
||||||
this.socket = socket;
|
|
||||||
this.emit("socket", socket);
|
// deno-lint-ignore no-inner-declarations
|
||||||
});
|
function _destroy(req, err) {
|
||||||
|
if (!req.aborted && !err) {
|
||||||
|
err = connResetException("socket hang up");
|
||||||
|
}
|
||||||
|
if (err) {
|
||||||
|
req.emit("error", err);
|
||||||
|
}
|
||||||
|
req._closed = true;
|
||||||
|
req.emit("close");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (socket) {
|
||||||
|
if (!err && this.agent && !socket.destroyed) {
|
||||||
|
socket.emit("free");
|
||||||
|
} else {
|
||||||
|
finished(socket.destroy(err || this[kError]), (er) => {
|
||||||
|
if (er?.code === "ERR_STREAM_PREMATURE_CLOSE") {
|
||||||
|
er = null;
|
||||||
|
}
|
||||||
|
_destroy(this, er || err);
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_destroy(this, err || this[kError]);
|
||||||
|
} else {
|
||||||
|
//tickOnSocket(this, socket);
|
||||||
|
//this._flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// deno-lint-ignore no-explicit-any
|
// deno-lint-ignore no-explicit-any
|
||||||
|
|
Loading…
Add table
Reference in a new issue