summaryrefslogtreecommitdiff
path: root/ext/node
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2023-04-18 16:00:51 +0900
committerGitHub <noreply@github.com>2023-04-18 16:00:51 +0900
commitde21a780fd4e3f59bd0607a4c91246cc8b3a86b8 (patch)
tree1c7e4dc2fbc4032e22cd63e4b3ed2ece9a24a7e8 /ext/node
parent6efaef606af890e05deab0a892b1214f7f8421a9 (diff)
fix(ext/node): add req.socket.remoteAddress (#18733)
Diffstat (limited to 'ext/node')
-rw-r--r--ext/node/polyfills/http.ts16
1 files changed, 14 insertions, 2 deletions
diff --git a/ext/node/polyfills/http.ts b/ext/node/polyfills/http.ts
index 12d71277f..9104183ca 100644
--- a/ext/node/polyfills/http.ts
+++ b/ext/node/polyfills/http.ts
@@ -552,8 +552,11 @@ export class IncomingMessageForServer extends NodeReadable {
#req: Request;
url: string;
method: string;
+ // Polyfills part of net.Socket object.
+ // These properties are used by `npm:forwarded` for example.
+ socket: { remoteAddress: string; remotePort: number };
- constructor(req: Request) {
+ constructor(req: Request, conn: Deno.Conn) {
// Check if no body (GET/HEAD/OPTIONS/...)
const reader = req.body?.getReader();
super({
@@ -580,6 +583,10 @@ export class IncomingMessageForServer extends NodeReadable {
// url: (new URL(request.url).pathname),
this.url = req.url?.slice(req.url.indexOf("/", 8));
this.method = req.method;
+ this.socket = {
+ remoteAddress: conn.remoteAddr.hostname,
+ remotePort: conn.remoteAddr.port,
+ };
this.#req = req;
}
@@ -601,6 +608,11 @@ export class IncomingMessageForServer extends NodeReadable {
this.#req.headers.get("upgrade"),
);
}
+
+ // connection is deprecated, but still tested in unit test.
+ get connection() {
+ return this.socket;
+ }
}
type ServerHandler = (
@@ -669,7 +681,7 @@ class ServerImpl extends EventEmitter {
if (reqEvent === null) {
break;
}
- const req = new IncomingMessageForServer(reqEvent.request);
+ const req = new IncomingMessageForServer(reqEvent.request, tcpConn);
if (req.upgrade && this.listenerCount("upgrade") > 0) {
const conn = await denoHttp.upgradeHttpRaw(
reqEvent.request,