Skip to content

Commit 4d83661

Browse files
support IPv6 loopback in callback server for macOS compatibility
1 parent d14fc72 commit 4d83661

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

packages/cli/src/utils/local-callback-server.ts

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,26 @@ export function startCallbackServer(): Promise<CallbackServer> {
4646
resolveCallback?.({ status });
4747
});
4848

49-
server.listen(0, '127.0.0.1', () => {
50-
const port = (server.address() as AddressInfo).port;
51-
resolve({
52-
redirectUri: `http://localhost:${port}/callback`,
53-
waitForCallback: () => callbackPromise,
54-
close: () => server.close(),
49+
const startListening = (host: string, fallback?: string) => {
50+
server.listen(0, host, () => {
51+
const port = (server.address() as AddressInfo).port;
52+
resolve({
53+
redirectUri: `http://localhost:${port}/callback`,
54+
waitForCallback: () => callbackPromise,
55+
close: () => server.close(),
56+
});
5557
});
56-
});
5758

58-
server.on('error', reject);
59+
server.once('error', (err) => {
60+
if (fallback) {
61+
server.removeAllListeners('error');
62+
startListening(fallback);
63+
} else {
64+
reject(err);
65+
}
66+
});
67+
};
68+
69+
startListening('::1', '127.0.0.1');
5970
});
6071
}

0 commit comments

Comments
 (0)