Bump russh, set TCP_NODELAY (#1447)

This commit is contained in:
Eugene 2025-08-02 20:13:10 +02:00 committed by GitHub
parent 5a4b29532d
commit f90c529b07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 16 additions and 7 deletions

4
Cargo.lock generated
View file

@ -3690,9 +3690,9 @@ dependencies = [
[[package]]
name = "russh"
version = "0.53.0"
version = "0.54.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b71d6d784c75ab19c421b7c3df21b100c9643f8b2563ae345a495ee792e85e4"
checksum = "0b6bf7e0751f391a95dfb2feff66a5adafaad2fd98f0e04f10619958253d92fe"
dependencies = [
"aes",
"aws-lc-rs",

View file

@ -24,7 +24,7 @@ bytes = { version = "1.4", default-features = false }
data-encoding = { version = "2.3", default-features = false, features = ["alloc", "std"] }
serde = { version = "1.0", features = ["derive"], default-features = false }
serde_json = { version = "1.0", default-features = false }
russh = { version = "0.53.0", features = ["des", "aws-lc-rs"], default-features = false }
russh = { version = "0.54.0", features = ["des", "rsa", "aws-lc-rs"], default-features = false }
futures = { version = "0.3", default-features = false }
tokio-stream = { version = "0.1.17", features = ["net"], default-features = false }
tokio-rustls = { version = "0.26", default-features = false }

View file

@ -57,8 +57,10 @@ impl MySqlClient {
target: &TargetMySqlOptions,
mut options: ConnectionOptions,
) -> Result<Self, MySqlError> {
let mut stream =
MySqlStream::new(TcpStream::connect((target.host.clone(), target.port)).await?);
let stream = TcpStream::connect((target.host.clone(), target.port)).await?;
stream.set_nodelay(true)?;
let mut stream = MySqlStream::new(stream);
options.capabilities.remove(Capabilities::SSL);
if target.tls.mode != TlsMode::Disabled {

View file

@ -75,6 +75,8 @@ impl ProtocolServer for MySQLProtocolServer {
};
let remote_address = stream.peer_addr().context("getting peer address")?;
stream.set_nodelay(true)?;
let tls_config = tls_config.clone();
let services = self.services.clone();
tokio::spawn(async move {

View file

@ -56,8 +56,10 @@ impl PostgresClient {
target: &TargetPostgresOptions,
options: ConnectionOptions,
) -> Result<Self, PostgresError> {
let mut stream =
PostgresStream::new(TcpStream::connect((target.host.clone(), target.port)).await?);
let stream = TcpStream::connect((target.host.clone(), target.port)).await?;
stream.set_nodelay(true)?;
let mut stream = PostgresStream::new(stream);
if target.tls.mode != TlsMode::Disabled {
stream.push(pgwire::messages::startup::SslRequest::new())?;

View file

@ -77,6 +77,7 @@ impl ProtocolServer for PostgresProtocolServer {
};
let remote_address = stream.peer_addr().context("getting peer address")?;
stream.set_nodelay(true)?;
let tls_config = tls_config.clone();
let services = self.services.clone();

View file

@ -489,6 +489,7 @@ impl RemoteClient {
let config = russh::client::Config {
preferred: algos,
nodelay: true,
..Default::default()
};
let config = Arc::new(config);

View file

@ -40,6 +40,7 @@ pub async fn run_server(services: Services, address: ListenEndpoint) -> Result<(
),
keys: vec![load_host_keys(&config)?],
event_buffer_size: 100,
nodelay: true,
preferred: Preferred {
key: Cow::Borrowed(&[
Algorithm::Ed25519,