diff --git a/streaming/index.js b/streaming/index.js index d94649d6e..5ef1f6f31 100644 --- a/streaming/index.js +++ b/streaming/index.js @@ -1351,15 +1351,23 @@ const startServer = async () => { * @param {function(string): void} [onSuccess] */ const attachServerWithConfig = (server, onSuccess) => { - if (process.env.SOCKET || process.env.PORT && isNaN(+process.env.PORT)) { - server.listen(process.env.SOCKET || process.env.PORT, () => { + if (process.env.SOCKET) { + server.listen(process.env.SOCKET, () => { if (onSuccess) { fs.chmodSync(server.address(), 0o666); onSuccess(server.address()); } }); } else { - server.listen(+(process.env.PORT || 4000), process.env.BIND || '127.0.0.1', () => { + const port = +(process.env.PORT || 4000); + let bind = process.env.BIND ?? '127.0.0.1'; + // Web uses the URI syntax for BIND, which means IPv6 addresses may + // be wrapped in square brackets: + if (bind.startsWith('[') && bind.endsWith(']')) { + bind = bind.slice(1, -1); + } + + server.listen(port, bind, () => { if (onSuccess) { onSuccess(`${server.address().address}:${server.address().port}`); }