signals can interrupt poll, which is now taken as a failure but should be retried
This commit is contained in:
parent
7f40ad2d69
commit
e4ec629d62
|
|
@ -129,8 +129,17 @@ private:
|
||||||
fd.events = POLLOUT;
|
fd.events = POLLOUT;
|
||||||
fd.revents = 0;
|
fd.revents = 0;
|
||||||
|
|
||||||
// perform the poll, with a very long time to allow the event to occur
|
// the return code
|
||||||
int ret = poll(&fd, 1, _timeout * 1000);
|
int ret = 0;
|
||||||
|
|
||||||
|
// keep looping until we get a 'final' result
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// perform the poll, with a very long time to allow the event to occur
|
||||||
|
ret = poll(&fd, 1, _timeout * 1000);
|
||||||
|
|
||||||
|
// we want to retry if the call was interrupted by a signal
|
||||||
|
} while (ret == -1 && errno == EINTR);
|
||||||
|
|
||||||
// log the error for the time being
|
// log the error for the time being
|
||||||
if (ret == 0) _error = "connection timed out";
|
if (ret == 0) _error = "connection timed out";
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue