ソースを参照

Don't compare LINELIST_S and OBSOLETE config options.

Kamran Riaz Khan 13 年 前
コミット
e6e804848c
1 ファイル変更9 行追加0 行削除
  1. 9 0
      src/or/config.c

+ 9 - 0
src/or/config.c

@@ -591,6 +591,8 @@ static int write_configuration_file(const char *fname,
 static config_line_t *get_assigned_option(const config_format_t *fmt,
                                         const void *options, const char *key,
                                         int escape_val);
+static const config_var_t *config_find_option(const config_format_t *fmt,
+                                        const char *key);
 static void config_init(const config_format_t *fmt, void *options);
 static int or_state_validate(or_state_t *old_options, or_state_t *options,
                              int from_setconf, char **msg);
@@ -699,6 +701,7 @@ set_options(or_options_t *new_val, char **msg)
   int i;
   smartlist_t *elements;
   config_line_t *line;
+  config_var_t *var;
   or_options_t *old_options = global_options;
   global_options = new_val;
   /* Note that we pass the *old* options below, for comparison. It
@@ -718,6 +721,12 @@ set_options(or_options_t *new_val, char **msg)
   if (old_options) {
     elements = smartlist_create();
     for (i=0; options_format.vars[i].name; ++i) {
+      var = config_find_option(&options_format,
+                               options_format.vars[i].name);
+      if (var->type == CONFIG_TYPE_LINELIST_S ||
+          var->type == CONFIG_TYPE_OBSOLETE) {
+        continue;
+      }
       if (!option_is_same(&options_format, new_val, old_options,
         options_format.vars[i].name)) {
         line = get_assigned_option(&options_format, new_val,