diff options
Diffstat (limited to 'src/or/config.c')
-rw-r--r-- | src/or/config.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/or/config.c b/src/or/config.c index 17d776e71e..5198eaa055 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -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; } |