Skip to content

Commit 83a1948

Browse files
committed
Add TCP_NODELAY and TTL options.
1 parent b1cfe68 commit 83a1948

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

src/tls_listener.rs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ pub struct TlsListener<State> {
2727
connection: TcpConnection,
2828
config: TlsListenerConfig,
2929
server: Option<Server<State>>,
30+
tcp_nodelay: Option<bool>,
31+
tcp_ttl: Option<u32>,
3032
}
3133

3234
impl<State> Debug for TlsListener<State> {
@@ -52,6 +54,8 @@ impl<State> TlsListener<State> {
5254
connection,
5355
config,
5456
server: None,
57+
tcp_nodelay: None,
58+
tcp_ttl: None,
5559
}
5660
}
5761
/// The primary entrypoint to create a TlsListener. See
@@ -125,6 +129,32 @@ impl<State> TlsListener<State> {
125129
}
126130
Ok(())
127131
}
132+
133+
/// Set TCP_NODELAY socket option.
134+
pub fn set_nodelay(&mut self, nodelay: bool) {
135+
self.tcp_nodelay = Some(nodelay);
136+
}
137+
138+
/// Get TCP_NODELAY socket option.
139+
pub fn nodelay(&self) -> Option<bool> {
140+
self.tcp_nodelay
141+
}
142+
143+
/// Set TCP_NODELAY socket option.
144+
pub fn with_nodelay(mut self, nodelay: bool) -> Self {
145+
self.set_nodelay(nodelay);
146+
self
147+
}
148+
149+
/// Set TTL option.
150+
pub fn set_ttl(&mut self, ttl: u32) {
151+
self.tcp_ttl = Some(ttl);
152+
}
153+
154+
/// Get TTL option.
155+
pub fn ttl(&self) -> Option<u32> {
156+
self.tcp_ttl
157+
}
128158
}
129159

130160
fn handle_tls<State: Clone + Send + Sync + 'static>(
@@ -203,7 +233,17 @@ impl<State: Clone + Send + Sync + 'static> Listener<State> for TlsListener<State
203233
continue;
204234
}
205235

206-
Ok(stream) => handle_tls(server.clone(), stream, acceptor.clone()),
236+
Ok(stream) => {
237+
if let Some(nodelay) = self.tcp_nodelay {
238+
stream.set_nodelay(nodelay)?;
239+
}
240+
241+
if let Some(ttl) = self.tcp_ttl {
242+
stream.set_ttl(ttl)?;
243+
}
244+
245+
handle_tls(server.clone(), stream, acceptor.clone())
246+
},
207247
};
208248
}
209249
Ok(())

0 commit comments

Comments
 (0)