mirror of
https://github.com/irssi/irssi.git
synced 2026-08-09 20:00:23 +02:00
Some logging fixes. Flood checking had a memory leak. Query had a small
memory leak. Text buffer fixes. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@226 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
a0aa649368
commit
ae25925a1f
10 changed files with 129 additions and 89 deletions
|
|
@ -251,7 +251,6 @@ static void read_ignores(void)
|
|||
IGNORE_REC *rec;
|
||||
CONFIG_NODE *node;
|
||||
GSList *tmp;
|
||||
char *str;
|
||||
|
||||
while (ignores != NULL)
|
||||
ignore_destroy(ignores->data);
|
||||
|
|
|
|||
|
|
@ -40,20 +40,15 @@ static void event_away(const char *data, IRC_SERVER_REC *server)
|
|||
if (level == 0) return;
|
||||
|
||||
log = log_find(fname);
|
||||
if (log != NULL) {
|
||||
/* awaylog already created */
|
||||
if (log->handle == -1) {
|
||||
/* ..but not open, open it. */
|
||||
log_start_logging(log);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
log = log_create_rec(fname, level, NULL);
|
||||
if (log != NULL) {
|
||||
if (log == NULL) {
|
||||
log = log_create_rec(fname, level, NULL);
|
||||
log->temp = TRUE;
|
||||
log_update(log);
|
||||
log_start_logging(log);
|
||||
}
|
||||
|
||||
if (!log_start_logging(log)) {
|
||||
/* creating log file failed? close it. */
|
||||
log_close(log);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ void query_destroy(QUERY_REC *query)
|
|||
signal_emit("query destroyed", 1, query);
|
||||
|
||||
MODULE_DATA_DEINIT(query);
|
||||
g_free_not_null(query->address);
|
||||
g_free(query->nick);
|
||||
g_free(query->server_tag);
|
||||
g_free(query);
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ typedef struct {
|
|||
static int flood_tag;
|
||||
static int flood_max_msgs, flood_timecheck;
|
||||
|
||||
static int flood_hash_deinit(const char *key, FLOOD_REC *flood, gpointer nowp)
|
||||
static int flood_hash_check_remove(const char *key, FLOOD_REC *flood, gpointer nowp)
|
||||
{
|
||||
GSList *tmp, *next;
|
||||
time_t now;
|
||||
|
|
@ -59,8 +59,11 @@ static int flood_hash_deinit(const char *key, FLOOD_REC *flood, gpointer nowp)
|
|||
FLOOD_ITEM_REC *rec = tmp->data;
|
||||
|
||||
next = tmp->next;
|
||||
if (now-rec->first >= flood_timecheck)
|
||||
if (now-rec->first >= flood_timecheck) {
|
||||
flood->items = g_slist_remove(flood->items, rec);
|
||||
g_free(rec->target);
|
||||
g_free(rec);
|
||||
}
|
||||
}
|
||||
|
||||
if (flood->items != NULL)
|
||||
|
|
@ -83,7 +86,7 @@ static int flood_timeout(void)
|
|||
IRC_SERVER_REC *rec = tmp->data;
|
||||
|
||||
mserver = MODULE_DATA(rec);
|
||||
g_hash_table_foreach_remove(mserver->floodlist, (GHRFunc) flood_hash_deinit, GINT_TO_POINTER((int) now));
|
||||
g_hash_table_foreach_remove(mserver->floodlist, (GHRFunc) flood_hash_check_remove, GINT_TO_POINTER((int) now));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -101,6 +104,21 @@ static void flood_init_server(IRC_SERVER_REC *server)
|
|||
rec->floodlist = g_hash_table_new((GHashFunc) g_istr_hash, (GCompareFunc) g_istr_equal);
|
||||
}
|
||||
|
||||
static void flood_hash_destroy(const char *key, FLOOD_REC *flood)
|
||||
{
|
||||
while (flood->items != NULL) {
|
||||
FLOOD_ITEM_REC *rec = flood->items->data;
|
||||
|
||||
g_free(rec->target);
|
||||
g_free(rec);
|
||||
|
||||
flood->items = g_slist_remove(flood->items, rec);
|
||||
}
|
||||
|
||||
g_free(flood->nick);
|
||||
g_free(flood);
|
||||
}
|
||||
|
||||
/* Deinitialize flood protection */
|
||||
static void flood_deinit_server(IRC_SERVER_REC *server)
|
||||
{
|
||||
|
|
@ -112,9 +130,7 @@ static void flood_deinit_server(IRC_SERVER_REC *server)
|
|||
if (mserver != NULL && mserver->floodlist != NULL) {
|
||||
flood_timecheck = 0;
|
||||
|
||||
g_hash_table_freeze(mserver->floodlist);
|
||||
g_hash_table_foreach(mserver->floodlist, (GHFunc) flood_hash_deinit, NULL);
|
||||
g_hash_table_thaw(mserver->floodlist);
|
||||
g_hash_table_foreach(mserver->floodlist, (GHFunc) flood_hash_destroy, NULL);
|
||||
g_hash_table_destroy(mserver->floodlist);
|
||||
}
|
||||
g_free(mserver);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue