mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
Fix intermittent windows failures in TLSProxy tests
When closing down the socket in s_client Windows will close it immediately even if there is data in the write buffer still waiting to be sent. This was causing tests to fail in Msys/Mingw builds because TLSProxy doesn't see the final CloseNotify. I have experimented with various ways of doing this "properly" (e.g. shutting down the socket before closing, setting SO_LINGER etc). I can't seem to find the "magic" formula that will make Windows do this. Inserting a short 50ms sleep seems to do the trick...but its not very "nice" so I've inserted a TODO on this item. Perhaps someone else will have better luck in figuring this out. RT#4255 Reviewed-by: Richard Levitte <levitte@openssl.org>
This commit is contained in:
parent
75dd6c1a39
commit
cb2e10f257
@ -2402,6 +2402,16 @@ int s_client_main(int argc, char **argv)
|
||||
if (in_init)
|
||||
print_stuff(bio_c_out, con, full_log);
|
||||
do_ssl_shutdown(con);
|
||||
#if defined(OPENSSL_SYS_WINDOWS)
|
||||
/*
|
||||
* Give the socket time to send its last data before we close it.
|
||||
* No amount of setting SO_LINGER etc on the socket seems to persuade
|
||||
* Windows to send the data before closing the socket...but sleeping
|
||||
* for a short time seems to do it (units in ms)
|
||||
* TODO: Find a better way to do this
|
||||
*/
|
||||
Sleep(50);
|
||||
#endif
|
||||
BIO_closesocket(SSL_get_fd(con));
|
||||
end:
|
||||
if (con != NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user