diff --git a/RTCP/Cobalt/GPUProc/src/Storage/SSH.cc b/RTCP/Cobalt/GPUProc/src/Storage/SSH.cc index f1d6627974b8dab48c90ad75cfe08f4ae83f8b82..049bb040a2fe4432a11088545acc88af8a5a5a26 100644 --- a/RTCP/Cobalt/GPUProc/src/Storage/SSH.cc +++ b/RTCP/Cobalt/GPUProc/src/Storage/SSH.cc @@ -506,15 +506,19 @@ namespace LOFAR Cancellation::enable(); - do { - struct timeval timeout; + /* + * Do NOT repeat select() if it returns 0! For some reason, + * input will not arrive anymore if that happens once and + * we don't communicate to libssh2 in the mean time. + */ + + struct timeval timeout; - timeout.tv_sec = 1; - timeout.tv_usec = 0; + timeout.tv_sec = 1; + timeout.tv_usec = 0; - // select() is a cancellation point - rc = ::select(sock.fd + 1, readfd, writefd, NULL, &timeout); - } while (rc == 0); + // select() is a cancellation point + rc = ::select(sock.fd + 1, readfd, writefd, NULL, &timeout); Cancellation::disable();