@@ -161,15 +161,17 @@ impl Connection {
161
161
-> BoxFuture < Connection , ConnectError >
162
162
where T : IntoConnectParams
163
163
{
164
- let params = match params. into_connect_params ( ) {
165
- Ok ( params) => params,
166
- Err ( e) => return futures:: failed ( ConnectError :: ConnectParams ( e) ) . boxed ( ) ,
164
+ let fut = match params. into_connect_params ( ) {
165
+ Ok ( params) => {
166
+ Either :: A ( stream:: connect ( params. host ( ) . clone ( ) , params. port ( ) , tls_mode, handle)
167
+ . map ( |s| ( s, params) ) )
168
+ }
169
+ Err ( e) => Either :: B ( Err ( ConnectError :: ConnectParams ( e) ) . into_future ( ) )
167
170
} ;
168
171
169
- stream:: connect ( params. host ( ) . clone ( ) , params. port ( ) , tls_mode, handle)
170
- . map ( |s| {
172
+ fut. map ( |( s, params) | {
171
173
let ( sender, receiver) = mpsc:: channel ( ) ;
172
- Connection ( InnerConnection {
174
+ ( Connection ( InnerConnection {
173
175
stream : s,
174
176
close_sender : sender,
175
177
close_receiver : receiver,
@@ -179,9 +181,9 @@ impl Connection {
179
181
secret_key : 0 ,
180
182
} ,
181
183
next_stmt_id : 0 ,
182
- } )
184
+ } ) , params )
183
185
} )
184
- . and_then ( |s | s. startup ( params) )
186
+ . and_then ( |( s , params ) | s. startup ( params) )
185
187
. and_then ( |( s, params) | s. handle_auth ( params) )
186
188
. and_then ( |s| s. finish_startup ( ) )
187
189
. boxed ( )
0 commit comments