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);
}
|