@@ -20,19 +20,13 @@ async fn main() {
20
20
21
21
let local_addr = "0.0.0.0:3000" . parse :: < SocketAddr > ( ) . unwrap ( ) ;
22
22
let tcp_listener = tokio:: net:: TcpListener :: bind ( local_addr) . await . unwrap ( ) ;
23
- let listener = Listener {
24
- inner : TlsListener :: new ( tls_acceptor ( ) , tcp_listener) ,
25
- local_addr,
26
- } ;
23
+ let listener = Listener ( TlsListener :: new ( tls_acceptor ( ) , tcp_listener) ) ;
27
24
28
25
axum:: serve ( listener, app) . await . unwrap ( ) ;
29
26
}
30
27
31
28
// We use a wrapper type to bridge axum's `Listener` trait to our `TlsListener` type.
32
- struct Listener {
33
- inner : TlsListener < TcpListener , tls_config:: Acceptor > ,
34
- local_addr : SocketAddr ,
35
- }
29
+ struct Listener ( TlsListener < TcpListener , tls_config:: Acceptor > ) ;
36
30
37
31
impl axum:: serve:: Listener for Listener {
38
32
type Io = tls_config:: Stream < TcpStream > ;
@@ -41,7 +35,7 @@ impl axum::serve::Listener for Listener {
41
35
loop {
42
36
// To change the TLS certificate dynamically, you could `select!` on this call with a
43
37
// channel receiver, and call `self.inner.replace_acceptor` in the other branch.
44
- match self . inner . accept ( ) . await {
38
+ match self . 0 . accept ( ) . await {
45
39
Ok ( tuple) => break tuple,
46
40
Err ( tls_listener:: Error :: ListenerError ( e) ) if !is_connection_error ( & e) => {
47
41
// See https://github.com/tokio-rs/axum/blob/da3539cb0e5eed381361b2e688a776da77c52cd6/axum/src/serve/listener.rs#L145-L157
@@ -53,7 +47,7 @@ impl axum::serve::Listener for Listener {
53
47
}
54
48
}
55
49
fn local_addr ( & self ) -> io:: Result < Self :: Addr > {
56
- Ok ( self . local_addr )
50
+ self . 0 . listener ( ) . local_addr ( )
57
51
}
58
52
}
59
53
0 commit comments