diff --git a/src/config.rs b/src/config.rs index f3bff0ad..9d42bff0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -220,7 +220,7 @@ impl Config { Some(t) => Some(try!(t.as_u64() .ok_or(Error::new(ErrorKind::Malformed, "`timeout` should be an integer", - None))) as u32 * 1000), + None))) as u32), None => None, }, dns_cache_capacity: match server.find("dns_cache_capacity") { @@ -285,7 +285,7 @@ impl Config { Some(t) => Some(try!(t.as_u64() .ok_or(Error::new(ErrorKind::Malformed, "`timeout` should be an integer", - None))) as u32 * 1000), + None))) as u32), None => None, }, dns_cache_capacity: match o.get("dns_cache_capacity") { diff --git a/src/relay/tcprelay/local.rs b/src/relay/tcprelay/local.rs index 3d5353bf..607a830b 100644 --- a/src/relay/tcprelay/local.rs +++ b/src/relay/tcprelay/local.rs @@ -322,7 +322,15 @@ impl Relay for TcpRelayLocal { continue; } }; - let _ = stream.set_keepalive(self.config.timeout); + if let Err(err) = stream.set_keepalive(self.config.timeout) { + error!("Failed to set keep alive: {:?}", err); + continue; + } + + if let Err(err) = stream.set_nodelay(true) { + error!("Failed to set no delay: {:?}", err); + continue; + } let mut succeed = false; for _ in 0..server_load_balancer.total() { diff --git a/src/relay/tcprelay/server.rs b/src/relay/tcprelay/server.rs index e49f201c..dd0c8ee4 100644 --- a/src/relay/tcprelay/server.rs +++ b/src/relay/tcprelay/server.rs @@ -70,7 +70,15 @@ impl TcpRelayServer { } }; - let _ = stream.set_keepalive(timeout); + if let Err(err) = stream.set_keepalive(timeout) { + error!("Failed to set keep alive: {:?}", err); + continue; + } + + if let Err(err) = stream.set_nodelay(true) { + error!("Failed to set no delay: {:?}", err); + continue; + } let pwd = pwd.clone(); let encrypt_method = method;