|
@@ -5145,6 +5145,9 @@ or_state_load(void)
|
|
|
return r;
|
|
|
}
|
|
|
|
|
|
+/** If writing the state to disk fails, try again after this many seconds. */
|
|
|
+#define STATE_WRITE_RETRY_INTERVAL 3600
|
|
|
+
|
|
|
/** Write the persistent state to disk. Return 0 for success, <0 on failure. */
|
|
|
int
|
|
|
or_state_save(time_t now)
|
|
@@ -5179,10 +5182,13 @@ or_state_save(time_t now)
|
|
|
tor_free(state);
|
|
|
fname = get_datadir_fname("state");
|
|
|
if (write_str_to_file(fname, contents, 0)<0) {
|
|
|
- log_warn(LD_FS, "Unable to write state to file \"%s\"", fname);
|
|
|
+ log_warn(LD_FS, "Unable to write state to file \"%s\"; will try later",
|
|
|
+ fname);
|
|
|
global_state->LastWritten = -1;
|
|
|
tor_free(fname);
|
|
|
tor_free(contents);
|
|
|
+ /* Try again in after STATE_WRITE_RETRY_INTERVAL */
|
|
|
+ global_state->next_write = now + STATE_WRITE_RETRY_INTERVAL;
|
|
|
return -1;
|
|
|
}
|
|
|
|