Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pgdog-config/src/networking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ impl std::fmt::Display for Tcp {
if let Some(ref c) = self.congestion_control {
c.as_str()
} else {
""
"default"
},
)
}
Expand Down
22 changes: 14 additions & 8 deletions pgdog/src/backend/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,12 +90,18 @@ impl Server {
) -> Result<Self, Error> {
debug!("=> {}", addr);
let stream = TcpStream::connect(addr.addr().await?).await?;
tweak(&stream)?;
let cfg = config();
let config = config();

let mut stream = Stream::plain(stream, cfg.config.memory.net_buffer);
if let Err(err) = tweak(&stream, &config.config.tcp) {
warn!(
"keepalive settings ({}) are not supported on this system, ignoring, error: {} [{}]",
config.config.tcp, err, addr,
);
}

let mut stream = Stream::plain(stream, config.config.memory.net_buffer);

let tls_mode = cfg.config.general.tls_verify;
let tls_mode = config.config.general.tls_verify;

// Only attempt TLS if not in Disabled mode
if tls_mode != TlsVerifyMode::Disabled {
Expand All @@ -117,7 +123,7 @@ impl Server {

let connector = connector_with_verify_mode(
tls_mode,
cfg.config.general.tls_server_ca_certificate.as_ref(),
config.config.general.tls_server_ca_certificate.as_ref(),
)?;
let plain = stream.take()?;

Expand All @@ -128,7 +134,7 @@ impl Server {
Ok(tls_stream) => {
debug!("TLS handshake successful with {}", addr.host);
let cipher = tokio_rustls::TlsStream::Client(tls_stream);
stream = Stream::tls(cipher, cfg.config.memory.net_buffer);
stream = Stream::tls(cipher, config.config.memory.net_buffer);
}
Err(e) => {
error!("TLS handshake failed with {:?} [{}]", e, addr);
Expand Down Expand Up @@ -260,7 +266,7 @@ impl Server {
addr: addr.clone(),
stream: Some(stream),
id,
stats: Stats::connect(id, addr, &params, &options, &cfg.config.memory),
stats: Stats::connect(id, addr, &params, &options, &config.config.memory),
replication_mode: options.replication_mode(),
params,
changed_params: Parameters::default(),
Expand All @@ -275,7 +281,7 @@ impl Server {
re_synced: false,
sending_request: false,
pooler_mode: PoolerMode::Transaction,
stream_buffer: MessageBuffer::new(cfg.config.memory.message_buffer),
stream_buffer: MessageBuffer::new(config.config.memory.message_buffer),
disconnect_reason: None,
};

Expand Down
10 changes: 9 additions & 1 deletion pgdog/src/frontend/listener.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,17 @@ impl Listener {
}

async fn handle_client(stream: TcpStream, addr: SocketAddr) -> Result<(), Error> {
tweak(&stream)?;
let config = config();

// Not the end of the world if the tweaks are
// not applied.
if let Err(err) = tweak(&stream, &config.config.tcp) {
warn!(
"keepalive settings ({}) are not supported on this system, ignoring, error: {} [{}]",
config.config.tcp, err, addr
);
}

let mut stream = Stream::plain(stream, config.config.memory.net_buffer);

let tls = acceptor();
Expand Down
8 changes: 2 additions & 6 deletions pgdog/src/net/tweaks.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
use std::io::Result;

use pgdog_config::Tcp;
use socket2::{SockRef, TcpKeepalive};
use tokio::net::TcpStream;

use crate::config::config;

pub fn tweak(socket: &TcpStream) -> Result<()> {
let config = config();
let config = &config.config.tcp;

pub fn tweak(socket: &TcpStream, config: &Tcp) -> Result<()> {
// Disable the Nagle algorithm.
socket.set_nodelay(true)?;

Expand Down
Loading