Hi,

tls_close() could return TLS_WANT_POLLIN, TLS_WANT_POLLOUT as well.
This diff repeats the call immediately. Ok?

cvs server: Diffing .
Index: fetch.c
===================================================================
RCS file: /cvs/src/usr.bin/ftp/fetch.c,v
retrieving revision 1.161
diff -u -p -r1.161 fetch.c
--- fetch.c     28 Feb 2017 06:31:12 -0000      1.161
+++ fetch.c     2 Mar 2017 07:20:29 -0000
@@ -1031,7 +1031,9 @@ improper:
 cleanup_url_get:
 #ifndef NOSSL
        if (tls != NULL) {
-               tls_close(tls);
+               do {
+                       i = tls_close(tls);
+               } while (i == TLS_WANT_POLLIN || i == TLS_WANT_POLLOUT);
                tls_free(tls);
        }
        free(full_host);

Reply via email to