Ejemplo n.º 1
0
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());
}
Ejemplo n.º 2
0
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;
    }
}