struct hub_user* user_create(struct hub_info* hub, struct net_connection* con, struct ip_addr_encap* addr) { struct hub_user* user = NULL; LOG_TRACE("user_create(), hub=%p, con[sd=%d]", hub, net_con_get_sd(con)); user = (struct hub_user*) hub_malloc_zero(sizeof(struct hub_user)); if (user == NULL) return NULL; /* OOM */ user->send_queue = ioq_send_create(); user->recv_queue = ioq_recv_create(); user->connection = con; net_con_reinitialize(user->connection, net_event, user, NET_EVENT_READ); memcpy(&user->id.addr, addr, sizeof(struct ip_addr_encap)); user_set_state(user, state_protocol); flood_control_reset(&user->flood_chat); flood_control_reset(&user->flood_connect); flood_control_reset(&user->flood_search); flood_control_reset(&user->flood_update); flood_control_reset(&user->flood_extras); user->hub = hub; return user; }
struct ADC_client* ADC_client_create(const char* nickname, const char* description, void* ptr) { ADC_TRACE; struct ADC_client* client = (struct ADC_client*) hub_malloc_zero(sizeof(struct ADC_client)); ADC_client_set_state(client, ps_none); client->nick = hub_strdup(nickname); client->desc = hub_strdup(description); client->send_queue = ioq_send_create(); client->recv_queue = ioq_recv_create(); client->ptr = ptr; if (!g_adc_client) { g_adc_client = (struct ADC_client_global*) hub_malloc_zero(sizeof(struct ADC_client_global)); #ifdef SSL_SUPPORT g_adc_client->ctx = net_ssl_context_create("1.2", "HIGH"); #endif } g_adc_client->references++; return client; }