- r = select(maxfd + 1, &fset, NULL, NULL, &tv);
+ while(running) {
+#ifdef HAVE_PSELECT
+ next_event = last_ping_check + pingtimeout;
+
+ if(graph_dump && next_event > last_graph_dump + 60) {
+ next_event = last_graph_dump + 60;
+ }
+
+ if((event = peek_next_event()) && next_event > event->time) {
+ next_event = event->time;
+ }
+
+ if(next_event <= now) {
+ tv.tv_sec = 0;
+ } else {
+ tv.tv_sec = next_event - now;
+ }
+
+ tv.tv_nsec = 0;
+#else
+ tv.tv_sec = 1;
+ tv.tv_usec = 0;
+#endif
+
+ maxfd = build_fdset(&readset, &writeset);
+
+#ifdef HAVE_MINGW
+ LeaveCriticalSection(&mutex);
+#endif
+#ifdef HAVE_PSELECT
+ r = pselect(maxfd + 1, &readset, &writeset, NULL, &tv, &omask);
+#else
+ r = select(maxfd + 1, &readset, &writeset, NULL, &tv);
+#endif
+ now = time(NULL);
+#ifdef HAVE_MINGW
+ EnterCriticalSection(&mutex);
+#endif