From: Christian P. <cp...@us...> - 2005-02-17 14:16:39
|
Update of /cvsroot/pclasses/pclasses2/src/System In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21343/src/System Modified Files: FdListener.posix.cpp Log Message: Added restart of select() if errno==EINTR. Index: FdListener.posix.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/System/FdListener.posix.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- FdListener.posix.cpp 11 Feb 2005 12:00:09 -0000 1.3 +++ FdListener.posix.cpp 17 Feb 2005 14:16:29 -0000 1.4 @@ -209,6 +209,7 @@ populate_fd_sets(&read_fds, &write_fds, &error_fds, _listeners); } + _select_loop: Private::get_timeout(&timeout, timeout_ms, Private::TIMEOUT_RELATIVE); int ret = ::select(highest_fd + 1, &read_fds, &write_fds, &error_fds, @@ -216,6 +217,9 @@ if(ret == -1) { + if(errno == EINTR) + goto _select_loop; + //@@fixme ... we don't want to throw from Thread::main() !!! throw SystemError(errno, "Could not select() for events", P_SOURCEINFO); } |