Loading src/or/config.c +4 −2 Original line number Diff line number Diff line Loading @@ -216,7 +216,9 @@ static int config_assign(or_options_t *options, struct config_line_t *list) { config_compare(list, "User", CONFIG_TYPE_STRING, &options->User) || config_compare(list, "RunTesting", CONFIG_TYPE_BOOL, &options->RunTesting) || config_compare(list, "HiddenServiceDir", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines) config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServiceNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServiceExcludeNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines) ) { /* then we're ok. it matched something. */ } else { Loading src/or/rendservice.c +23 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ typedef struct rend_service_t { /* Fields specified in config file */ char *directory; smartlist_t *ports; char *intro_nodes; char *intro_exclude_nodes; /* Other fields */ crypto_pk_env_t *private_key; char service_id[REND_SERVICE_ID_LEN+1]; Loading Loading @@ -165,19 +167,33 @@ int rend_config_services(or_options_t *options) service = tor_malloc_zero(sizeof(rend_service_t)); service->directory = tor_strdup(line->value); service->ports = smartlist_create(); } else { assert(!strcasecmp(line->key, "HiddenServicePort")); continue; } if (!service) { log_fn(LOG_WARN, "HiddenServicePort with no preceeding HiddenServiceDir directive"); rend_service_free(service); return -1; } if (!strcasecmp(line->key, "HiddenServicePort")) { portcfg = parse_port_config(line->value); if (!portcfg) { rend_service_free(service); return -1; } smartlist_add(service->ports, portcfg); } else if (!strcasecmp(line->key, "HiddenServiceNodes")) { if (service->intro_nodes) { log_fn(LOG_WARN, "Got multiple HiddenServiceNodes lines for a single service"); return -1; } service->intro_nodes = tor_strdup(line->value); } else { assert(!strcasecmp(line->key, "HiddenServiceExcludeNodes")); if (service->intro_exclude_nodes) { log_fn(LOG_WARN, "Got multiple HiddenServiceExcludedNodes lines for a single service"); return -1; } service->intro_exclude_nodes = tor_strdup(line->value); } } if (service) Loading Loading
src/or/config.c +4 −2 Original line number Diff line number Diff line Loading @@ -216,7 +216,9 @@ static int config_assign(or_options_t *options, struct config_line_t *list) { config_compare(list, "User", CONFIG_TYPE_STRING, &options->User) || config_compare(list, "RunTesting", CONFIG_TYPE_BOOL, &options->RunTesting) || config_compare(list, "HiddenServiceDir", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines) config_compare(list, "HiddenServicePort", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServiceNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines)|| config_compare(list, "HiddenServiceExcludeNodes", CONFIG_TYPE_LINELIST, &options->RendConfigLines) ) { /* then we're ok. it matched something. */ } else { Loading
src/or/rendservice.c +23 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,8 @@ typedef struct rend_service_t { /* Fields specified in config file */ char *directory; smartlist_t *ports; char *intro_nodes; char *intro_exclude_nodes; /* Other fields */ crypto_pk_env_t *private_key; char service_id[REND_SERVICE_ID_LEN+1]; Loading Loading @@ -165,19 +167,33 @@ int rend_config_services(or_options_t *options) service = tor_malloc_zero(sizeof(rend_service_t)); service->directory = tor_strdup(line->value); service->ports = smartlist_create(); } else { assert(!strcasecmp(line->key, "HiddenServicePort")); continue; } if (!service) { log_fn(LOG_WARN, "HiddenServicePort with no preceeding HiddenServiceDir directive"); rend_service_free(service); return -1; } if (!strcasecmp(line->key, "HiddenServicePort")) { portcfg = parse_port_config(line->value); if (!portcfg) { rend_service_free(service); return -1; } smartlist_add(service->ports, portcfg); } else if (!strcasecmp(line->key, "HiddenServiceNodes")) { if (service->intro_nodes) { log_fn(LOG_WARN, "Got multiple HiddenServiceNodes lines for a single service"); return -1; } service->intro_nodes = tor_strdup(line->value); } else { assert(!strcasecmp(line->key, "HiddenServiceExcludeNodes")); if (service->intro_exclude_nodes) { log_fn(LOG_WARN, "Got multiple HiddenServiceExcludedNodes lines for a single service"); return -1; } service->intro_exclude_nodes = tor_strdup(line->value); } } if (service) Loading