X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/68876ea24b3d1782d404a39989ad855b328e5304..83251205659e33e5a21fc504db0e8495fabeed28:/src/client.c diff --git a/src/client.c b/src/client.c index ecc8722..b715333 100644 --- a/src/client.c +++ b/src/client.c @@ -40,7 +40,7 @@ #include "s_auth.h" #include "s_conf.h" #include "s_newconf.h" -#include "s_log.h" +#include "logger.h" #include "s_serv.h" #include "s_stats.h" #include "send.h" @@ -118,7 +118,7 @@ init_client(void) * start off the check ping event .. -- adrian * Every 30 seconds is plenty -- db */ - client_heap = rb_bh_create(sizeof(struct Client), CLIENT_HEAP_SIZE, "client_heap"); + client_heap = rb_bh_create(sizeof(struct Client), CLIENT_HEAP_SIZE, "client_heap"); lclient_heap = rb_bh_create(sizeof(struct LocalUser), LCLIENT_HEAP_SIZE, "lclient_heap"); pclient_heap = rb_bh_create(sizeof(struct PreClient), PCLIENT_HEAP_SIZE, "pclient_heap"); away_heap = rb_bh_create(AWAYLEN, AWAY_HEAP_SIZE, "away_heap"); @@ -126,6 +126,7 @@ init_client(void) rb_event_addish("check_pings", check_pings, NULL, 30); rb_event_addish("free_exited_clients", &free_exited_clients, NULL, 4); rb_event_addish("exit_aborted_clients", exit_aborted_clients, NULL, 1); + rb_event_add("flood_recalc", flood_recalc, NULL, 1); nd_dict = irc_dictionary_create(irccmp); } @@ -160,7 +161,7 @@ make_client(struct Client *from) client_p->localClient->lasttime = client_p->localClient->firsttime = rb_current_time(); client_p->localClient->F = NULL; - client_p->localClient->ctrlfd = -1; + client_p->localClient->ctrlF = NULL; client_p->preClient = (struct PreClient *) rb_bh_alloc(pclient_heap); @@ -1711,8 +1712,8 @@ exit_client(struct Client *client_p, /* The local client originating the void count_local_client_memory(size_t * count, size_t * local_client_memory_used) { - size_t lusage; - rb_bh_usage(lclient_heap, count, NULL, &lusage, NULL); + size_t lusage; + rb_bh_usage(lclient_heap, count, NULL, &lusage, NULL); *local_client_memory_used = lusage + (*count * (sizeof(void *) + sizeof(struct Client))); } @@ -1722,10 +1723,10 @@ count_local_client_memory(size_t * count, size_t * local_client_memory_used) void count_remote_client_memory(size_t * count, size_t * remote_client_memory_used) { - size_t lcount, rcount; - rb_bh_usage(lclient_heap, &lcount, NULL, NULL, NULL); - rb_bh_usage(client_heap, &rcount, NULL, NULL, NULL); - *count = rcount - lcount; + size_t lcount, rcount; + rb_bh_usage(lclient_heap, &lcount, NULL, NULL, NULL); + rb_bh_usage(client_heap, &rcount, NULL, NULL, NULL); + *count = rcount - lcount; *remote_client_memory_used = *count * (sizeof(void *) + sizeof(struct Client)); } @@ -1952,7 +1953,7 @@ allocate_away(struct Client *client_p) void free_away(struct Client *client_p) { - if(client_p->user->away != NULL) { + if(client_p->user != NULL && client_p->user->away != NULL) { rb_bh_free(away_heap, client_p->user->away); client_p->user->away = NULL; } @@ -2026,21 +2027,21 @@ close_connection(struct Client *client_p) { struct server_conf *server_p; - ServerStats->is_sv++; - ServerStats->is_sbs += client_p->localClient->sendB; - ServerStats->is_sbr += client_p->localClient->receiveB; - ServerStats->is_sks += client_p->localClient->sendK; - ServerStats->is_skr += client_p->localClient->receiveK; - ServerStats->is_sti += rb_current_time() - client_p->localClient->firsttime; - if(ServerStats->is_sbs > 2047) + ServerStats.is_sv++; + ServerStats.is_sbs += client_p->localClient->sendB; + ServerStats.is_sbr += client_p->localClient->receiveB; + ServerStats.is_sks += client_p->localClient->sendK; + ServerStats.is_skr += client_p->localClient->receiveK; + ServerStats.is_sti += rb_current_time() - client_p->localClient->firsttime; + if(ServerStats.is_sbs > 2047) { - ServerStats->is_sks += (ServerStats->is_sbs >> 10); - ServerStats->is_sbs &= 0x3ff; + ServerStats.is_sks += (ServerStats.is_sbs >> 10); + ServerStats.is_sbs &= 0x3ff; } - if(ServerStats->is_sbr > 2047) + if(ServerStats.is_sbr > 2047) { - ServerStats->is_skr += (ServerStats->is_sbr >> 10); - ServerStats->is_sbr &= 0x3ff; + ServerStats.is_skr += (ServerStats.is_sbr >> 10); + ServerStats.is_sbr &= 0x3ff; } /* @@ -2064,25 +2065,25 @@ close_connection(struct Client *client_p) } else if(IsClient(client_p)) { - ServerStats->is_cl++; - ServerStats->is_cbs += client_p->localClient->sendB; - ServerStats->is_cbr += client_p->localClient->receiveB; - ServerStats->is_cks += client_p->localClient->sendK; - ServerStats->is_ckr += client_p->localClient->receiveK; - ServerStats->is_cti += rb_current_time() - client_p->localClient->firsttime; - if(ServerStats->is_cbs > 2047) + ServerStats.is_cl++; + ServerStats.is_cbs += client_p->localClient->sendB; + ServerStats.is_cbr += client_p->localClient->receiveB; + ServerStats.is_cks += client_p->localClient->sendK; + ServerStats.is_ckr += client_p->localClient->receiveK; + ServerStats.is_cti += rb_current_time() - client_p->localClient->firsttime; + if(ServerStats.is_cbs > 2047) { - ServerStats->is_cks += (ServerStats->is_cbs >> 10); - ServerStats->is_cbs &= 0x3ff; + ServerStats.is_cks += (ServerStats.is_cbs >> 10); + ServerStats.is_cbs &= 0x3ff; } - if(ServerStats->is_cbr > 2047) + if(ServerStats.is_cbr > 2047) { - ServerStats->is_ckr += (ServerStats->is_cbr >> 10); - ServerStats->is_cbr &= 0x3ff; + ServerStats.is_ckr += (ServerStats.is_cbr >> 10); + ServerStats.is_cbr &= 0x3ff; } } else - ServerStats->is_ni++; + ServerStats.is_ni++; if(client_p->localClient->F) { @@ -2094,10 +2095,10 @@ close_connection(struct Client *client_p) client_p->localClient->F = NULL; } - if(-1 < client_p->localClient->ctrlfd) + if(client_p->localClient->ctrlF) { - rb_close(client_p->localClient->ctrlfd); - client_p->localClient->ctrlfd = -1; + rb_close(client_p->localClient->ctrlF); + client_p->localClient->ctrlF = NULL; } rb_linebuf_donebuf(&client_p->localClient->buf_sendq);