r13054@catbus: nickm | 2007-05-29 14:20:50 -0400

An even better workaround for the probably-already-fixed bug 222.


svn:r10395
This commit is contained in:
Nick Mathewson 2007-05-29 18:21:00 +00:00
parent 9d1af71b70
commit e5ed434c42
2 changed files with 14 additions and 6 deletions

View File

@ -135,6 +135,11 @@ Changes in version 0.2.0.1-alpha - 2007-??-??
- When we are reporting the DirServer line we just parsed, we were
logging the second stanza of the key fingerprint, not the first.
o Minor bugfixes (logging):
- When we hit an EOF on a log (probably because we're shutting down),
don't try to remove the log from the list: just mark it as
unusable. (Bulletproofs against bug 222.)
o Minor bugfixes (other):
- Stop allowing hibernating servers to be "stable" or "fast".
- Check return values from pthread_mutex functions.

View File

@ -35,6 +35,7 @@ typedef struct logfile_t {
struct logfile_t *next; /**< Next logfile_t in the linked list. */
char *filename; /**< Filename to open. */
FILE *file; /**< Stream to receive log messages. */
int seems_dead; /**< Boolean: true if the stream seems to be kaput. */
int needs_close; /**< Boolean: true if the stream gets closed on shutdown. */
int min_loglevel; /**< Lowest severity level to send to this stream. */
int max_loglevel; /**< Highest severity level to send to this stream. */
@ -247,6 +248,10 @@ logv(int severity, uint32_t domain, const char *funcname, const char *format,
lf = lf->next;
continue;
}
if (lf->seems_dead) {
lf = lf->next;
continue;
}
if (!formatted) {
end_of_prefix =
@ -268,13 +273,11 @@ logv(int severity, uint32_t domain, const char *funcname, const char *format,
}
if (fputs(buf, lf->file) == EOF ||
fflush(lf->file) == EOF) { /* error */
/* don't log the error! Blow away this log entry and continue. */
logfile_t *victim = lf;
lf = victim->next;
delete_log(victim);
} else {
lf = lf->next;
/* don't log the error! mark this log entry to be blown away, and
* continue. */
lf->seems_dead = 1;
}
lf = lf->next;
}
}