extern rb_bh *client_heap;
extern rb_bh *lclient_heap;
extern rb_bh *pclient_heap;
+static rb_bh *away_heap = NULL;
extern char current_uid[IDLEN];
* start off the check ping event .. -- adrian
* Every 30 seconds is plenty -- db
*/
- client_heap = rb_bh_create(sizeof(struct Client), CLIENT_HEAP_SIZE);
- lclient_heap = rb_bh_create(sizeof(struct LocalUser), LCLIENT_HEAP_SIZE);
- pclient_heap = rb_bh_create(sizeof(struct PreClient), PCLIENT_HEAP_SIZE);
+ client_heap = rb_bh_create(sizeof(struct Client), CLIENT_HEAP_SIZE, "client_heap");\r
+ 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);
sendto_realops_snomask(SNO_GENERAL, L_ALL, "%s was connected"
" for %ld seconds. %d/%d sendK/recvK.",
- source_p->name, rb_current_time() - source_p->localClient->firsttime, sendk, recvk);
+ source_p->name, (long) rb_current_time() - source_p->localClient->firsttime, sendk, recvk);
ilog(L_SERVER, "%s was connected for %ld seconds. %d/%d sendK/recvK.",
- source_p->name, rb_current_time() - source_p->localClient->firsttime, sendk, recvk);
+ source_p->name, (long) rb_current_time() - source_p->localClient->firsttime, sendk, recvk);
if(has_id(source_p))
del_from_id_hash(source_p->id, source_p);
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);
- *local_client_memory_used = lusage + (*count * (sizeof(MemBlock) + sizeof(struct Client)));
+ size_t lusage;\r
+ rb_bh_usage(lclient_heap, count, NULL, &lusage, NULL);\r
+ *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;
- rb_bh_usage(lclient_heap, &lcount, NULL, NULL);
- rb_bh_usage(client_heap, &rcount, NULL, NULL);
- *count = rcount - lcount;
- *remote_client_memory_used = *count * (sizeof(MemBlock) + sizeof(struct Client));
+ 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
+ *remote_client_memory_used = *count * (sizeof(void *) + sizeof(struct Client));
}
void
initUser(void)
{
- user_heap = rb_bh_create(sizeof(struct User), USER_HEAP_SIZE);
+ user_heap = rb_bh_create(sizeof(struct User), USER_HEAP_SIZE, "user_heap");
if(!user_heap)
- outofmemory();
+ rb_outofmemory();
}
/*
void
free_user(struct User *user, struct Client *client_p)
{
+ free_away(client_p);
+
if(--user->refcnt <= 0)
{
if(user->away)
}
}
-void\r
-allocate_away(struct Client *client_p)\r
-{\r
- if(client_p->user->away == NULL)\r
- client_p->user->away = rb_bh_alloc(away_heap); \r
-}\r
-\r
-\r
-void\r
-free_away(struct Client *client_p)\r
-{\r
- if(client_p->user->away != NULL) {\r
- rb_bh_free(away_heap, client_p->user->away);\r
- client_p->user->away = NULL;\r
- }\r
+void
+allocate_away(struct Client *client_p)
+{
+ if(client_p->user->away == NULL)
+ client_p->user->away = rb_bh_alloc(away_heap);
+}
+
+
+void
+free_away(struct Client *client_p)
+{
+ if(client_p->user->away != NULL) {
+ rb_bh_free(away_heap, client_p->user->away);
+ client_p->user->away = NULL;
+ }
}
void
{
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;
}
/*
}
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)
{