Files
firezone/rust/relay
dependabot[bot] 7a19cc4779 Bump serde from 1.0.165 to 1.0.171 in /rust (#1785)
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.165 to
1.0.171.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/serde/releases">serde's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.171</h2>
<ul>
<li>Support <code>derive(Deserialize)</code> on unit structs that have
const generics (<a
href="https://redirect.github.com/serde-rs/serde/issues/2500">#2500</a>,
thanks <a
href="https://github.com/Baptistemontan"><code>@​Baptistemontan</code></a>)</li>
</ul>
<h2>v1.0.170</h2>
<ul>
<li>Produce error message on suffixed string literals inside serde
attributes (<a
href="https://redirect.github.com/serde-rs/serde/issues/2242">#2242</a>)</li>
<li>Support single identifier as unbraced default value for const
generic parameter (<a
href="https://redirect.github.com/serde-rs/serde/issues/2449">#2449</a>)</li>
</ul>
<h2>v1.0.169</h2>
<ul>
<li>Add Deserializer::deserialize_identifier support for adjacently
tagged enums (<a
href="https://redirect.github.com/serde-rs/serde/issues/2475">#2475</a>,
thanks <a
href="https://github.com/Baptistemontan"><code>@​Baptistemontan</code></a>)</li>
<li>Fix unused_braces lint in generated Deserialize impl that uses
braced const generic expressions (<a
href="https://redirect.github.com/serde-rs/serde/issues/2414">#2414</a>)</li>
</ul>
<h2>v1.0.168</h2>
<ul>
<li>Allow <code>serde::de::IgnoredAny</code> to be the type for a
<code>serde(flatten)</code> field (<a
href="https://redirect.github.com/serde-rs/serde/issues/2436">#2436</a>,
thanks <a
href="https://github.com/Mingun"><code>@​Mingun</code></a>)</li>
<li>Allow larger preallocated capacity for smaller elements (<a
href="https://redirect.github.com/serde-rs/serde/issues/2494">#2494</a>)</li>
</ul>
<h2>v1.0.167</h2>
<ul>
<li>Add serialize and deserialize impls for <code>RangeFrom</code> and
<code>RangeTo</code> (<a
href="https://redirect.github.com/serde-rs/serde/issues/2471">#2471</a>,
thanks <a href="https://github.com/tbu"><code>@​tbu</code></a>-)</li>
</ul>
<h2>v1.0.166</h2>
<ul>
<li>Add <code>no-alloc</code> category to crates.io metadata</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="03da66c805"><code>03da66c</code></a>
Release 1.0.171</li>
<li><a
href="f75426f47e"><code>f75426f</code></a>
Inline visitor_expr of unit struct deserialize impl</li>
<li><a
href="662fc3861c"><code>662fc38</code></a>
Add test of const-generic unit struct where-clause edge case</li>
<li><a
href="28c10020b9"><code>28c1002</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2500">#2500</a>
from Baptistemontan/derive_generic_unit_struct</li>
<li><a
href="89c8d85de9"><code>89c8d85</code></a>
allow Deserialize derive to handle generic unit structs</li>
<li><a
href="6502838f27"><code>6502838</code></a>
Release 1.0.170</li>
<li><a
href="c93a0f335a"><code>c93a0f3</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/serde/issues/2499">#2499</a>
from dtolnay/strsuffix</li>
<li><a
href="8264e002a7"><code>8264e00</code></a>
Reject suffixed string literals inside serde attrs</li>
<li><a
href="117ef22142"><code>117ef22</code></a>
Add ui test with suffixed string literals in attribute</li>
<li><a
href="3fb5e71c33"><code>3fb5e71</code></a>
Release 1.0.169</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/serde/compare/v1.0.165...v1.0.171">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=serde&package-manager=cargo&previous-version=1.0.165&new-version=1.0.171)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jamil <jamilbk@users.noreply.github.com>
2023-07-24 17:21:04 +00:00
..

relay

This crate houses a minimalistic STUN & TURN server.

Features

We aim to support the following feature set:

  • STUN binding requests
  • TURN allocate requests
  • TURN refresh requests
  • TURN channel bind requests
  • TURN channel data requests

Relaying of data through other means such as DATA frames is not supported.

Building

You can build the server using: cargo build --release --bin relay

Running

For an up-to-date documentation on the available configurations options and a detailed help text, run cargo run --bin relay -- --help. All command-line options can be overridden using environment variables. Those variables are listed in the --help output at the bottom of each command.

The relay listens on port 3478. This is the standard port for STUN/TURN and not configurable. Additionally, the relay needs to have access to the port range 49152 - 65535 for the allocations.

Portal connection

When given a portal endpoint, the relay will connect to it and wait for an init message before commencing relay operations.

Design

The relay is designed in a sans-IO fashion, meaning the core components do not cause side effects but operate as pure, synchronous state machines. They take in data and emit commands: wake me at this point in time, send these bytes to this peer, etc.

This allows us to very easily unit-test all kinds of scenarios because all inputs are simple values.

The main server runs in a single task and spawns one additional task for each allocation. Incoming data that needs to be relayed is forwarded to the main task where it gets authenticated and relayed on success.