@@ -8,15 +8,13 @@ use tokio::io::BufWriter;
88
99use super :: capabilities:: Capabilities ;
1010use crate :: context:: Context ;
11- use crate :: log:: { info, warn} ;
11+ use crate :: log:: { LoggingStream , info, warn} ;
1212use crate :: login_param:: { ConnectionCandidate , ConnectionSecurity } ;
1313use crate :: net:: dns:: { lookup_host_with_cache, update_connect_timestamp} ;
1414use crate :: net:: proxy:: ProxyConfig ;
1515use crate :: net:: session:: SessionStream ;
1616use crate :: net:: tls:: wrap_tls;
17- use crate :: net:: {
18- connect_tcp_inner, connect_tls_inner, run_connection_attempts, update_connection_history,
19- } ;
17+ use crate :: net:: { connect_tcp_inner, run_connection_attempts, update_connection_history} ;
2018use crate :: tools:: time;
2119
2220#[ derive( Debug ) ]
@@ -126,12 +124,12 @@ impl Client {
126124 ) ;
127125 let res = match security {
128126 ConnectionSecurity :: Tls => {
129- Client :: connect_secure ( resolved_addr, host, strict_tls) . await
127+ Client :: connect_secure ( context , resolved_addr, host, strict_tls) . await
130128 }
131129 ConnectionSecurity :: Starttls => {
132- Client :: connect_starttls ( resolved_addr, host, strict_tls) . await
130+ Client :: connect_starttls ( context , resolved_addr, host, strict_tls) . await
133131 }
134- ConnectionSecurity :: Plain => Client :: connect_insecure ( resolved_addr) . await ,
132+ ConnectionSecurity :: Plain => Client :: connect_insecure ( context , resolved_addr) . await ,
135133 } ;
136134 match res {
137135 Ok ( client) => {
@@ -202,8 +200,17 @@ impl Client {
202200 }
203201 }
204202
205- async fn connect_secure ( addr : SocketAddr , hostname : & str , strict_tls : bool ) -> Result < Self > {
206- let tls_stream = connect_tls_inner ( addr, hostname, strict_tls, alpn ( addr. port ( ) ) ) . await ?;
203+ async fn connect_secure (
204+ context : & Context ,
205+ addr : SocketAddr ,
206+ hostname : & str ,
207+ strict_tls : bool ,
208+ ) -> Result < Self > {
209+ let tcp_stream = connect_tcp_inner ( addr) . await ?;
210+ let account_id = context. get_id ( ) ;
211+ let events = context. events . clone ( ) ;
212+ let logging_stream = LoggingStream :: new ( tcp_stream, account_id, events) ;
213+ let tls_stream = wrap_tls ( strict_tls, hostname, alpn ( addr. port ( ) ) , logging_stream) . await ?;
207214 let buffered_stream = BufWriter :: new ( tls_stream) ;
208215 let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
209216 let mut client = Client :: new ( session_stream) ;
@@ -214,9 +221,12 @@ impl Client {
214221 Ok ( client)
215222 }
216223
217- async fn connect_insecure ( addr : SocketAddr ) -> Result < Self > {
224+ async fn connect_insecure ( context : & Context , addr : SocketAddr ) -> Result < Self > {
218225 let tcp_stream = connect_tcp_inner ( addr) . await ?;
219- let buffered_stream = BufWriter :: new ( tcp_stream) ;
226+ let account_id = context. get_id ( ) ;
227+ let events = context. events . clone ( ) ;
228+ let logging_stream = LoggingStream :: new ( tcp_stream, account_id, events) ;
229+ let buffered_stream = BufWriter :: new ( logging_stream) ;
220230 let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
221231 let mut client = Client :: new ( session_stream) ;
222232 let _greeting = client
@@ -226,9 +236,18 @@ impl Client {
226236 Ok ( client)
227237 }
228238
229- async fn connect_starttls ( addr : SocketAddr , host : & str , strict_tls : bool ) -> Result < Self > {
239+ async fn connect_starttls (
240+ context : & Context ,
241+ addr : SocketAddr ,
242+ host : & str ,
243+ strict_tls : bool ,
244+ ) -> Result < Self > {
230245 let tcp_stream = connect_tcp_inner ( addr) . await ?;
231246
247+ let account_id = context. get_id ( ) ;
248+ let events = context. events . clone ( ) ;
249+ let tcp_stream = LoggingStream :: new ( tcp_stream, account_id, events) ;
250+
232251 // Run STARTTLS command and convert the client back into a stream.
233252 let buffered_tcp_stream = BufWriter :: new ( tcp_stream) ;
234253 let mut client = async_imap:: Client :: new ( buffered_tcp_stream) ;
@@ -246,7 +265,6 @@ impl Client {
246265 let tls_stream = wrap_tls ( strict_tls, host, & [ ] , tcp_stream)
247266 . await
248267 . context ( "STARTTLS upgrade failed" ) ?;
249-
250268 let buffered_stream = BufWriter :: new ( tls_stream) ;
251269 let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
252270 let client = Client :: new ( session_stream) ;
0 commit comments