#include #include #include #include #include #include #include #include #include "librez.h" #include "resource.h" static void librez_resource_zero(t_rez *d_rez) { int i; memset(d_rez->buffer, '\0', d_rez->dts * sizeof(void *[4])); memset(d_rez->p_tokens_warn, '\0', 2 * sizeof(t_tokens_func *)); memset(d_rez->buffsize, '\0', 2 * sizeof(int)); for (i = 0; i < d_rez->dts; ++i) d_rez->tl_rezid_2_ifds[i] = -1; } void librez_resource_init(t_rez *d_rez) { d_rez->dts = getdtablesize(); d_rez->tsa = malloc(d_rez->dts * sizeof(struct sockaddr_in)); d_rez->fds = malloc(d_rez->dts * sizeof(struct pollfd)); d_rez->timeout = INFTIM; d_rez->nfds = 0; d_rez->cfds = 0; d_rez->f_poll = malloc(d_rez->dts * sizeof(f_poll_func *[4])); d_rez->notify = malloc(d_rez->dts * sizeof(f_poll_func *[5])); d_rez->buffer = malloc(d_rez->dts * sizeof(void *[4])); d_rez->p_tokens_func = NULL; d_rez->tl_ifds_2_rezid = malloc(d_rez->dts * sizeof(t_librez_fd)); d_rez->tl_rezid_2_ifds = malloc(d_rez->dts * sizeof(int)); d_rez->ssl = malloc(d_rez->dts * sizeof(SSL *)); d_rez->ssl_negociation = malloc(d_rez->dts * sizeof(void (*)())); d_rez->ssl_saved_events = malloc(d_rez->dts * sizeof(void (*)())); d_rez->buffer_size = malloc(d_rez->dts * sizeof(int [2])); signal(SIGPIPE, SIG_IGN); librez_resource_zero(d_rez); signal(SIGQUIT, (void *)librez_debug_status); librez_debug_status(d_rez); } void librez_resource_exit(t_rez *d_rez) { free(d_rez->buffer_size); free(d_rez->ssl_saved_events); free(d_rez->ssl_negociation); free(d_rez->ssl); free(d_rez->tl_ifds_2_rezid); free(d_rez->tl_rezid_2_ifds); free(d_rez->buffer); free(d_rez->f_poll); free(d_rez->tsa); free(d_rez->fds); signal(SIGPIPE, SIG_DFL); }