- gras_socket_t *sock_iter; /* iterating over all sockets */
- int cursor; /* iterating over all sockets */
+ gras_socket_t sock_iter; /* iterating over all sockets */
+ int cursor; /* iterating over all sockets */
+
+ /* Check whether there is more data to read from the socket we selected last time.
+ This can happen with tcp buffered sockets since we try to get as much data as we can for them */
+ if (_gras_lastly_selected_socket && _gras_lastly_selected_socket->moredata) {
+ VERB0("Returning _gras_lastly_selected_socket since there is more data on it");
+ return _gras_lastly_selected_socket;
+ }
+
+ /* Compute FD_SETSIZE on need */
+ if (fd_setsize < 0) {
+#ifdef HAVE_SYSCONF
+ fd_setsize = sysconf( _SC_OPEN_MAX );
+#else
+# ifdef HAVE_GETDTABLESIZE
+ fd_setsize = getdtablesize();
+# else
+ fd_setsize = FD_SETSIZE;
+# endif /* !USE_SYSCONF */
+#endif
+ }