@@ -144,16 +144,9 @@ impl PollConnect for Connect {
144
144
fn poll_connecting_tcp < ' a > (
145
145
state : & ' a mut RentToOwn < ' a , ConnectingTcp > ,
146
146
) -> Poll < AfterConnectingTcp , Error > {
147
- loop {
147
+ let socket = loop {
148
148
let error = match state. future . poll ( ) {
149
- Ok ( Async :: Ready ( socket) ) => {
150
- let state = state. take ( ) ;
151
- transition ! ( PreparingSsl {
152
- socket: Socket :: Tcp ( socket) ,
153
- params: state. params,
154
- tls: state. tls,
155
- } )
156
- }
149
+ Ok ( Async :: Ready ( socket) ) => break socket,
157
150
Ok ( Async :: NotReady ) => match state. timeout {
158
151
Some ( ( _, ref mut delay) ) => {
159
152
try_ready ! (
@@ -177,7 +170,19 @@ impl PollConnect for Connect {
177
170
if let Some ( ( timeout, ref mut delay) ) = state. timeout {
178
171
delay. reset ( Instant :: now ( ) + timeout) ;
179
172
}
180
- }
173
+ } ;
174
+
175
+ // Our read/write patterns may trigger Nagle's algorithm since we're pipelining which
176
+ // we don't want. Each individual write should be a full command we want the backend to
177
+ // see immediately.
178
+ socket. set_nodelay ( true ) ?;
179
+
180
+ let state = state. take ( ) ;
181
+ transition ! ( PreparingSsl {
182
+ socket: Socket :: Tcp ( socket) ,
183
+ params: state. params,
184
+ tls: state. tls,
185
+ } )
181
186
}
182
187
183
188
#[ cfg( unix) ]
0 commit comments