@@ -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
@@ -255,6 +256,15 @@ impl Client {
255
256
) -> Result < Self > {
256
257
let tcp_stream = connect_tcp_inner ( addr) . await ?;
257
258
259
+ let account_id = context. get_id ( ) ;
260
+ let events = context. events . clone ( ) ;
261
+ let tcp_stream = LoggingStream :: new (
262
+ tcp_stream,
263
+ format ! ( "STARTTLS IMAP stream {host} ({addr})" ) ,
264
+ account_id,
265
+ events,
266
+ ) ;
267
+
258
268
// Run STARTTLS command and convert the client back into a stream.
259
269
let buffered_tcp_stream = BufWriter :: new ( tcp_stream) ;
260
270
let mut client = async_imap:: Client :: new ( buffered_tcp_stream) ;
@@ -272,16 +282,7 @@ impl Client {
272
282
let tls_stream = wrap_tls ( strict_tls, host, & [ ] , tcp_stream)
273
283
. await
274
284
. context ( "STARTTLS upgrade failed" ) ?;
275
-
276
- let account_id = context. get_id ( ) ;
277
- let events = context. events . clone ( ) ;
278
- let logging_stream = LoggingStream :: new (
279
- tls_stream,
280
- format ! ( "STARTTLS IMAP stream {host} ({addr})" ) ,
281
- account_id,
282
- events,
283
- ) ;
284
- let buffered_stream = BufWriter :: new ( logging_stream) ;
285
+ let buffered_stream = BufWriter :: new ( tls_stream) ;
285
286
let session_stream: Box < dyn SessionStream > = Box :: new ( buffered_stream) ;
286
287
let client = Client :: new ( session_stream) ;
287
288
Ok ( client)
0 commit comments