summaryrefslogtreecommitdiff
path: root/src/or/control.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/or/control.c')
-rw-r--r--src/or/control.c9
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;
}