diff options
author | Roger Dingledine <arma@torproject.org> | 2004-11-15 03:53:03 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2004-11-15 03:53:03 +0000 |
commit | 47993ae6fbb84c22a5811e00390c20e03bae790b (patch) | |
tree | 673662acb54ff8294385973c82c149e1db2c017c | |
parent | ea97cb9c64b66ef7e3863fe4d72e19a525e285d4 (diff) | |
download | tor-47993ae6fbb84c22a5811e00390c20e03bae790b.tar tor-47993ae6fbb84c22a5811e00390c20e03bae790b.tar.gz |
some fixes so far
svn:r2880
-rw-r--r-- | src/or/config.c | 27 | ||||
-rw-r--r-- | src/or/control.c | 3 | ||||
-rw-r--r-- | src/or/directory.c | 17 |
3 files changed, 28 insertions, 19 deletions
diff --git a/src/or/config.c b/src/or/config.c index d30628134..95e0308fd 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -187,7 +187,7 @@ static int write_configuration_file(const char *fname, or_options_t *options); /** Command-line and config-file options. */ static or_options_t *global_options=NULL; -/** Name of ost recently read torrc file. */ +/** Name of most recently read torrc file. */ static char *config_fname = NULL; /** Return the currently configured options. */ @@ -325,7 +325,7 @@ options_act(void) { smin = config_dump_options(options, 1); smax = config_dump_options(options, 0); log_fn(LOG_DEBUG, "These are our options:\n%s",smax); - log_fn(LOG_DEBUGS, "We changed these options:\n%s",smin); + log_fn(LOG_DEBUG, "We changed these options:\n%s",smin); tor_free(smin); tor_free(smax); } @@ -2081,16 +2081,25 @@ static int write_configuration_file(const char *fname, or_options_t *options) { char fn_tmp[1024]; - char *new_val=NULL, *new_conf=NULL; + char *old_val=NULL, *new_val=NULL, *new_conf=NULL; int rename_old = 0, r; size_t len; - if (fname && file_status(fname) == FN_FILE) { - char *old_val = read_file_to_str(fname, 0); - if (strcmpstart(old_val, GENERATED_FILE_PREFIX)) { - rename_old = 1; + if (fname) { + switch (file_status(fname)) { + case FN_FILE: + old_val = read_file_to_str(fname, 0); + if (strcmpstart(old_val, GENERATED_FILE_PREFIX)) { + rename_old = 1; + } + tor_free(old_val); + break; + case FN_NOENT: + break; + default: + log_fn(LOG_WARN,"Config file %s is not a file? Failing.", fname); + return -1; } - tor_free(old_val); } if (!(new_conf = config_dump_options(options, 1))) { @@ -2109,7 +2118,7 @@ write_configuration_file(const char *fname, or_options_t *options) log_fn(LOG_WARN, "Filename too long"); goto err; } - if (file_status(fn_tmp) != FN_FILE) + if (file_status(fn_tmp) == FN_NOENT) break; ++i; } diff --git a/src/or/control.c b/src/or/control.c index f847cfee2..8e0c1aeb6 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -373,11 +373,10 @@ handle_control_saveconf(connection_t *conn, uint16_t len, const char *body) { if (save_current_config()<0) { - send_control_done(conn); - } else { send_control_error(conn, ERR_INTERNAL, "Unable to write configuration to disk."); } + send_control_done(conn); return 0; } diff --git a/src/or/directory.c b/src/or/directory.c index 4a9b21286..25c5939bb 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -140,32 +140,33 @@ directory_post_to_dirservers(uint8_t purpose, const char *payload, }); } -/** Start a connection to a random running directory server, using connection - * purpose 'purpose' requesting 'payload' (length 'payload_len'). The purpose - * should be one of 'DIR_PURPOSE_FETCH_DIR' or 'DIR_PURPOSE_FETCH_RENDDESC' or - * 'DIR_PURPOSE_FETCH_RUNNING_LIST.' +/** Start a connection to a random running directory server, using + * connection purpose 'purpose' requesting 'resource'. The purpose + * should be one of 'DIR_PURPOSE_FETCH_DIR', + * 'DIR_PURPOSE_FETCH_RENDDESC', 'DIR_PURPOSE_FETCH_RUNNING_LIST.' */ void directory_get_from_dirserver(uint8_t purpose, const char *resource) { routerinfo_t *r = NULL; trusted_dir_server_t *ds = NULL; + int fascistfirewall = get_options()->FascistFirewall; if (purpose == DIR_PURPOSE_FETCH_DIR) { if (advertised_server_mode()) { /* only ask authdirservers, and don't ask myself */ - ds = router_pick_trusteddirserver(1, get_options()->FascistFirewall); + ds = router_pick_trusteddirserver(1, fascistfirewall); } else { /* anybody with a non-zero dirport will do */ - r = router_pick_directory_server(1, get_options()->FascistFirewall); + r = router_pick_directory_server(1, fascistfirewall); if (!r) { log_fn(LOG_INFO, "No router found for directory; falling back to dirserver list"); - ds = router_pick_trusteddirserver(1, get_options()->FascistFirewall); + ds = router_pick_trusteddirserver(1, fascistfirewall); } } } else if (purpose == DIR_PURPOSE_FETCH_RUNNING_LIST) { /* right now, running-routers isn't cached, so ask a trusted directory */ - ds = router_pick_trusteddirserver(0, get_options()->FascistFirewall); + ds = router_pick_trusteddirserver(0, fascistfirewall); } else { // (purpose == DIR_PURPOSE_FETCH_RENDDESC) /* only ask authdirservers, any of them will do */ /* Never use fascistfirewall; we're going via Tor. */ |