@@ -15,7 +15,7 @@ use crate::net::proxy::ProxyConfig;
15
15
use crate :: net:: session:: SessionStream ;
16
16
use crate :: net:: tls:: wrap_tls;
17
17
use crate :: net:: {
18
- connect_tcp_inner, connect_tls_inner , run_connection_attempts, update_connection_history,
18
+ connect_tcp_inner, run_connection_attempts, update_connection_history,
19
19
} ;
20
20
use crate :: tools:: time;
21
21
@@ -208,16 +208,17 @@ impl Client {
208
208
hostname : & str ,
209
209
strict_tls : bool ,
210
210
) -> Result < Self > {
211
- let tls_stream = connect_tls_inner ( addr, hostname , strict_tls , alpn ( addr . port ( ) ) ) . await ?;
211
+ let tcp_stream = connect_tcp_inner ( addr) . await ?;
212
212
let account_id = context. get_id ( ) ;
213
213
let events = context. events . clone ( ) ;
214
214
let logging_stream = LoggingStream :: new (
215
- tls_stream ,
215
+ tcp_stream ,
216
216
format ! ( "TLS IMAP stream {hostname} ({addr})" ) ,
217
217
account_id,
218
218
events,
219
219
) ;
220
- let buffered_stream = BufWriter :: new ( logging_stream) ;
220
+ let tls_stream = wrap_tls ( strict_tls, hostname, alpn ( addr. port ( ) ) , logging_stream) . await ?;
221
+ let buffered_stream = BufWriter :: new ( tls_stream) ;
221
222
let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
222
223
let mut client = Client :: new ( session_stream) ;
223
224
let _greeting = client
@@ -250,6 +251,15 @@ impl Client {
250
251
async fn connect_starttls ( context : & Context , addr : SocketAddr , host : & str , strict_tls : bool ) -> Result < Self > {
251
252
let tcp_stream = connect_tcp_inner ( addr) . await ?;
252
253
254
+ let account_id = context. get_id ( ) ;
255
+ let events = context. events . clone ( ) ;
256
+ let tcp_stream = LoggingStream :: new (
257
+ tcp_stream,
258
+ format ! ( "STARTTLS IMAP stream {host} ({addr})" ) ,
259
+ account_id,
260
+ events,
261
+ ) ;
262
+
253
263
// Run STARTTLS command and convert the client back into a stream.
254
264
let buffered_tcp_stream = BufWriter :: new ( tcp_stream) ;
255
265
let mut client = async_imap:: Client :: new ( buffered_tcp_stream) ;
@@ -267,16 +277,7 @@ impl Client {
267
277
let tls_stream = wrap_tls ( strict_tls, host, & [ ] , tcp_stream)
268
278
. await
269
279
. context ( "STARTTLS upgrade failed" ) ?;
270
-
271
- let account_id = context. get_id ( ) ;
272
- let events = context. events . clone ( ) ;
273
- let logging_stream = LoggingStream :: new (
274
- tls_stream,
275
- format ! ( "STARTTLS IMAP stream {host} ({addr})" ) ,
276
- account_id,
277
- events,
278
- ) ;
279
- let buffered_stream = BufWriter :: new ( logging_stream) ;
280
+ let buffered_stream = BufWriter :: new ( tls_stream) ;
280
281
let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
281
282
let client = Client :: new ( session_stream) ;
282
283
Ok ( client)
0 commit comments