From e0218b243362e7991bc4719081c129b1a5fcca2c Mon Sep 17 00:00:00 2001 From: michel Date: Sun, 26 Apr 2026 17:19:15 +0200 Subject: [PATCH] fix: use u16 for listen port end-to-end Port numbers are 16-bit; the codebase had listen_port/listener_port typed as u32, inconsistent with PeerAddress.port (already u16). Migrate the type all the way through the CLI, config, ClientSettings, Client, ServerActor, and the listener entry point. The wire format is preserved: build_set_wait_port_message now takes u16 and widens to u32 via .into() before write_int32. Also rename DEFALT_LISTEN_PORT to DEFAULT_LISTEN_PORT. --- soulseek-rs-lib/src/actor/server_actor.rs | 4 ++-- soulseek-rs-lib/src/client.rs | 8 ++++---- soulseek-rs-lib/src/message/server/message_factory.rs | 6 ++---- soulseek-rs-lib/src/peer/listen.rs | 2 +- soulseek-rs/src/cli.rs | 2 +- soulseek-rs/src/config.rs | 2 +- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/soulseek-rs-lib/src/actor/server_actor.rs b/soulseek-rs-lib/src/actor/server_actor.rs index c22e964..a2e6119 100644 --- a/soulseek-rs-lib/src/actor/server_actor.rs +++ b/soulseek-rs-lib/src/actor/server_actor.rs @@ -129,7 +129,7 @@ pub enum ServerMessage { pub struct ServerActor { address: PeerAddress, context: Arc>, - listen_port: u32, + listen_port: u16, enable_listen: bool, stream: Option, connection_state: ConnectionState, @@ -146,7 +146,7 @@ impl ServerActor { pub fn new( address: PeerAddress, client_channel: Sender, - listen_port: u32, + listen_port: u16, enable_listen: bool, ) -> Self { Self { diff --git a/soulseek-rs-lib/src/client.rs b/soulseek-rs-lib/src/client.rs index 7abeb4a..2b8d9f0 100644 --- a/soulseek-rs-lib/src/client.rs +++ b/soulseek-rs-lib/src/client.rs @@ -27,7 +27,7 @@ use std::{ }; use crate::{debug, error, info, trace, warn}; -const DEFALT_LISTEN_PORT: u32 = 2234; +const DEFAULT_LISTEN_PORT: u16 = 2234; #[derive(Debug, Clone)] pub struct ClientSettings { @@ -35,7 +35,7 @@ pub struct ClientSettings { pub password: String, pub server_address: PeerAddress, pub enable_listen: bool, - pub listen_port: u32, + pub listen_port: u16, } impl ClientSettings { @@ -61,7 +61,7 @@ impl Default for ClientSettings { 2416, ), enable_listen: true, - listen_port: DEFALT_LISTEN_PORT, + listen_port: DEFAULT_LISTEN_PORT, } } } @@ -308,7 +308,7 @@ impl ClientContext { } pub struct Client { enable_listen: bool, - listen_port: u32, + listen_port: u16, address: PeerAddress, username: String, password: String, diff --git a/soulseek-rs-lib/src/message/server/message_factory.rs b/soulseek-rs-lib/src/message/server/message_factory.rs index debb36b..264b79c 100644 --- a/soulseek-rs-lib/src/message/server/message_factory.rs +++ b/soulseek-rs-lib/src/message/server/message_factory.rs @@ -68,12 +68,10 @@ impl MessageFactory { pub fn build_no_parent_message() -> Message { Message::new().write_int32(71).write_bool(true).clone() } - pub fn build_set_wait_port_message(port: u32) -> Message { + pub fn build_set_wait_port_message(port: u16) -> Message { Message::new() .write_int32(2) - .write_int32(port) - // .write_int32(0) - // .write_int32(port) // should be different port + .write_int32(port.into()) .clone() } pub fn build_watch_user(token: u32) -> Message { diff --git a/soulseek-rs-lib/src/peer/listen.rs b/soulseek-rs-lib/src/peer/listen.rs index 28b23f7..8f660c1 100644 --- a/soulseek-rs-lib/src/peer/listen.rs +++ b/soulseek-rs-lib/src/peer/listen.rs @@ -269,7 +269,7 @@ pub struct Listen {} impl Listen { pub fn start( - port: u32, + port: u16, client_sender: Sender, client_context: Arc>, own_username: String, diff --git a/soulseek-rs/src/cli.rs b/soulseek-rs/src/cli.rs index 4095ba4..6b0f7e2 100644 --- a/soulseek-rs/src/cli.rs +++ b/soulseek-rs/src/cli.rs @@ -28,7 +28,7 @@ pub struct Cli { pub disable_listener: bool, #[arg(short, long, env = "LISTENER_PORT", default_value = "2234")] - pub listener_port: u32, + pub listener_port: u16, #[arg(short, long, global = true, action = clap::ArgAction::Count)] pub verbose: u8, diff --git a/soulseek-rs/src/config.rs b/soulseek-rs/src/config.rs index f41c108..d4c3e3c 100644 --- a/soulseek-rs/src/config.rs +++ b/soulseek-rs/src/config.rs @@ -4,7 +4,7 @@ pub struct SearchConfig { pub server_host: String, pub server_port: u16, pub enable_listener: bool, - pub listener_port: u32, + pub listener_port: u16, pub query: String, pub timeout: u64, pub download_dir: String,