rm -rf mlog/ mkdir -p mlog/relay mlog/client Running interop tests... Relay: ghcr.io/englishm/moq-interop-runner-moq-go-relay:latest Client: ghcr.io/englishm/moq-interop-runner-moq-dev-js-client:latest URL: https://relay:4443 time="2026-10-26T15:16:43Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-26T15:16:43Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-26T15:16:43Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-26T15:16:43Z" level=warning msg="The \"HEX\" variable is not set. Defaulting to a blank string." time="2026-10-26T15:16:43Z" level=warning msg="The \"HEX\" variable is not set. Defaulting to a blank string." Container runner-upstream-relay-1 Recreate Container runner-upstream-relay-1 Recreated Attaching to relay-1, test-client-1 relay-1 | Starting moq relay: port=4443 cert=/certs/cert.pem wt-path=/ (serving raw QUIC and WebTransport; MOQT_TRANSPORT=webtransport is informational) relay-1 | 15:16:43 INF failed to sufficiently increase receive buffer size (was: 1024 kiB, wanted: 7168 kiB, got: 2048 kiB). See https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes for details. relay-1 | 15:16:43 INF relay listening on [::]:4443 (raw QUIC as moqt://0.0.0.0:4443, WebTransport as https://0.0.0.0:4443/) relay-1 | 15:16:43 INF WebTransport server cert SHA-256: 27ba6f09ac3e8e16bedfcf3146ba6861e040cce0b711a4425396949f7e9fd965 relay-1 | 15:16:43 INF → new WebTransport("https://0.0.0.0:4443/", {serverCertificateHashes: [{algorithm: "sha-256", value: new Uint8Array([39,186,111,9,172,62,142,22,190,223,207,49,70,186,104,97,224,64,204,224,183,17,164,66,83,150,148,159,126,159,217,101])}]}) relay-1 | 15:16:43 INF relay accept loop starting component=relay addr=[::]:4443 test-client-1 | TAP version 14 test-client-1 | # moq-dev-js-client v0.1.0 (@moq/net 0.4.4) test-client-1 | # Relay: https://relay:4443 test-client-1 | 1..8 relay-1 | 15:16:49 INF tls: ClientHello from 172.18.0.3:56545 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:49 DBG wtconn: upgrade request remote=172.18.0.3:56545 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:49 DBG wtconn: upgrade ok remote=172.18.0.3:56545 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:49 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1bde840 err=EOF relay-1 | 15:16:49 DBG relay request loop ended component=relay moqt.session=0x2c9fb1bde840 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:49 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | ok 1 - setup-only test-client-1 | --- test-client-1 | duration_ms: 210 test-client-1 | ... relay-1 | 15:16:49 INF tls: ClientHello from 172.18.0.3:53779 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:49 DBG wtconn: upgrade request remote=172.18.0.3:53779 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:49 DBG wtconn: upgrade ok remote=172.18.0.3:53779 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:49 DBG relay dispatching request component=relay moqt.session=0x2c9fb1bdf080 type=*message.PublishNamespace relay-1 | 15:16:49 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1bdf080 err=EOF relay-1 | 15:16:49 DBG relay request loop ended component=relay moqt.session=0x2c9fb1bdf080 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:49 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | ok 2 - announce-only test-client-1 | --- test-client-1 | duration_ms: 611 test-client-1 | ... relay-1 | 15:16:50 INF tls: ClientHello from 172.18.0.3:39986 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:50 DBG wtconn: upgrade request remote=172.18.0.3:39986 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:50 DBG wtconn: upgrade ok remote=172.18.0.3:39986 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:50 DBG relay dispatching request component=relay moqt.session=0x2c9fb1c3f080 type=*message.PublishNamespace relay-1 | 15:16:50 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1c3f080 err=EOF relay-1 | 15:16:50 DBG relay request loop ended component=relay moqt.session=0x2c9fb1c3f080 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:50 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | ok 3 - publish-namespace-done test-client-1 | --- test-client-1 | duration_ms: 809 test-client-1 | ... relay-1 | 15:16:50 INF tls: ClientHello from 172.18.0.3:50500 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:50 DBG wtconn: upgrade request remote=172.18.0.3:50500 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:50 DBG wtconn: upgrade ok remote=172.18.0.3:50500 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:50 INF tls: ClientHello from 172.18.0.3:39419 sni="relay" alpn=[h3] versions=[772] test-client-1 | subscribe_namespace written: requestId=0 relay-1 | 15:16:50 DBG relay dispatching request component=relay moqt.session=0x2c9fb1c3f8c0 type=*message.SubscribeNamespace relay-1 | 15:16:50 DBG wtconn: upgrade request remote=172.18.0.3:39419 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:50 DBG wtconn: upgrade ok remote=172.18.0.3:39419 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:50 DBG relay dispatching request component=relay moqt.session=0x2c9fb1d7e420 type=*message.PublishNamespace test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=true test-client-1 | not ok 4 - subscribe-namespace-lifecycle test-client-1 | --- test-client-1 | duration_ms: 3016 test-client-1 | test_spec_revision: 1 test-client-1 | message: "timeout after 3000ms: NAMESPACE_DONE" test-client-1 | ... relay-1 | 15:16:53 INF tls: ClientHello from 172.18.0.3:32801 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:53 DBG wtconn: upgrade request remote=172.18.0.3:32801 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:53 DBG wtconn: upgrade ok remote=172.18.0.3:32801 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 test-client-1 | subscribe start: id=2 broadcast=nonexistent/namespace track=test-track test-client-1 | subscribe_namespace written: requestId=0 test-client-1 | subscribe written: id=2 broadcast=nonexistent/namespace track=test-track relay-1 | 15:16:53 DBG relay dispatching request component=relay moqt.session=0x2c9fb1cd69a0 type=*message.SubscribeNamespace relay-1 | 15:16:53 DBG relay dispatching request component=relay moqt.session=0x2c9fb1cd69a0 type=*message.Subscribe relay-1 | 15:16:53 DBG SUBSCRIBE received component=relay moqt.session=0x2c9fb1cd69a0 namespace=/nonexistent/namespace name=test-track relay-1 | 15:16:53 DBG SUBSCRIBE no established upstream, trying on-demand component=relay moqt.session=0x2c9fb1cd69a0 entry_exists=false relay-1 | 15:16:53 DBG subscribeUpstream: namespace registry lookup component=relay moqt.session=0x2c9fb1cd69a0 namespace=/nonexistent/namespace publishers_found=0 relay-1 | 15:16:53 INF subscribeUpstream: no upstream established component=relay moqt.session=0x2c9fb1cd69a0 namespace=/nonexistent/namespace name=test-track local_publishers=0 remote_candidates=0 relay-1 | 15:16:53 INF SUBSCRIBE rejected: no publisher for namespace component=relay moqt.session=0x2c9fb1cd69a0 namespace=/nonexistent/namespace name=test-track request_id=2 test-client-1 | subscribe error: id=2 broadcast=nonexistent/namespace track=test-track error=SUBSCRIBE error: does_not_exist (code=16) relay: no publisher for namespace test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=true relay-1 | 15:16:54 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1cd69a0 err=EOF relay-1 | 15:16:54 DBG relay request loop ended component=relay moqt.session=0x2c9fb1cd69a0 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:54 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | subscribe_namespace error: session error: connection error: closed test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=false test-client-1 | broadcast discovery failed; broadcasts resolve on request only. 162 | if (!this.#reader) { test-client-1 | 163 | return false; test-client-1 | 164 | } test-client-1 | 165 | // Every read of this stream funnels through here, so decoding the peer's reset code test-client-1 | 166 | // once is enough to keep the raw transport error out of every caller (and every app). test-client-1 | 167 | const result = await this.#reader.read().catch((err) => { test-client-1 | ^ test-client-1 | error: session error: connection error: closed test-client-1 | code: "GenericFailure" test-client-1 | test-client-1 | at async #fill (/app/node_modules/@moq/net/stream.js:167:50) test-client-1 | at async done (/app/node_modules/@moq/net/stream.js:333:29) test-client-1 | at async (/app/node_modules/@moq/net/ietf/subscriber.js:278:58) test-client-1 | test-client-1 | ok 5 - subscribe-error test-client-1 | --- test-client-1 | duration_ms: 419 test-client-1 | ... relay-1 | 15:16:54 INF tls: ClientHello from 172.18.0.3:44540 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:54 DBG wtconn: upgrade request remote=172.18.0.3:44540 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:54 DBG wtconn: upgrade ok remote=172.18.0.3:44540 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:54 DBG relay dispatching request component=relay moqt.session=0x2c9fb1d7ef20 type=*message.PublishNamespace relay-1 | 15:16:54 INF tls: ClientHello from 172.18.0.3:55909 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:54 DBG wtconn: upgrade request remote=172.18.0.3:55909 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:54 DBG wtconn: upgrade ok remote=172.18.0.3:55909 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 test-client-1 | subscribe_namespace written: requestId=0 relay-1 | 15:16:54 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e22000 type=*message.SubscribeNamespace test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=true test-client-1 | announced: broadcast=moq-test/interop active=true test-client-1 | subscribe start: id=2 broadcast=moq-test/interop track=test-track test-client-1 | subscribe written: id=2 broadcast=moq-test/interop track=test-track relay-1 | 15:16:54 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e22000 type=*message.Subscribe relay-1 | 15:16:54 DBG SUBSCRIBE received component=relay moqt.session=0x2c9fb1e22000 namespace=/moq-test/interop name=test-track relay-1 | 15:16:54 DBG SUBSCRIBE no established upstream, trying on-demand component=relay moqt.session=0x2c9fb1e22000 entry_exists=false relay-1 | 15:16:54 DBG subscribeUpstream: namespace registry lookup component=relay moqt.session=0x2c9fb1e22000 namespace=/moq-test/interop publishers_found=1 relay-1 | 15:16:54 DBG subscribeUpstream: issuing upstream SUBSCRIBE component=relay moqt.session=0x2c9fb1e22000 source=local-publisher test-client-1 | publish ok: broadcast=moq-test/interop track=test-track relay-1 | 15:16:54 DBG SUBSCRIBE_OK sent, waiting for subscriber component=relay moqt.session=0x2c9fb1e22000 name=test-track alias=1 test-client-1 | subscribe ok: id=2 broadcast=moq-test/interop track=test-track relay-1 | 15:16:54 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1d7ef20 err=EOF test-client-1 | publish done: broadcast=moq-test/interop track=test-track test-client-1 | publish error: broadcast=moq-test/interop track=test-track error=session error: connection error: closed relay-1 | 15:16:54 DBG relay request loop ended component=relay moqt.session=0x2c9fb1d7ef20 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:54 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | announced: broadcast=moq-test/interop active=false relay-1 | 15:16:54 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1e22000 err=EOF relay-1 | 15:16:54 DBG SUBSCRIBE stream ended component=relay moqt.session=0x2c9fb1e22000 name=test-track relay-1 | 15:16:54 DBG relay request loop ended component=relay moqt.session=0x2c9fb1e22000 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:54 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | subscribe_namespace error: session error: connection error: closed test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=false test-client-1 | broadcast discovery failed; broadcasts resolve on request only. 162 | if (!this.#reader) { test-client-1 | 163 | return false; test-client-1 | 164 | } test-client-1 | 165 | // Every read of this stream funnels through here, so decoding the peer's reset code test-client-1 | 166 | // once is enough to keep the raw transport error out of every caller (and every app). test-client-1 | 167 | const result = await this.#reader.read().catch((err) => { test-client-1 | ^ test-client-1 | error: session error: connection error: closed test-client-1 | code: "GenericFailure" test-client-1 | test-client-1 | at async #fill (/app/node_modules/@moq/net/stream.js:167:50) test-client-1 | at async done (/app/node_modules/@moq/net/stream.js:333:29) test-client-1 | at async (/app/node_modules/@moq/net/ietf/subscriber.js:278:58) test-client-1 | test-client-1 | ok 6 - announce-subscribe test-client-1 | --- test-client-1 | duration_ms: 524 test-client-1 | ... relay-1 | 15:16:54 INF tls: ClientHello from 172.18.0.3:51533 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:54 DBG wtconn: upgrade request remote=172.18.0.3:51533 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:54 DBG wtconn: upgrade ok remote=172.18.0.3:51533 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 test-client-1 | subscribe_namespace written: requestId=0 relay-1 | 15:16:54 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e22dc0 type=*message.SubscribeNamespace test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=true relay-1 | 15:16:55 INF tls: ClientHello from 172.18.0.3:55332 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:55 DBG wtconn: upgrade request remote=172.18.0.3:55332 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:55 DBG wtconn: upgrade ok remote=172.18.0.3:55332 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:55 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e8a000 type=*message.PublishNamespace test-client-1 | announced: broadcast=moq-test/interop active=true test-client-1 | subscribe start: id=2 broadcast=moq-test/interop track=test-track test-client-1 | subscribe written: id=2 broadcast=moq-test/interop track=test-track relay-1 | 15:16:55 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e22dc0 type=*message.Subscribe relay-1 | 15:16:55 DBG SUBSCRIBE received component=relay moqt.session=0x2c9fb1e22dc0 namespace=/moq-test/interop name=test-track relay-1 | 15:16:55 DBG SUBSCRIBE no established upstream, trying on-demand component=relay moqt.session=0x2c9fb1e22dc0 entry_exists=false relay-1 | 15:16:55 DBG subscribeUpstream: namespace registry lookup component=relay moqt.session=0x2c9fb1e22dc0 namespace=/moq-test/interop publishers_found=1 relay-1 | 15:16:55 DBG subscribeUpstream: issuing upstream SUBSCRIBE component=relay moqt.session=0x2c9fb1e22dc0 source=local-publisher relay-1 | 15:16:55 DBG SUBSCRIBE_OK sent, waiting for subscriber component=relay moqt.session=0x2c9fb1e22dc0 name=test-track alias=1 test-client-1 | publish ok: broadcast=moq-test/interop track=test-track test-client-1 | subscribe ok: id=2 broadcast=moq-test/interop track=test-track relay-1 | 15:16:55 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1e8a000 err=EOF relay-1 | 15:16:55 DBG relay request loop ended component=relay moqt.session=0x2c9fb1e8a000 err="moqt/session: peer closed with code 0x0: " test-client-1 | publish done: broadcast=moq-test/interop track=test-track relay-1 | 15:16:55 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | publish error: broadcast=moq-test/interop track=test-track error=session error: connection error: closed test-client-1 | announced: broadcast=moq-test/interop active=false relay-1 | 15:16:55 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1e22dc0 err=EOF relay-1 | 15:16:55 DBG SUBSCRIBE stream ended component=relay moqt.session=0x2c9fb1e22dc0 name=test-track relay-1 | 15:16:55 DBG relay request loop ended component=relay moqt.session=0x2c9fb1e22dc0 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:55 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | subscribe_namespace error: session error: connection error: closed test-client-1 | announced: broadcast=moq-test/interop/subscribe-namespace-lifecycle/e01abfa110b969016c4a85622af6b556 active=false test-client-1 | broadcast discovery failed; broadcasts resolve on request only. 162 | if (!this.#reader) { test-client-1 | 163 | return false; test-client-1 | 164 | } test-client-1 | 165 | // Every read of this stream funnels through here, so decoding the peer's reset code test-client-1 | 166 | // once is enough to keep the raw transport error out of every caller (and every app). test-client-1 | 167 | const result = await this.#reader.read().catch((err) => { test-client-1 | ^ test-client-1 | error: session error: connection error: closed test-client-1 | code: "GenericFailure" test-client-1 | test-client-1 | at async #fill (/app/node_modules/@moq/net/stream.js:167:50) test-client-1 | at async done (/app/node_modules/@moq/net/stream.js:333:29) test-client-1 | at async (/app/node_modules/@moq/net/ietf/subscriber.js:278:58) test-client-1 | test-client-1 | ok 7 - subscribe-before-announce test-client-1 | --- test-client-1 | duration_ms: 719 test-client-1 | ... relay-1 | 15:16:55 INF tls: ClientHello from 172.18.0.3:37230 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:55 DBG wtconn: upgrade request remote=172.18.0.3:37230 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:55 DBG wtconn: upgrade ok remote=172.18.0.3:37230 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 relay-1 | 15:16:55 DBG relay dispatching request component=relay moqt.session=0x2c9fb1f1e000 type=*message.PublishNamespace relay-1 | 15:16:55 INF tls: ClientHello from 172.18.0.3:47887 sni="relay" alpn=[h3] versions=[772] relay-1 | 15:16:55 DBG wtconn: upgrade request remote=172.18.0.3:47887 method=CONNECT path=/ proto=webtransport origin="" relay-1 | 15:16:55 DBG wtconn: upgrade ok remote=172.18.0.3:47887 wt_protocol=moqt-22 test-client-1 | https://relay:4443/ connected via WebTransport test-client-1 | https://relay:4443/ negotiated ALPN: moqt-22 test-client-1 | subscribe_namespace written: requestId=0 relay-1 | 15:16:55 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e8b1e0 type=*message.SubscribeNamespace test-client-1 | announced: broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95 active=true test-client-1 | subscribe start: id=2 broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track test-client-1 | subscribe written: id=2 broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track relay-1 | 15:16:55 DBG relay dispatching request component=relay moqt.session=0x2c9fb1e8b1e0 type=*message.Subscribe relay-1 | 15:16:55 DBG SUBSCRIBE received component=relay moqt.session=0x2c9fb1e8b1e0 namespace=/moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 name=track relay-1 | 15:16:55 DBG SUBSCRIBE no established upstream, trying on-demand component=relay moqt.session=0x2c9fb1e8b1e0 entry_exists=false relay-1 | 15:16:55 DBG subscribeUpstream: namespace registry lookup component=relay moqt.session=0x2c9fb1e8b1e0 namespace=/moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 publishers_found=1 relay-1 | 15:16:55 DBG subscribeUpstream: issuing upstream SUBSCRIBE component=relay moqt.session=0x2c9fb1e8b1e0 source=local-publisher test-client-1 | publish ok: broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track relay-1 | 15:16:55 DBG SUBSCRIBE_OK sent, waiting for subscriber component=relay moqt.session=0x2c9fb1e8b1e0 name=track alias=1 test-client-1 | subscribe ok: id=2 broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track test-client-1 | subscribe close: id=2 broadcast=moq-test/interop track=test-track test-client-1 | publish done: broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track test-client-1 | subscribe close: id=2 broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95/moq-test-00/0/0/0/2/4/5/64/32/2/1/1/0/-1/-1/0 track=track relay-1 | 15:16:55 DBG SUBSCRIBE stream ended component=relay moqt.session=0x2c9fb1e8b1e0 name=track relay-1 | 15:16:55 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1f1e000 err=EOF relay-1 | 15:16:55 DBG relay request loop ended component=relay moqt.session=0x2c9fb1f1e000 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:55 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | announced: broadcast=moq-test/data-subgroup-basic/cd0b2f02ebd693769c5c547770d73b95 active=false relay-1 | 15:16:55 DBG relay datagram loop ended; datagrams unavailable on this session component=relay moqt.session=0x2c9fb1e8b1e0 err=EOF relay-1 | 15:16:55 DBG relay request loop ended component=relay moqt.session=0x2c9fb1e8b1e0 err="moqt/session: peer closed with code 0x0: " relay-1 | 15:16:55 DBG relay session handler returned component=relay err="moqt/session: peer closed with code 0x0: " test-client-1 | subscribe_namespace error: session error: connection error: closed test-client-1 | broadcast discovery failed; broadcasts resolve on request only. 162 | if (!this.#reader) { test-client-1 | 163 | return false; test-client-1 | 164 | } test-client-1 | 165 | // Every read of this stream funnels through here, so decoding the peer's reset code test-client-1 | 166 | // once is enough to keep the raw transport error out of every caller (and every app). test-client-1 | 167 | const result = await this.#reader.read().catch((err) => { test-client-1 | ^ test-client-1 | error: session error: connection error: closed test-client-1 | code: "GenericFailure" test-client-1 | test-client-1 | at async #fill (/app/node_modules/@moq/net/stream.js:167:50) test-client-1 | at async done (/app/node_modules/@moq/net/stream.js:333:29) test-client-1 | at async (/app/node_modules/@moq/net/ietf/subscriber.js:278:58) test-client-1 | test-client-1 | ok 8 - data-subgroup-basic test-client-1 | --- test-client-1 | duration_ms: 285 test-client-1 | test_spec_revision: 2 test-client-1 | ... test-client-1 exited with code 1 Aborting on container exit... Container runner-upstream-test-client-1 Stopping Container runner-upstream-test-client-1 Stopped Container runner-upstream-relay-1 Stopping Container runner-upstream-relay-1 Stopped make: *** [Makefile:86: test] Error 1