Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(electron-updater): null object error when MacUpdater logs server port before it is listening #6149

Merged
merged 2 commits into from Aug 14, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions .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
4 changes: 3 additions & 1 deletion packages/electron-updater/src/MacUpdater.ts
Expand Up @@ -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<Array<string>>((resolve, reject) => {
// insecure random is ok
const fileUrl = `/${Date.now().toString(16)}-${Math.floor(Math.random() * 9999).toString(16)}.zip`
Expand Down Expand Up @@ -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" },
Expand Down