]> sjero.net Git - wget/blobdiff - src/openssl.c
openssl: Retry to read if a non-blocking socket returns immediately.
[wget] / src / openssl.c
index 60e794f6dbcb4bbc112f45bccb8989c15c1916db..201d24597995bbba66460fe709dcbb5f281dc9c3 100644 (file)
@@ -261,8 +261,10 @@ openssl_read (int fd, char *buf, int bufsize, void *arg)
   do
     ret = SSL_read (conn, buf, bufsize);
   while (ret == -1
-         && SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL
-         && errno == EINTR);
+         && (SSL_get_error (conn, ret) == SSL_ERROR_WANT_READ
+             || (SSL_get_error (conn, ret) == SSL_ERROR_SYSCALL
+                 && errno == EINTR)));
+
   return ret;
 }