Skip to content

Commit de44576

Browse files
committed
feat: decide which tunnel to use based on server tunnel port response
1 parent 5bd2e7a commit de44576

3 files changed

Lines changed: 39 additions & 11 deletions

File tree

Cargo.lock

Lines changed: 11 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ crate-type = ["cdylib"]
1414

1515
[dependencies]
1616
# Shared backing library
17-
pocket-relay-client-shared = { version = "^0.2", path = "../PocketRelayClientShared" }
17+
pocket-relay-client-shared = { version = "^0.3", path = "../PocketRelayClientShared" }
1818

1919
# Logging
2020
env_logger = "0.10"

src/servers.rs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,38 @@ pub fn start_all_servers(ctx: Arc<ClientContext>) {
1313
// Stop existing servers and tasks if they are running
1414
stop_server_tasks();
1515

16-
// Create server tasks
16+
// Spawn redirector server
1717
let redirector = redirector::start_redirector_server();
18-
let blaze = blaze::start_blaze_server(ctx.clone());
19-
let http = http::start_http_server(ctx.clone());
20-
let tunnel = udp_tunnel::start_tunnel_server_v2(ctx.clone());
21-
let qos = qos::start_qos_server();
22-
let telemetry = telemetry::start_telemetry_server(ctx);
23-
24-
// Spawn server tasks
2518
run_server(redirector, "redirector");
19+
20+
// Spawn blaze server
21+
let blaze = blaze::start_blaze_server(ctx.clone());
2622
run_server(blaze, "blaze");
23+
24+
// Spawn http proxy server
25+
let http = http::start_http_server(ctx.clone());
2726
run_server(http, "http");
28-
run_server(tunnel, "tunnel");
27+
28+
// Spawn QoS server
29+
let qos = qos::start_qos_server();
2930
run_server(qos, "qos");
31+
32+
// Spawn tunnel server
33+
match ctx.tunnel_port {
34+
// When UDP tunnel server port is available use the faster UDP tunnel server
35+
Some(tunnel_port) => {
36+
let tunnel = udp_tunnel::start_udp_tunnel_server(ctx.clone(), tunnel_port);
37+
run_server(tunnel, "tunnel");
38+
}
39+
// When unavailable fallback to the HTTP upgrade tunnel
40+
None => {
41+
let tunnel = tunnel::start_tunnel_server(ctx.clone());
42+
run_server(tunnel, "tunnel");
43+
}
44+
};
45+
46+
// Spawn telemetry server
47+
let telemetry = telemetry::start_telemetry_server(ctx);
3048
run_server(telemetry, "telemetry");
3149
}
3250

0 commit comments

Comments
 (0)