From 945dc876ffc61f1e2a29bfe4fe9a40d35bfaeac0 Mon Sep 17 00:00:00 2001 From: Paul Rosania Date: Thu, 12 Aug 2021 11:53:56 -0700 Subject: [PATCH 1/2] Fix `null` error in proxy server logging Node's HTTP server `address()` method returns `null` until the server is listening for connections. This commit fixes a bug where `MacUpdater` attempts to log the server port before it is listening. The existing log event is still recorded, without the server address. When the server is listening, a new event is recorded that includes the server address. --- packages/electron-updater/src/MacUpdater.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/electron-updater/src/MacUpdater.ts b/packages/electron-updater/src/MacUpdater.ts index d87dae271c..bd1a0ba2b4 100644 --- a/packages/electron-updater/src/MacUpdater.ts +++ b/packages/electron-updater/src/MacUpdater.ts @@ -80,16 +80,17 @@ export class MacUpdater extends AppUpdater { const logContext = `fileToProxy=${zipFileInfo.url.href}` this.debug(`Creating proxy server for native Squirrel.Mac (${logContext})`) const server = createServer() + this.debug(`Proxy server for native Squirrel.Mac is created (${logContext})`) server.on("close", () => { log.info(`Proxy server for native Squirrel.Mac is closed (${logContext})`) }) + // must be called after server is listening, otherwise address is null function getServerUrl(): string { const address = server.address() as AddressInfo return `http://127.0.0.1:${address.port}` } - this.debug(`Proxy server for native Squirrel.Mac is created (address=${getServerUrl()}, ${logContext})`) return await new Promise>((resolve, reject) => { // insecure random is ok const fileUrl = `/${Date.now().toString(16)}-${Math.floor(Math.random() * 9999).toString(16)}.zip` @@ -145,6 +146,7 @@ export class MacUpdater extends AppUpdater { this.debug(`Proxy server for native Squirrel.Mac is starting to listen (${logContext})`) server.listen(0, "127.0.0.1", () => { + this.debug(`Proxy server for native Squirrel.Mac is listening (address=${getServerUrl()}, ${logContext})`) this.nativeUpdater.setFeedURL({ url: getServerUrl(), headers: { "Cache-Control": "no-cache" }, From 5c7a24c1c52ff0a4405192a5ab7a391fd78ec8e9 Mon Sep 17 00:00:00 2001 From: Mike Maietta Date: Fri, 13 Aug 2021 19:34:19 -0700 Subject: [PATCH 2/2] Create stale-carrots-listen.md --- .changeset/stale-carrots-listen.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/stale-carrots-listen.md diff --git a/.changeset/stale-carrots-listen.md b/.changeset/stale-carrots-listen.md new file mode 100644 index 0000000000..ca5727d45d --- /dev/null +++ b/.changeset/stale-carrots-listen.md @@ -0,0 +1,5 @@ +--- +"electron-updater": patch +--- + +fix(electron-updater): `null` object error when MacUpdater attempts to log the server port before it is listening