feat: log in with soulseek-rs's own client major version (176) (#13)
The Login message hardcoded SoulseekQt's major version 157, so the server could not tell soulseek-rs apart from the official client. The protocol document now reserves a unique major version per project, so claim 176 and send it via a new ClientVersion on ClientSettings. Clients and bots built on the library keep major 176 and pick their own minor version (default 1); the reference CLI/TUI logs in with minor 100. Refs #12
This commit is contained in:
@@ -28,7 +28,9 @@ use std::time::{Duration, Instant};
|
||||
use soulseek_rs::message::Message;
|
||||
use soulseek_rs::message::server::MessageFactory;
|
||||
use soulseek_rs::peer::ConnectionType;
|
||||
use soulseek_rs::{Client, ClientSettings, DownloadStatus, PeerAddress};
|
||||
use soulseek_rs::{
|
||||
Client, ClientSettings, ClientVersion, DownloadStatus, PeerAddress,
|
||||
};
|
||||
|
||||
/// A Soulseek server to test against: either a child soulfind process we
|
||||
/// spawned, or an external server referenced by `SOULSEEK_TEST_SERVER`.
|
||||
@@ -97,6 +99,7 @@ impl TestServer {
|
||||
enable_listen: false,
|
||||
listen_port: 0,
|
||||
shared_directories: Vec::new(),
|
||||
version: ClientVersion::default(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -601,7 +604,12 @@ fn login_raw(
|
||||
let mut srv = connect_retry(server_addr, Duration::from_secs(5))?;
|
||||
srv.set_read_timeout(Some(Duration::from_secs(10)))?;
|
||||
srv.write_all(
|
||||
&MessageFactory::build_login_message(username, password).get_buffer(),
|
||||
&MessageFactory::build_login_message(
|
||||
username,
|
||||
password,
|
||||
ClientVersion::default(),
|
||||
)
|
||||
.get_buffer(),
|
||||
)?;
|
||||
srv.flush()?;
|
||||
loop {
|
||||
@@ -816,8 +824,12 @@ fn run_mock_direct_peer(cfg: &MockDirectUpload) -> std::io::Result<()> {
|
||||
let mut srv = connect_retry(&cfg.server_addr, Duration::from_secs(5))?;
|
||||
srv.set_read_timeout(Some(Duration::from_secs(10)))?;
|
||||
srv.write_all(
|
||||
&MessageFactory::build_login_message(&cfg.username, &cfg.password)
|
||||
.get_buffer(),
|
||||
&MessageFactory::build_login_message(
|
||||
&cfg.username,
|
||||
&cfg.password,
|
||||
ClientVersion::default(),
|
||||
)
|
||||
.get_buffer(),
|
||||
)?;
|
||||
srv.flush()?;
|
||||
loop {
|
||||
|
||||
Reference in New Issue
Block a user