Files
soulseek-rs-modded/soulseek-rs/Cargo.toml
T
Michel de Graaf 220beb4e41 fix(daemon): ask the OS for enough open files, and stop spinning when it says no
A search fans out to hundreds of peers, each holding a socket. A shell hands
its children a soft limit of 256 open files on macOS, which one busy search
blows straight through; a one-shot command never noticed because it exited
before it mattered, but a resident daemon hits it and then cannot accept peers
or control connections. From a client that looks like 'cannot reach the
daemon: Connection closed', intermittently, for no visible reason.

The daemon now raises its own soft limit to 8192 at startup, before anything
opens a socket, and says so plainly when the hard limit will not allow it.
macOS rejects an unlimited hard limit for open files, so both fields are named.

Both accept loops also slept zero on failure. Out of descriptors does not clear
by the next instruction, so one exhausted moment became a spinning core and
thousands of identical log lines — which is what the report looked like. They
now back off.
2026-07-27 20:16:41 +02:00

53 lines
1.5 KiB
TOML

[package]
name = "soulseek-rs"
version.workspace = true
authors.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Command-line client for Soulseek protocol"
keywords = ["soulseek", "p2p", "client", "file-sharing"]
categories = ["command-line-utilities"]
[[bin]]
name = "soulseek-rs"
path = "src/main.rs"
# Small library target so integration tests can exercise the persistence
# pipeline; the dependency soulseek-rs-lib already owns the `soulseek_rs`
# crate name, hence the distinct one.
[lib]
name = "soulseek_rs_tui"
path = "src/lib.rs"
[lints]
workspace = true
[dependencies]
soulseek-rs-lib = { version = "12.0.0", path = "../soulseek-rs-lib" }
clap = { version = "4.6.2", features = ["derive", "color", "wrap_help", "env"] }
clap_complete = "4.6.7"
ratatui = "0.30.2"
color-eyre = "0.6.5"
dotenv = "0.15.0"
igd-next = "0.17"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.9"
directories = "6"
# Linux uses the pure-Rust zbus Secret Service backend (async-secret-service
# + async-io + crypto-rust) instead of sync-secret-service, which links the
# system libdbus and breaks builds without libdbus-1-dev.
keyring = { version = "3", features = ["apple-native", "windows-native", "async-secret-service", "async-io", "crypto-rust"] }
chrono = { version = "0.4.45", default-features = false, features = ["clock", "serde"] }
getrandom = "0.4.3"
[dev-dependencies]
schemars = "1.2.1"
tempfile = "3"
[target."cfg(unix)".dependencies]
libc = "0.2.189"