- 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 */
+ static gras_socket_t _lastly_selected_socket = NULL;
+ if (_lastly_selected_socket && _lastly_selected_socket->moredata) {
+ VERB0("Returning _lastly_selected_socket since there is more data on it");
+ return _lastly_selected_socket;
+ }
+
+ /* Compute FD_SETSIZE */
+#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