diff --git a/.changeset/player-forced-subscribe-crash.md b/.changeset/player-forced-subscribe-crash.md deleted file mode 100644 index 2d3bc2a13..000000000 --- a/.changeset/player-forced-subscribe-crash.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@epicgames-ps/lib-pixelstreamingsignalling-ue5.8': patch -'@epicgames-ps/wilbur': patch ---- - -Stop an unsubscribed player from crashing the signalling server. When a player sends a message without being subscribed, `sendToStreamer` force-subscribes it to the first available streamer and then forwards through `this.subscribedStreamer!`. `subscribe()` can decline — most commonly because `maxSubscribers` is already reached — and reports that only by leaving `subscribedStreamer` unset, so the non-null assertions throw a TypeError out of a websocket message handler and take the process down, disconnecting every other player. It now checks the subscription took, and disconnects just that player if it did not. diff --git a/.changeset/server-player-keepalive.md b/.changeset/server-player-keepalive.md deleted file mode 100644 index 3d28bd7cc..000000000 --- a/.changeset/server-player-keepalive.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@epicgames-ps/lib-pixelstreamingsignalling-ue5.7': patch -'@epicgames-ps/wilbur': patch ---- - -Add an optional server-side keepalive that disconnects players whose connection has died without a clean close. Previously `KeepaliveMonitor` was only used on the client, so a player whose socket dropped silently (sleeping laptop, lost Wi-Fi, killed tab) stayed subscribed until the OS TCP keepalive reaped it, which could hold a `maxSubscribers` slot in the meantime. The new `IServerConfig.playerKeepaliveTimeout` controls this; the signalling server exposes it as `--player_keepalive_timeout ` (default 30000, 0 disables). diff --git a/.changeset/turn-ephemeral-credentials.md b/.changeset/turn-ephemeral-credentials.md deleted file mode 100644 index f078541dd..000000000 --- a/.changeset/turn-ephemeral-credentials.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@epicgames-ps/lib-pixelstreamingsignalling-ue5.8': minor -'@epicgames-ps/wilbur': minor ---- - -Allow TURN credentials to be issued per connection rather than shared by every session. `peerOptions` is static, so a credential written there is sent to every peer that ever connects and cannot be changed without a redeploy — the weakness noted in tip 3 of the security guidelines. `IServerConfig.peerOptionsProvider` is consulted once per connecting peer and returns the peer options for that peer, falling back to `peerOptions` if it throws. On top of it the signalling server adds `--turn_secret` (or `--turn_secret_file`) and `--turn_ttl`, which give every `turn:`/`turns:` entry a time limited username and credential in the form coturn's `use-auth-secret` mode expects. Default behaviour is unchanged when no secret is supplied. See `Docs/Security-Guidelines.md`. diff --git a/Signalling/CHANGELOG.md b/Signalling/CHANGELOG.md index c69a91590..553773475 100644 --- a/Signalling/CHANGELOG.md +++ b/Signalling/CHANGELOG.md @@ -1,5 +1,16 @@ # @epicgames-ps/lib-pixelstreamingsignalling-ue5.6 +## 0.5.0 + +### Minor Changes + +- 818a5d1: Allow TURN credentials to be issued per connection rather than shared by every session. `peerOptions` is static, so a credential written there is sent to every peer that ever connects and cannot be changed without a redeploy — the weakness noted in tip 3 of the security guidelines. `IServerConfig.peerOptionsProvider` is consulted once per connecting peer and returns the peer options for that peer, falling back to `peerOptions` if it throws. On top of it the signalling server adds `--turn_secret` (or `--turn_secret_file`) and `--turn_ttl`, which give every `turn:`/`turns:` entry a time limited username and credential in the form coturn's `use-auth-secret` mode expects. Default behaviour is unchanged when no secret is supplied. See `Docs/Security-Guidelines.md`. + +### Patch Changes + +- 65793ed: Stop an unsubscribed player from crashing the signalling server. When a player sends a message without being subscribed, `sendToStreamer` force-subscribes it to the first available streamer and then forwards through `this.subscribedStreamer!`. `subscribe()` can decline — most commonly because `maxSubscribers` is already reached — and reports that only by leaving `subscribedStreamer` unset, so the non-null assertions throw a TypeError out of a websocket message handler and take the process down, disconnecting every other player. It now checks the subscription took, and disconnects just that player if it did not. +- 1b9c43c: Add an optional server-side keepalive that disconnects players whose connection has died without a clean close. Previously `KeepaliveMonitor` was only used on the client, so a player whose socket dropped silently (sleeping laptop, lost Wi-Fi, killed tab) stayed subscribed until the OS TCP keepalive reaped it, which could hold a `maxSubscribers` slot in the meantime. The new `IServerConfig.playerKeepaliveTimeout` controls this; the signalling server exposes it as `--player_keepalive_timeout ` (default 30000, 0 disables). + ## 0.4.0 ### Minor Changes diff --git a/Signalling/package.json b/Signalling/package.json index 33f806012..a9f6e179d 100644 --- a/Signalling/package.json +++ b/Signalling/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/lib-pixelstreamingsignalling-ue5.7", - "version": "0.4.0", + "version": "0.5.0", "description": "Basic signalling library for developers wishing to build applications that signal a Pixel Streaming application.", "main": "dist/cjs/pixelstreamingsignalling.js", "module": "dist/esm/pixelstreamingsignalling.js", diff --git a/SignallingWebServer/CHANGELOG.md b/SignallingWebServer/CHANGELOG.md index 5d088836b..2695afd67 100644 --- a/SignallingWebServer/CHANGELOG.md +++ b/SignallingWebServer/CHANGELOG.md @@ -1,5 +1,20 @@ # @epicgames-ps/wilbur +## 3.2.0 + +### Minor Changes + +- 818a5d1: Allow TURN credentials to be issued per connection rather than shared by every session. `peerOptions` is static, so a credential written there is sent to every peer that ever connects and cannot be changed without a redeploy — the weakness noted in tip 3 of the security guidelines. `IServerConfig.peerOptionsProvider` is consulted once per connecting peer and returns the peer options for that peer, falling back to `peerOptions` if it throws. On top of it the signalling server adds `--turn_secret` (or `--turn_secret_file`) and `--turn_ttl`, which give every `turn:`/`turns:` entry a time limited username and credential in the form coturn's `use-auth-secret` mode expects. Default behaviour is unchanged when no secret is supplied. See `Docs/Security-Guidelines.md`. + +### Patch Changes + +- 65793ed: Stop an unsubscribed player from crashing the signalling server. When a player sends a message without being subscribed, `sendToStreamer` force-subscribes it to the first available streamer and then forwards through `this.subscribedStreamer!`. `subscribe()` can decline — most commonly because `maxSubscribers` is already reached — and reports that only by leaving `subscribedStreamer` unset, so the non-null assertions throw a TypeError out of a websocket message handler and take the process down, disconnecting every other player. It now checks the subscription took, and disconnects just that player if it did not. +- 1b9c43c: Add an optional server-side keepalive that disconnects players whose connection has died without a clean close. Previously `KeepaliveMonitor` was only used on the client, so a player whose socket dropped silently (sleeping laptop, lost Wi-Fi, killed tab) stayed subscribed until the OS TCP keepalive reaped it, which could hold a `maxSubscribers` slot in the meantime. The new `IServerConfig.playerKeepaliveTimeout` controls this; the signalling server exposes it as `--player_keepalive_timeout ` (default 30000, 0 disables). +- Updated dependencies [65793ed] +- Updated dependencies [1b9c43c] +- Updated dependencies [818a5d1] + - @epicgames-ps/lib-pixelstreamingsignalling-ue5.7@0.5.0 + ## 3.1.1 ### Patch Changes diff --git a/SignallingWebServer/package.json b/SignallingWebServer/package.json index 0d91787b1..d1f7b799c 100644 --- a/SignallingWebServer/package.json +++ b/SignallingWebServer/package.json @@ -1,6 +1,6 @@ { "name": "@epicgames-ps/wilbur", - "version": "3.1.1", + "version": "3.2.0", "description": "A basic signalling server application for Unreal Engine's Pixel Streaming applications.", "main": "dist/index.js", "private": true,