diff options
Diffstat (limited to 'cfg_utils.c')
-rw-r--r-- | cfg_utils.c | 66 |
1 files changed, 12 insertions, 54 deletions
diff --git a/cfg_utils.c b/cfg_utils.c index a2a783cc2..6f290d2d8 100644 --- a/cfg_utils.c +++ b/cfg_utils.c @@ -27,25 +27,6 @@ extern int yylineno; extern char *yytext; -static void -clean_hash_bucket (gpointer key, gpointer value, gpointer unused) -{ - LIST_HEAD (moduleoptq, module_opt) *cur_module_opt = (struct moduleoptq *)value; - struct module_opt *cur, *tmp; - - LIST_FOREACH_SAFE (cur, cur_module_opt, next, tmp) { - if (cur->param) { - free (cur->param); - } - if (cur->value) { - free (cur->value); - } - LIST_REMOVE (cur, next); - free (cur); - } - free (cur_module_opt); -} - int add_memcached_server (struct config_file *cf, char *str) { @@ -160,29 +141,6 @@ init_defaults (struct config_file *cfg) void free_config (struct config_file *cfg) { - if (cfg->pid_file) { - g_free (cfg->pid_file); - } - if (cfg->temp_dir) { - g_free (cfg->temp_dir); - } - if (cfg->bind_host) { - g_free (cfg->bind_host); - } - if (cfg->header_filters_str) { - g_free (cfg->header_filters_str); - } - if (cfg->mime_filters_str) { - g_free (cfg->mime_filters_str); - } - if (cfg->message_filters_str) { - g_free (cfg->message_filters_str); - } - if (cfg->url_filters_str) { - g_free (cfg->url_filters_str); - } - - g_hash_table_foreach (cfg->modules_opts, clean_hash_bucket, NULL); g_hash_table_remove_all (cfg->modules_opts); g_hash_table_unref (cfg->modules_opts); g_hash_table_remove_all (cfg->variables); @@ -193,6 +151,7 @@ free_config (struct config_file *cfg) g_hash_table_unref (cfg->factors); g_hash_table_remove_all (cfg->c_modules); g_hash_table_unref (cfg->c_modules); + memory_pool_delete (cfg->cfg_pool); } char* @@ -321,11 +280,10 @@ substitute_variable (struct config_file *cfg, char *str, u_char recursive) var = substitute_variable (cfg, var, recursive); } /* Allocate new string */ - new = g_malloc (len - strlen (v_begin) + strlen (var) + 1); + new = memory_pool_alloc (cfg->cfg_pool, len - strlen (v_begin) + strlen (var) + 1); snprintf (new, len - strlen (v_begin) + strlen (var) + 1, "%s%s%s", str, var, v_end + 1); - g_free (str); str = new; } @@ -375,23 +333,23 @@ parse_filters_str (struct config_file *cfg, const char *str, enum script_type ty /* Search modules from known C modules */ for (i = 0; i < MODULES_NUM; i++) { if (strcasecmp (modules[i].name, *p) == 0) { - cur = g_malloc (sizeof (struct filter)); + cur = memory_pool_alloc (cfg->cfg_pool, sizeof (struct filter)); cur->type = C_FILTER; switch (type) { case SCRIPT_HEADER: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->header_filters, cur, next); break; case SCRIPT_MIME: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->mime_filters, cur, next); break; case SCRIPT_MESSAGE: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->message_filters, cur, next); break; case SCRIPT_URL: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->url_filters, cur, next); break; } @@ -402,23 +360,23 @@ parse_filters_str (struct config_file *cfg, const char *str, enum script_type ty /* Go to next iteration */ continue; } - cur = g_malloc (sizeof (struct filter)); + cur = memory_pool_alloc (cfg->cfg_pool, sizeof (struct filter)); cur->type = PERL_FILTER; switch (type) { case SCRIPT_HEADER: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->header_filters, cur, next); break; case SCRIPT_MIME: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->mime_filters, cur, next); break; case SCRIPT_MESSAGE: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->message_filters, cur, next); break; case SCRIPT_URL: - cur->func_name = g_strdup (*p); + cur->func_name = memory_pool_strdup (cfg->cfg_pool, *p); LIST_INSERT_HEAD (&cfg->url_filters, cur, next); break; } |