1
1

Locally restart ssh_poll() upon EINTR.

BUG: https://red.libssh.org/issues/186

Reviewed-by: Aris Adamantiadis <aris@0xbadc0de.be>
Signed-off-by: Sebastien Boving <seb@google.com>
Этот коммит содержится в:
Seb Boving 2015-02-18 12:51:45 -08:00 коммит произвёл Aris Adamantiadis
родитель f32e5f2191
Коммит 7ec798d3e7

Просмотреть файл

@ -597,11 +597,17 @@ int ssh_poll_ctx_dopoll(ssh_poll_ctx ctx, int timeout) {
ssh_poll_handle p;
socket_t fd;
int revents;
struct ssh_timestamp ts;
if (!ctx->polls_used)
return SSH_ERROR;
rc = ssh_poll(ctx->pollfds, ctx->polls_used, timeout);
ssh_timestamp_init(&ts);
do {
int tm = ssh_timeout_update(&ts, timeout);
rc = ssh_poll(ctx->pollfds, ctx->polls_used, tm);
} while (rc == -1 && errno == EINTR);
if(rc < 0)
return SSH_ERROR;
if (rc == 0)