diff options
Diffstat (limited to 'src/or/control.c')
-rw-r--r-- | src/or/control.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/or/control.c b/src/or/control.c index 84e0788b43..90ff173ef2 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -3933,7 +3933,8 @@ control_event_guard(const char *nickname, const char *digest, /** Choose a random authentication cookie and write it to disk. * Anybody who can read the cookie from disk will be considered - * authorized to use the control connection. */ + * authorized to use the control connection. Return -1 if we can't + * write the file, or 0 on success */ int init_cookie_authentication(int enabled) { @@ -3944,13 +3945,17 @@ init_cookie_authentication(int enabled) return 0; } + if (authentication_cookie_is_set) + return 0; + tor_snprintf(fname, sizeof(fname), "%s/control_auth_cookie", get_options()->DataDirectory); crypto_rand(authentication_cookie, AUTHENTICATION_COOKIE_LEN); authentication_cookie_is_set = 1; if (write_bytes_to_file(fname, authentication_cookie, AUTHENTICATION_COOKIE_LEN, 1)) { - log_warn(LD_FS,"Error writing authentication cookie."); + log_warn(LD_FS,"Error writing authentication cookie to %s.", + escaped(fname)); return -1; } |