@@ -35,13 +35,27 @@ use std::sync::Arc;
35
35
/// .config(rustls::ServerConfig::new(rustls::NoClientAuth::new()))
36
36
/// .finish();
37
37
/// ```
38
+ ///
39
+ /// ```rust
40
+ /// # use tide_rustls::TlsListener;
41
+ /// let listener = TlsListener::<()>::build()
42
+ /// .addrs("localhost:4433")
43
+ /// .cert("./tls/localhost-4433.cert")
44
+ /// .key("./tls/localhost-4433.key")
45
+ /// .tcp_ttl(60)
46
+ /// .tcp_nodelay(true)
47
+ /// .finish();
48
+ /// ```
49
+
38
50
pub struct TlsListenerBuilder < State > {
39
51
key : Option < PathBuf > ,
40
52
cert : Option < PathBuf > ,
41
53
config : Option < ServerConfig > ,
42
54
tls_acceptor : Option < Arc < dyn CustomTlsAcceptor > > ,
43
55
tcp : Option < TcpListener > ,
44
56
addrs : Option < Vec < SocketAddr > > ,
57
+ tcp_nodelay : Option < bool > ,
58
+ tcp_ttl : Option < u32 > ,
45
59
_state : PhantomData < State > ,
46
60
}
47
61
@@ -54,6 +68,8 @@ impl<State> Default for TlsListenerBuilder<State> {
54
68
tls_acceptor : None ,
55
69
tcp : None ,
56
70
addrs : None ,
71
+ tcp_nodelay : None ,
72
+ tcp_ttl : None ,
57
73
_state : PhantomData ,
58
74
}
59
75
}
@@ -82,6 +98,8 @@ impl<State> std::fmt::Debug for TlsListenerBuilder<State> {
82
98
)
83
99
. field ( "tcp" , & self . tcp )
84
100
. field ( "addrs" , & self . addrs )
101
+ . field ( "tcp_nodelay" , & self . tcp_nodelay )
102
+ . field ( "tcp_ttl" , & self . tcp_ttl )
85
103
. finish ( )
86
104
}
87
105
}
@@ -148,6 +166,18 @@ impl<State> TlsListenerBuilder<State> {
148
166
self
149
167
}
150
168
169
+ /// Provides a TCP_NODELAY option for this tls listener.
170
+ pub fn tcp_nodelay ( mut self , nodelay : bool ) -> Self {
171
+ self . tcp_nodelay = Some ( nodelay) ;
172
+ self
173
+ }
174
+
175
+ /// Provides a TTL option for this tls listener, in seconds.
176
+ pub fn tcp_ttl ( mut self , ttl : u32 ) -> Self {
177
+ self . tcp_ttl = Some ( ttl) ;
178
+ self
179
+ }
180
+
151
181
/// finishes building a TlsListener from this TlsListenerBuilder.
152
182
///
153
183
/// # Errors
@@ -168,6 +198,8 @@ impl<State> TlsListenerBuilder<State> {
168
198
tls_acceptor,
169
199
tcp,
170
200
addrs,
201
+ tcp_nodelay,
202
+ tcp_ttl,
171
203
..
172
204
} = self ;
173
205
@@ -194,6 +226,6 @@ impl<State> TlsListenerBuilder<State> {
194
226
}
195
227
} ;
196
228
197
- Ok ( TlsListener :: new ( connection, config) )
229
+ Ok ( TlsListener :: new ( connection, config, tcp_nodelay , tcp_ttl ) )
198
230
}
199
231
}
0 commit comments