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:
Michel de Graaf
2026-07-25 21:51:58 +02:00
committed by GitHub
parent e2c2b5063a
commit d2f3dd13d7
9 changed files with 93 additions and 39 deletions
+6 -3
View File
@@ -24,7 +24,7 @@ use crate::message::{Handlers, MessageType};
use crate::message::{Message, MessageReader};
use crate::peer::ConnectionType;
use crate::peer::Peer;
use crate::types::{RoomEvent, RoomInfo};
use crate::types::{ClientVersion, RoomEvent, RoomInfo};
use crate::utils::lock::RwLockExt;
use std::io::{self, Error, Write};
@@ -159,6 +159,7 @@ pub enum ServerMessage {
Login {
username: String,
password: String,
version: ClientVersion,
response: std::sync::mpsc::Sender<Result<bool, SoulseekRs>>,
},
FileSearch {
@@ -533,9 +534,10 @@ impl ServerActor {
ServerMessage::Login {
username,
password,
version,
response,
} => {
self.handle_login(username, password, response);
self.handle_login(username, password, version, response);
}
ServerMessage::FileSearch { token, query } => {
self.file_search(token, &query);
@@ -640,10 +642,11 @@ impl ServerActor {
&mut self,
username: String,
password: String,
version: ClientVersion,
response: std::sync::mpsc::Sender<Result<bool, SoulseekRs>>,
) {
self.queue_message(MessageFactory::build_login_message(
&username, &password,
&username, &password, version,
));
let start = std::time::Instant::now();