Commit ecf414f0 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Stop using separate defaults for no-config-file and empty-config-file


svn:r2329
parent d6e47bec
Loading
Loading
Loading
Loading
+20 −17
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ typedef enum config_type_t {
#define CONFIG_LINE_T_MAXLEN 4096

static struct config_line_t *config_get_commandlines(int argc, char **argv);
static struct config_line_t *config_get_lines(FILE *f);
static int config_get_lines(FILE *f, struct config_line_t **result);
static void config_free_lines(struct config_line_t *front);
static int config_compare(struct config_line_t *c, const char *key, config_type_t type, void *arg);
static int config_assign(or_options_t *options, struct config_line_t *list);
@@ -80,21 +80,27 @@ config_line_prepend(struct config_line_t *front,
}

/** Helper: parse the config file and strdup into key/value
 * strings. Return list, or NULL if parsing the file failed.  Warn and
 * ignore any misformatted lines. */
static struct config_line_t *config_get_lines(FILE *f) {
 * strings. Set *result to the list, or NULL if parsing the file
 * failed.  Return 0 on success, -1 on failure. Warn and ignore any
 * misformatted lines. */
static int config_get_lines(FILE *f,
                            struct config_line_t **result) {

  struct config_line_t *front = NULL;
  char line[CONFIG_LINE_T_MAXLEN];
  int result;
  int r;
  char *key, *value;

  while( (result=parse_line_from_file(line,sizeof(line),f,&key,&value)) > 0) {
  while( (r=parse_line_from_file(line,sizeof(line),f,&key,&value)) > 0) {
    front = config_line_prepend(front, key, value);
  }
  if(result < 0)
    return NULL;
  return front;
  if(r < 0) {
    *result = NULL;
    return -1;
  } else {
    *result = front;
    return 0;
  }
}

/**
@@ -396,9 +402,6 @@ static int config_assign_defaults(or_options_t *options) {
  config_free_lines(options->ExitPolicy);
  options->ExitPolicy = config_line_prepend(NULL, "ExitPolicy", "reject *:*");

  /* plus give them a dirservers file */
  if(config_assign_default_dirservers() < 0)
    return -1;
  return 0;
}

@@ -656,14 +659,14 @@ int getconfig(int argc, char **argv, or_options_t *options) {
  tor_assert(fname);
  log(LOG_DEBUG,"Opening config file '%s'",fname);

  if(config_assign_defaults(options) < 0) {
    return -1;
  }
  cf = fopen(fname, "r");
  if(!cf) {
    if(using_default_torrc == 1) {
      log(LOG_NOTICE, "Configuration file '%s' not present, using reasonable defaults.",fname);
      tor_free(fname);
      if(config_assign_defaults(options) < 0) {
        return -1;
      }
    } else {
      log(LOG_WARN, "Unable to open configuration file '%s'.",fname);
      tor_free(fname);
@@ -671,8 +674,8 @@ int getconfig(int argc, char **argv, or_options_t *options) {
    }
  } else { /* it opened successfully. use it. */
    tor_free(fname);
    cl = config_get_lines(cf);
    if(!cl) return -1;
    if (config_get_lines(cf, &cl)<0)
      return -1;
    if(config_assign(options,cl) < 0)
      return -1;
    config_free_lines(cl);
+4 −1
Original line number Diff line number Diff line
@@ -781,13 +781,16 @@ static int do_main_loop(void) {
    return -1;
  }

  /* load the routers file */
  /* load the routers file, or assign the defaults. */
  if(options.RouterFile) {
    routerlist_clear_trusted_directories();
    if (router_load_routerlist_from_file(options.RouterFile, 1) < 0) {
      log_fn(LOG_ERR,"Error loading router list.");
      return -1;
    }
  } else {
    if(config_assign_default_dirservers() < 0)
      return -1;
  }

  if(authdir_mode()) {