]> granicus.if.org Git - curl/commit
TLS: SSL_peek is not a const operation
authorAnders Bakken <agbakken@gmail.com>
Tue, 10 May 2016 19:49:33 +0000 (12:49 -0700)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 10 May 2016 22:06:40 +0000 (00:06 +0200)
commit856baf5a46e9d5fb71950a648ac6d1600838584d
treed9a12cd3f5f87de57590b9f2f28b3b5e7500d48e
parentf6767f5435f4c8230b382f18d4a2917ae37641d5
TLS: SSL_peek is not a const operation

Calling SSL_peek can cause bytes to be read from the raw socket which in
turn can upset the select machinery that determines whether there's data
available on the socket.

Since Curl_ossl_check_cxn only tries to determine whether the socket is
alive and doesn't actually need to see the bytes SSL_peek seems like
the wrong function to call.

We're able to occasionally reproduce a connect timeout due to this
bug. What happens is that Curl doesn't know to call SSL_connect again
after the peek happens since data is buffered in the SSL buffer and thus
select won't fire for this socket.

Closes #795
lib/vtls/openssl.c