diff options
author | Jay Satiro <raysatiro@yahoo.com> | 2017-12-10 02:48:41 -0500 |
---|---|---|
committer | Jay Satiro <raysatiro@yahoo.com> | 2017-12-10 02:48:41 -0500 |
commit | 7ab4e7adb9143f3a3eef708693a526c93b2c97ee (patch) | |
tree | c6f2dd623dbe23fdae68f96bf21831fa68512722 /lib/vtls | |
parent | b1b94305d896e4204159871318d6d08109b44764 (diff) |
openssl: Disable file buffering for Win32 SSLKEYLOGFILE
Prior to this change SSLKEYLOGFILE used line buffering on WIN32 just
like it does for other platforms. However, the Windows CRT does not
actually support line buffering (_IOLBF) and will use full buffering
(_IOFBF) instead. We can't use full buffering because multiple processes
may be writing to the file and that could lead to corruption, and since
full buffering is the only buffering available this commit disables
buffering for Windows SSLKEYLOGFILE entirely (_IONBF).
Ref: https://github.com/curl/curl/pull/1346#issuecomment-350530901
Diffstat (limited to 'lib/vtls')
-rw-r--r-- | lib/vtls/openssl.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c index 4659c7997..6d9e81d3b 100644 --- a/lib/vtls/openssl.c +++ b/lib/vtls/openssl.c @@ -948,7 +948,11 @@ static int Curl_ossl_init(void) if(keylog_file_name && !keylog_file_fp) { keylog_file_fp = fopen(keylog_file_name, FOPEN_APPENDTEXT); if(keylog_file_fp) { +#ifdef WIN32 + if(setvbuf(keylog_file_fp, NULL, _IONBF, 0)) { +#else if(setvbuf(keylog_file_fp, NULL, _IOLBF, 4096)) { +#endif fclose(keylog_file_fp); keylog_file_fp = NULL; } |