diff --git a/package-lock.json b/package-lock.json index 6b504cb9..195b6308 100644 Binary files a/package-lock.json and b/package-lock.json differ diff --git a/package.json b/package.json index 7c4c0f38..b8cd7198 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "lru-cache": "^7.18.3", "nostr-tools": "^1.7.4", "npm-run-all": "^4.1.5", - "paravel": "^0.1.10", + "paravel": "^0.1.11", "qr-scanner": "^1.4.2", "qrcode": "^1.5.1", "ramda": "^0.28.0", diff --git a/src/agent/pool.ts b/src/agent/pool.ts index ac578b9d..e505250a 100644 --- a/src/agent/pool.ts +++ b/src/agent/pool.ts @@ -159,11 +159,22 @@ function getExecutor(urls) { urls = forceUrls } - const executor = new Executor( - Config.multiplextrUrl - ? new Plex(urls, pool.get(Config.multiplextrUrl)) - : new Relays(urls.map(url => pool.get(url))) - ) + let target + + // Try to use our multiplexer, but if it fails to connect fall back to relays + if (Config.multiplextrUrl) { + const socket = pool.get(Config.multiplextrUrl) + + if (!socket.error) { + target = new Plex(urls, pool.get(Config.multiplextrUrl)) + } + } + + if (!target) { + target = new Relays(urls.map(url => pool.get(url))) + } + + const executor = new Executor(target) executor.handleAuth({ onAuth(url, challenge) {