static int recv_client() { struct timeval tv; int ret; tv.tv_sec = 0; tv.tv_usec = 0; set_read(); set_write(); if ((ret = select(*(g_zappy->highest) + 1, &(g_zappy->read.fds), &(g_zappy->write.fds), NULL, &tv)) < 0) return (server_error(SELECT_ERR)); else if (ret == 0) return (0); return (get_actions()); }
void stat_server_push(void) { unsigned int ip; if(global.stat_server_fd == INVALID_SOCKET) { /* attempt to make new connection to stats server */ if(!*global.stat_user || !*global.stat_pass || !*global.stat_server) { return; /* nothing defined */ } global.stat_server_fd = make_tcp_connection(global.stat_server, global.stat_server_port, &ip); if(global.stat_server_fd != INVALID_SOCKET) { /* do a nonblocking connect */ add_fd(global.stat_server_fd); set_write(global.stat_server_fd); } return; } snprintf(Buf, sizeof(Buf), "STATS %s %u %u 0 %.0f 0\r\n", global.report_name, global.usersHash->dbsize, global.fileLibCount, global.fileLibSize * 1024); if(WRITE(global.stat_server_fd, Buf, strlen(Buf)) == -1) { log_message_level( LOG_LEVEL_SERVER, "stat_server_push: write: %s (%d)", strerror(N_ERRNO), N_ERRNO); CLOSE(global.stat_server_fd); #if HAVE_POLL remove_fd(global.stat_server_fd); #else FD_CLR(global.stat_server_fd, &global.read_fds); FD_CLR(global.stat_server_fd, &global.write_fds); #endif global.stat_server_fd = INVALID_SOCKET; } }