@@ -2,6 +2,7 @@ use futures_util::FutureExt;
2
2
#[ cfg( feature = "tokio-runtime" ) ]
3
3
use hyper:: client:: connect:: HttpConnector ;
4
4
use hyper:: { client:: connect:: Connection , service:: Service , Uri } ;
5
+ use log:: warn;
5
6
use rustls:: ClientConfig ;
6
7
use std:: future:: Future ;
7
8
use std:: pin:: Pin ;
@@ -11,7 +12,6 @@ use std::{fmt, io};
11
12
use tokio:: io:: { AsyncRead , AsyncWrite } ;
12
13
use tokio_rustls:: TlsConnector ;
13
14
use webpki:: DNSNameRef ;
14
- use log:: warn;
15
15
16
16
use crate :: stream:: MaybeHttpsStream ;
17
17
@@ -24,41 +24,27 @@ pub struct HttpsConnector<T> {
24
24
tls_config : Arc < ClientConfig > ,
25
25
}
26
26
27
- #[ cfg( all( any( feature = "rustls-native-certs" , feature = "webpki-roots" ) , feature = "tokio-runtime" ) ) ]
27
+ #[ cfg( all(
28
+ any( feature = "rustls-native-certs" , feature = "webpki-roots" ) ,
29
+ feature = "tokio-runtime"
30
+ ) ) ]
28
31
impl HttpsConnector < HttpConnector > {
29
32
/// Construct a new `HttpsConnector`.
30
33
///
31
34
/// Takes number of DNS worker threads.
32
35
pub fn new ( ) -> Self {
33
36
let mut http = HttpConnector :: new ( ) ;
37
+
34
38
http. enforce_http ( false ) ;
35
- let mut config = ClientConfig :: new ( ) ;
36
- config. alpn_protocols = vec ! [ b"h2" . to_vec( ) , b"http/1.1" . to_vec( ) ] ;
37
- #[ cfg( feature = "rustls-native-certs" ) ]
38
- {
39
- config. root_store = match rustls_native_certs:: load_native_certs ( ) {
40
- Ok ( store) => store,
41
- Err ( ( Some ( store) , err) ) => {
42
- warn ! ( "Could not load all certificates: {:?}" , err) ;
43
- store
44
- }
45
- Err ( ( None , err) ) => {
46
- Err ( err) . expect ( "cannot access native cert store" )
47
- }
48
- } ;
49
- }
50
- #[ cfg( feature = "webpki-roots" ) ]
51
- {
52
- config
53
- . root_store
54
- . add_server_trust_anchors ( & webpki_roots:: TLS_SERVER_ROOTS ) ;
55
- }
56
- config. ct_logs = Some ( & ct_logs:: LOGS ) ;
57
- ( http, config) . into ( )
39
+
40
+ http. into ( )
58
41
}
59
42
}
60
43
61
- #[ cfg( all( any( feature = "rustls-native-certs" , feature = "webpki-roots" ) , feature = "tokio-runtime" ) ) ]
44
+ #[ cfg( all(
45
+ any( feature = "rustls-native-certs" , feature = "webpki-roots" ) ,
46
+ feature = "tokio-runtime"
47
+ ) ) ]
62
48
impl Default for HttpsConnector < HttpConnector > {
63
49
fn default ( ) -> Self {
64
50
Self :: new ( )
@@ -73,7 +59,7 @@ impl<T> fmt::Debug for HttpsConnector<T> {
73
59
74
60
impl < H , C > From < ( H , C ) > for HttpsConnector < H >
75
61
where
76
- C : Into < Arc < ClientConfig > >
62
+ C : Into < Arc < ClientConfig > > ,
77
63
{
78
64
fn from ( ( http, cfg) : ( H , C ) ) -> Self {
79
65
HttpsConnector {
83
69
}
84
70
}
85
71
72
+ impl < H > From < H > for HttpsConnector < H > {
73
+ fn from ( http : H ) -> Self {
74
+ let mut config = ClientConfig :: new ( ) ;
75
+ config. alpn_protocols = vec ! [ b"h2" . to_vec( ) , b"http/1.1" . to_vec( ) ] ;
76
+ #[ cfg( feature = "rustls-native-certs" ) ]
77
+ {
78
+ config. root_store = match rustls_native_certs:: load_native_certs ( ) {
79
+ Ok ( store) => store,
80
+ Err ( ( Some ( store) , err) ) => {
81
+ warn ! ( "Could not load all certificates: {:?}" , err) ;
82
+ store
83
+ }
84
+ Err ( ( None , err) ) => Err ( err) . expect ( "cannot access native cert store" ) ,
85
+ } ;
86
+ }
87
+ #[ cfg( feature = "webpki-roots" ) ]
88
+ {
89
+ config
90
+ . root_store
91
+ . add_server_trust_anchors ( & webpki_roots:: TLS_SERVER_ROOTS ) ;
92
+ }
93
+ config. ct_logs = Some ( & ct_logs:: LOGS ) ;
94
+
95
+ HttpsConnector {
96
+ http,
97
+ tls_config : config. into ( ) ,
98
+ }
99
+ }
100
+ }
101
+
86
102
impl < T > Service < Uri > for HttpsConnector < T >
87
103
where
88
104
T : Service < Uri > ,
0 commit comments