static int wait_for_fds(void) { fserve_t *fclient; int ret; while (run_fserv) { /* add any new clients here */ if (pending_list) { thread_spin_lock (&pending_lock); fclient = (fserve_t*)pending_list; while (fclient) { fserve_t *to_move = fclient; fclient = fclient->next; to_move->next = active_list; active_list = to_move; client_tree_changed = 1; fserve_clients++; } pending_list = NULL; thread_spin_unlock(&pending_lock); } /* drop out of here if someone is ready */ ret = fserve_client_waiting(); if (ret) return ret; } return -1; }
static void wait_for_fds() { fserve_t *fclient; while (run_fserv) { /* add any new clients here */ if (pending_list) { thread_mutex_lock (&pending_lock); fclient = (fserve_t*)pending_list; while (fclient) { fserve_t *to_move = fclient; fclient = fclient->next; to_move->next = active_list; active_list = to_move; client_tree_changed = 1; fserve_clients++; stats_event_inc(NULL, "clients"); } pending_list = NULL; thread_mutex_unlock (&pending_lock); } /* drop out of here is someone is ready */ if (fserve_client_waiting()) break; } }