While adding a feature I ran into a problem that is so old that I
had to dig into my pre-alpha source code to find when it was
introduced.

        Bugfix (introduced May 19, 1997): removing a parameter
        setting from main.cf did not reset the parameter to its
        default value.  File: global/mail_params.c.

This has rarely been an issue because most Postfix processes run
for a limited amount of time, and because people usually do "postfix
reload" after making a change, so that all daemons except master
terminate voluntarily.

A redundant design does have benefits ...

        Wietse

diff -bcr /var/tmp/postfix-2.6-20090106/src/global/mail_conf.c ./mail_conf.c
*** /var/tmp/postfix-2.6-20090106/src/global/mail_conf.c        Sat Apr 10 
10:52:51 2004
--- ./mail_conf.c       Thu Jan  8 20:45:10 2009
***************
*** 173,178 ****
--- 173,181 ----
        && geteuid() != 0)                      /* untrusted */
        mail_conf_checkdir(var_config_dir);
      path = concatenate(var_config_dir, "/", "main.cf", (char *) 0);
+     /* In case a name=value pair is removed from main.cf. */
+     if (dict_handle(CONFIG_DICT) != 0)
+         dict_unregister(CONFIG_DICT);
      dict_load_file(CONFIG_DICT, path);
      myfree(path);
  }

Reply via email to