From 9203417686cc5e548f28d0c0cfc70270c4694636 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Sat, 18 Sep 2021 14:34:11 -0700 Subject: [PATCH] Fix a couple of regressions in 1.2.6 --- lib/connection-request.ts | 2 +- lib/cwmp.ts | 13 +++++------ lib/local-cache.ts | 1 + npm-shrinkwrap.json | 45 +++++++++++++++++++-------------------- package.json | 2 +- 5 files changed, 32 insertions(+), 31 deletions(-) diff --git a/lib/connection-request.ts b/lib/connection-request.ts index e20595d..84bd257 100644 --- a/lib/connection-request.ts +++ b/lib/connection-request.ts @@ -129,7 +129,7 @@ export async function httpConnectionRequest( Authorization: auth.solveDigest( username, password, - options.path, + url.pathname + url.search, "GET", null, authHeader diff --git a/lib/cwmp.ts b/lib/cwmp.ts index 6168e6e..1bece60 100644 --- a/lib/cwmp.ts +++ b/lib/cwmp.ts @@ -187,7 +187,8 @@ async function writeResponse( } const httpResponse = sessionContext.httpResponse; - const connection = httpResponse.socket; + // Don't use httpResponse.socket as it may be null, even before end() is called + const connection = sessionContext.httpRequest.socket; httpResponse.setHeader("Content-Length", Buffer.byteLength(data)); httpResponse.writeHead(res.code, res.headers); @@ -1033,7 +1034,7 @@ async function reportBadState(sessionContext: SessionContext): Promise { if (sessionContext.debug) debug.outgoingHttpResponse(httpResponse, sessionContext.deviceId, body); httpResponse.end(body); - return endSession(sessionContext); + if (sessionContext.state) return endSession(sessionContext); } async function responseUnauthorized( @@ -1290,13 +1291,13 @@ export function listener( stats.concurrentRequests -= 1; }) .catch((err) => { - currentSessions.delete(httpResponse.socket); + currentSessions.delete(httpRequest.socket); stats.concurrentRequests -= 1; setTimeout(() => { throw err; }); try { - httpResponse.socket.unref(); + httpRequest.socket.unref(); httpResponse.writeHead(500, { Connection: "close" }); httpResponse.end(`${err.name}: ${err.message}`); } catch (err) { @@ -1344,7 +1345,7 @@ async function clientError( } httpResponse.end(msg); - if (sessionContext) await endSession(sessionContext); + if (sessionContext?.state) await endSession(sessionContext); } function decodeString(buffer: Buffer, charset: string): string { @@ -1442,7 +1443,7 @@ async function listenerAsync( sessionContext.httpRequest = httpRequest; sessionContext.httpResponse = httpResponse; if ( - sessionContext.sessionId !== sessionId || + (sessionContext.sessionId !== sessionId && sessionContext.state) || sessionContext.lastActivity + sessionContext.timeout * 1000 < Date.now() ) { logger.accessError({ diff --git a/lib/local-cache.ts b/lib/local-cache.ts index 4eaab88..711f13b 100644 --- a/lib/local-cache.ts +++ b/lib/local-cache.ts @@ -360,6 +360,7 @@ async function fetchConfig(): Promise<[Config, UiConfig]> { _config[c.id] = val; if (c.id.startsWith("ui.")) { const keys = c.id.split("."); + if (!(keys[1] in ui)) continue; // remove the first key(ui) keys.shift(); let ref = ui; diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index d26ac24..b7db3fa 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -14,9 +14,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "version": "7.15.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", "dev": true }, "@babel/highlight": { @@ -531,9 +531,9 @@ "dev": true }, "@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" + "version": "16.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.2.tgz", + "integrity": "sha512-ZHty/hKoOLZvSz6BtP1g7tc7nUeJhoCf3flLjh8ZEv1vFKBWHXcnMbJMyN/pftSljNyy0kNW/UqI3DccnBnZ8w==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -1152,9 +1152,9 @@ "dev": true }, "boxen": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.1.tgz", - "integrity": "sha512-JtIQYts08AFAYGF4eSh3pUt3NQkYV/e75pRtQmAVTLNWR/1L7Bsswxlgzgk8nmLEM+gFszsIlA9BgD3XnSqp3g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, "requires": { "ansi-align": "^3.0.0", @@ -1321,9 +1321,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001257", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", - "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", + "version": "1.0.30001258", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001258.tgz", + "integrity": "sha512-RBByOG6xWXUp0CR2/WU2amXz3stjKpSl5J1xU49F1n2OxD//uBZO4wCKUiG+QMGf7CHGfDDcqoKriomoGVxTeA==", "dev": true }, "chalk": { @@ -2253,9 +2253,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.840", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.840.tgz", - "integrity": "sha512-yRoUmTLDJnkIJx23xLY7GbSvnmDCq++NSuxHDQ0jiyDJ9YZBUGJcrdUqm+ZwZFzMbCciVzfem2N2AWiHJcWlbw==", + "version": "1.3.843", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.843.tgz", + "integrity": "sha512-OWEwAbzaVd1Lk9MohVw8LxMXFlnYd9oYTYxfX8KS++kLLjDfbovLOcEEXwRhG612dqGQ6+44SZvim0GXuBRiKg==", "dev": true }, "emittery": { @@ -7727,13 +7727,12 @@ "dev": true }, "stack-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.4.tgz", - "integrity": "sha512-ERg+H//lSSYlZhBIUu+wJnqg30AbyBbpZlIhcshpn7BNzpoRODZgfyr9J+8ERf3ooC6af3u7Lcl01nleau7MrA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", + "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", "dev": true, "requires": { - "escape-string-regexp": "^2.0.0", - "source-map-support": "^0.5.20" + "escape-string-regexp": "^2.0.0" }, "dependencies": { "escape-string-regexp": { @@ -7969,9 +7968,9 @@ } }, "trim-off-newlines": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", - "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.2.tgz", + "integrity": "sha512-DAnbtY4lNoOTLw05HLuvPoBFAGV4zOKQ9d1Q45JB+bcDwYIEkCr0xNgwKtygtKFBbRlFA/8ytkAM1V09QGWksg==", "dev": true }, "ts-node": { diff --git a/package.json b/package.json index 9208962..47fb841 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@types/koa-router": "^7.4.4", "@types/koa-static": "^4.0.2", "@types/mithril": "^2.0.8", - "@types/node": "^16.9.1", + "@types/node": "^16.9.2", "@types/parsimmon": "^1.10.6", "@types/seedrandom": "^3.0.1", "@typescript-eslint/eslint-plugin": "^4.31.1",