version 1.160, 2017/01/21 08:33:07 |
version 1.161, 2017/02/28 06:31:12 |
|
|
ftp_read(FILE *fp, struct tls *tls, char *buf, size_t len) |
ftp_read(FILE *fp, struct tls *tls, char *buf, size_t len) |
{ |
{ |
#ifndef NOSSL |
#ifndef NOSSL |
ssize_t tls_ret; |
ssize_t tret; |
#endif |
#endif |
size_t ret = 0; |
size_t ret = 0; |
|
|
|
|
ret = fread(buf, sizeof(char), len, fp); |
ret = fread(buf, sizeof(char), len, fp); |
#ifndef NOSSL |
#ifndef NOSSL |
else if (tls != NULL) { |
else if (tls != NULL) { |
again: |
do { |
if ((tls_ret = tls_read(tls, buf, len)) >= 0) |
tret = tls_read(tls, buf, len); |
ret = (size_t)tls_ret; |
} while (tret == TLS_WANT_POLLIN || tret == TLS_WANT_POLLOUT); |
if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) |
if (tret < 0) |
goto again; |
|
if (ret < 0) |
|
errx(1, "SSL read error: %s", tls_error(tls)); |
errx(1, "SSL read error: %s", tls_error(tls)); |
|
ret = (size_t)tret; |
} |
} |
#endif /* !NOSSL */ |
#endif /* !NOSSL */ |
return (ret); |
return (ret); |
|
|
buf = q; |
buf = q; |
len *= 2; |
len *= 2; |
} |
} |
again: |
do { |
ret = tls_read(tls, &c, 1); |
ret = tls_read(tls, &c, 1); |
if (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT) |
} while (ret == TLS_WANT_POLLIN || ret == TLS_WANT_POLLOUT); |
goto again; |
|
if (ret < 0) |
if (ret < 0) |
errx(1, "SSL read error: %s", tls_error(tls)); |
errx(1, "SSL read error: %s", tls_error(tls)); |
|
|