Skip to content

Commit faff0f5

Browse files
committed
Warn if failed to request 'shadow port'.
1 parent 05bad7d commit faff0f5

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/controller/rooms/experimental/room.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,10 @@ pub fn start_guest(room: Room, player: Option<String>, capture: AppStateCapture)
372372

373373
// To maximum compatibility, try to request the identical port.
374374
// If failed, use a dynamic free port instead.
375-
let local_port = PortRequest::request_specific(port).unwrap_or_else(|| PortRequest::Minecraft.request());
375+
let local_port = PortRequest::request_specific(port).unwrap_or_else(|e| {
376+
logging!("RoomExperiment", "Unable to request shadow port {} on client: {:?}. Mods requiring UDP socket like SimpleVoiceChat may go wrong.", port, e);
377+
PortRequest::Minecraft.request()
378+
});
376379

377380
if !easytier.add_port_forward(&{
378381
let locals = [

src/ports.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use std::io;
12
use std::net::{Ipv4Addr, TcpListener};
23

34
#[repr(u8)]
@@ -9,11 +10,10 @@ pub enum PortRequest {
910
}
1011

1112
impl PortRequest {
12-
pub fn request_specific(port: u16) -> Option<u16> {
13+
pub fn request_specific(port: u16) -> io::Result<u16> {
1314
TcpListener::bind((Ipv4Addr::LOCALHOST, port))
1415
.and_then(|socket| socket.local_addr())
1516
.map(|address| address.port())
16-
.ok()
1717
}
1818

1919
pub fn request(self) -> u16 {

0 commit comments

Comments
 (0)