diff options
author | Gilles Chehade <gilles@poolp.org> | 2012-11-19 12:41:50 +0100 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2012-11-19 12:41:50 +0100 |
commit | 8aff735d91dfa5ed76978c72ad062e285b1f8cdb (patch) | |
tree | c44277f74f483ca4e26bb5894302ef71e81cb96c /smtpd/config.c | |
parent | Merge branch 'master' into byebye_mapel (diff) | |
download | OpenSMTPD-8aff735d91dfa5ed76978c72ad062e285b1f8cdb.tar.xz OpenSMTPD-8aff735d91dfa5ed76978c72ad062e285b1f8cdb.zip |
- replace the env->sc_tables / env->sc_tables_reload table lists
with table tree and dict to allow faster lookups
Diffstat (limited to 'smtpd/config.c')
-rw-r--r-- | smtpd/config.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/smtpd/config.c b/smtpd/config.c index 3324279d..3b8ede12 100644 --- a/smtpd/config.c +++ b/smtpd/config.c @@ -72,16 +72,17 @@ purge_config(uint8_t what) env->sc_listeners = NULL; } if (what & PURGE_TABLES) { - while ((t = TAILQ_FIRST(env->sc_tables)) != NULL) { - TAILQ_REMOVE(env->sc_tables, t, t_entry); - + while (tree_poproot(env->sc_tables_tree, NULL, (void **)&t)) { p = NULL; while (dict_poproot(&t->t_dict, NULL, (void **)&p)) free(p); + dict_xpop(env->sc_tables_dict, t->t_name); free(t); } - free(env->sc_tables); - env->sc_tables = NULL; + free(env->sc_tables_dict); + free(env->sc_tables_tree); + env->sc_tables_dict = NULL; + env->sc_tables_tree = NULL; } if (what & PURGE_RULES) { while ((r = TAILQ_FIRST(env->sc_rules)) != NULL) { |