#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"
* 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");\r
+ 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");
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);
}
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);
continue;
/* if there is a returned struct ConfItem then kill it */
- if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip)))
+ if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip, client_p->localClient->ip.ss_family)))
{
if(aconf->status & CONF_EXEMPTDLINE)
continue;
{
client_p = ptr->data;
- if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip)))
+ if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip,client_p->localClient->ip.ss_family)))
{
if(aconf->status & CONF_EXEMPTDLINE)
continue;
if(IsMe(client_p))
continue;
- if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip) != NULL)
+ if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip,client_p->localClient->ip.ss_family)) != NULL)
{
if(aconf->status & CONF_EXEMPTDLINE)
continue;
{
client_p = ptr->data;
- if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip)) != NULL)
+ if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip,client_p->localClient->ip.ss_family)) != NULL)
{
if(aconf->status & CONF_EXEMPTDLINE)
continue;
const char *comment)
{
delete_auth_queries(source_p);
+ del_unknown_ip(source_p);
rb_dlinkDelete(&source_p->localClient->tnode, &unknown_list);
if(!IsIOError(source_p))
void
count_local_client_memory(size_t * count, size_t * local_client_memory_used)
{
- size_t lusage;\r
- rb_bh_usage(lclient_heap, count, NULL, &lusage, NULL);\r
+ size_t lusage;
+ rb_bh_usage(lclient_heap, count, NULL, &lusage, NULL);
*local_client_memory_used = lusage + (*count * (sizeof(void *) + sizeof(struct Client)));
}
void
count_remote_client_memory(size_t * count, size_t * remote_client_memory_used)
{
- size_t lcount, rcount;\r
- rb_bh_usage(lclient_heap, &lcount, NULL, NULL, NULL);\r
- rb_bh_usage(client_heap, &rcount, NULL, NULL, NULL);\r
- *count = rcount - lcount;\r
+ 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));
}
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;
}
else
ServerStats.is_ni++;
- /* XXX ctrlFd was here!!! */
- if(client_p->localClient->F != NULL)\r
- {\r
- /* attempt to flush any pending linebufs. Evil, but .. -- adrian */\r
- if(!IsIOError(client_p))\r
- send_pop_queue(client_p);\r
- del_from_cli_fd_hash(client_p); \r
- rb_close(client_p->localClient->F);\r
- client_p->localClient->F = NULL;\r
+ if(client_p->localClient->F)
+ {
+ /* attempt to flush any pending dbufs. Evil, but .. -- adrian */
+ if(!IsIOError(client_p))
+ send_queued(client_p);
+
+ rb_close(client_p->localClient->F);
+ client_p->localClient->F = NULL;
+ }
+
+ if(client_p->localClient->ctrlF)
+ {
+ rb_close(client_p->localClient->ctrlF);
+ client_p->localClient->ctrlF = NULL;
}
rb_linebuf_donebuf(&client_p->localClient->buf_sendq);