From 509405a5f7643f94933ae7feb0a2788a73abd801 Mon Sep 17 00:00:00 2001 From: Roger Dingledine Date: Tue, 26 Apr 2005 18:52:16 +0000 Subject: [PATCH] clean up this TOR_FRAGILE business svn:r4116 --- src/common/util.h | 7 ++++++- src/or/circuitbuild.c | 8 ++------ src/or/circuituse.c | 4 +--- src/or/connection.c | 28 +++++++--------------------- src/or/connection_edge.c | 12 +++--------- src/or/connection_or.c | 4 +--- src/or/directory.c | 4 +--- src/or/dns.c | 18 +++++------------- src/or/main.c | 8 ++------ src/or/or.h | 4 ---- 10 files changed, 28 insertions(+), 69 deletions(-) diff --git a/src/common/util.h b/src/common/util.h index b3262d87a3..31196085c6 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -23,7 +23,7 @@ #include #endif -/** Replace assert() with a variant that sends failures to the log before +/* Replace assert() with a variant that sends failures to the log before * calling assert() normally. */ #ifdef NDEBUG @@ -47,6 +47,11 @@ } } while (0) #endif +/** Define this if you want Tor to crash when any problem comes up, + * so you can get a coredump and track things down. */ +// #define tor_fragile_assert() tor_assert(0) +#define tor_fragile_assert() + /* Memory management */ void *_tor_malloc(const char *file, const int line, size_t size); void *_tor_malloc_zero(const char *file, const int line, size_t size); diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c index a1dc71c264..32841f8b9c 100644 --- a/src/or/circuitbuild.c +++ b/src/or/circuitbuild.c @@ -820,9 +820,7 @@ static int new_route_len(double cw, uint8_t purpose, smartlist_t *routers) { routelen = 4; else { log_fn(LOG_WARN,"Bug: unhandled purpose %d", purpose); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } #endif @@ -1138,9 +1136,7 @@ choose_good_exit_server(uint8_t purpose, routerlist_t *dir, return r; } log_fn(LOG_WARN,"Bug: unhandled purpose %d", purpose); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return NULL; } diff --git a/src/or/circuituse.c b/src/or/circuituse.c index 88ca9249b1..5fde33d5bc 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -731,9 +731,7 @@ circuit_launch_by_router(uint8_t purpose, routerinfo_t *exit, default: log_fn(LOG_WARN,"Bug: unexpected purpose %d when cannibalizing a general circ.", purpose); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return NULL; } return circ; diff --git a/src/or/connection.c b/src/or/connection.c index c19c9b9dd0..a3ee4554e0 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -270,9 +270,7 @@ void connection_about_to_close_connection(connection_t *conn) if (CONN_IS_EDGE(conn)) { if (!conn->has_sent_end) { log_fn(LOG_WARN,"Harmless bug: Edge connection (marked at %s:%d) hasn't sent end yet?", conn->marked_for_close_file, conn->marked_for_close); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); } } @@ -345,9 +343,7 @@ void connection_close_immediate(connection_t *conn) assert_connection_ok(conn,0); if (conn->s < 0) { log_fn(LOG_WARN,"Bug: Attempt to close already-closed connection."); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return; } if (conn->outbuf_flushlen) { @@ -380,9 +376,7 @@ _connection_mark_for_close(connection_t *conn, int line, const char *file) log(LOG_WARN, "Duplicate call to connection_mark_for_close at %s:%d" " (first at %s:%d)", file, line, conn->marked_for_close_file, conn->marked_for_close); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return; } @@ -1572,9 +1566,7 @@ static int connection_process_inbuf(connection_t *conn, int package_partial) { return connection_control_process_inbuf(conn); default: log_fn(LOG_WARN,"Bug: got unexpected conn type %d.", conn->type); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } } @@ -1607,9 +1599,7 @@ static int connection_finished_flushing(connection_t *conn) { return connection_control_finished_flushing(conn); default: log_fn(LOG_WARN,"Bug: got unexpected conn type %d.", conn->type); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } } @@ -1633,9 +1623,7 @@ static int connection_finished_connecting(connection_t *conn) return connection_dir_finished_connecting(conn); default: log_fn(LOG_WARN,"Bug: got unexpected conn type %d.", conn->type); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } } @@ -1658,9 +1646,7 @@ static int connection_reached_eof(connection_t *conn) return connection_control_reached_eof(conn); default: log_fn(LOG_WARN,"Bug: got unexpected conn type %d.", conn->type); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } } diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index 01c9d44e7a..a0fa1605dd 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -129,9 +129,7 @@ int connection_edge_process_inbuf(connection_t *conn, int package_partial) { return 0; } log_fn(LOG_WARN,"Bug: Got unexpected state %d. Closing.",conn->state); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); connection_edge_end(conn, END_STREAM_REASON_INTERNAL, conn->cpath_layer); connection_mark_for_close(conn); return -1; @@ -176,9 +174,7 @@ connection_edge_end(connection_t *conn, char reason, crypt_path_t *cpath_layer) if (conn->has_sent_end) { log_fn(LOG_WARN,"Harmless bug: Calling connection_edge_end (reason %d) on an already ended stream?", reason); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } @@ -251,9 +247,7 @@ int connection_edge_finished_flushing(connection_t *conn) { return 0; default: log_fn(LOG_WARN,"BUG: called in unexpected state %d.", conn->state); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } return 0; diff --git a/src/or/connection_or.c b/src/or/connection_or.c index aa8dc0abe6..3a816cfaef 100644 --- a/src/or/connection_or.c +++ b/src/or/connection_or.c @@ -148,9 +148,7 @@ int connection_or_finished_flushing(connection_t *conn) { break; default: log_fn(LOG_WARN,"BUG: called in unexpected state %d.", conn->state); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } return 0; diff --git a/src/or/directory.c b/src/or/directory.c index efea2ce4e3..36ffeb5841 100644 --- a/src/or/directory.c +++ b/src/or/directory.c @@ -1126,9 +1126,7 @@ int connection_dir_finished_flushing(connection_t *conn) { return 0; default: log_fn(LOG_WARN,"Bug: called in unexpected state %d.", conn->state); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return -1; } return 0; diff --git a/src/or/dns.c b/src/or/dns.c index 5ae666effc..0690422fb4 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -139,15 +139,11 @@ static void purge_expired_resolves(uint32_t now) { log(LOG_DEBUG,"Forgetting old cached resolve (expires %lu)", (unsigned long)resolve->expire); if (resolve->state == CACHE_STATE_PENDING) { log_fn(LOG_WARN,"Bug: Expiring a dns resolve that's still pending. Forgot to cull it?"); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); } if (resolve->pending_connections) { log_fn(LOG_WARN, "Closing pending connections on expiring DNS resolve!"); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); while (resolve->pending_connections) { pend = resolve->pending_connections; resolve->pending_connections = pend->next; @@ -439,9 +435,7 @@ void dns_cancel_pending_resolve(char *address) { if (!resolve->pending_connections) { /* XXX this should never trigger, but sometimes it does */ log_fn(LOG_WARN,"Bug: Address '%s' is pending but has no pending connections!", address); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); return; } tor_assert(resolve->pending_connections); @@ -637,10 +631,8 @@ int connection_dns_process_inbuf(connection_t *conn) { tor_assert(conn->type == CONN_TYPE_DNSWORKER); if (conn->state != DNSWORKER_STATE_BUSY && buf_datalen(conn->inbuf)) { - log_fn(LOG_WARN,"Bug: read data (%d bytes) from an idle dns worker. Please report.", (int)buf_datalen(conn->inbuf)); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + log_fn(LOG_WARN,"Bug: read data (%d bytes) from an idle dns worker (address '%s'. Please report.", (int)buf_datalen(conn->inbuf), conn->address); + tor_fragile_assert(); return 0; } if (buf_datalen(conn->inbuf) < 5) /* entire answer available? */ diff --git a/src/or/main.c b/src/or/main.c index d34770faa4..e2abfaeddc 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -356,9 +356,7 @@ conn_read_callback(int fd, short event, void *_conn) #ifndef MS_WINDOWS log_fn(LOG_WARN,"Bug: unhandled error on read for %s connection (fd %d); removing", conn_type_to_string(conn->type), conn->s); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); #endif if (CONN_IS_EDGE(conn)) connection_edge_end_errno(conn, conn->cpath_layer); @@ -388,9 +386,7 @@ static void conn_write_callback(int fd, short events, void *_conn) /* this connection is broken. remove it. */ log_fn(LOG_WARN,"Bug: unhandled error on write for %s connection (fd %d); removing", conn_type_to_string(conn->type), conn->s); -#ifdef TOR_FRAGILE - tor_assert(0); -#endif + tor_fragile_assert(); conn->has_sent_end = 1; /* otherwise we cry wolf about duplicate close */ /* XXX do we need a close-immediate here, so we don't try to flush? */ connection_mark_for_close(conn); diff --git a/src/or/or.h b/src/or/or.h index 67e1ff2a80..1a31973e22 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -146,10 +146,6 @@ #define cell_t tor_cell_t #endif -/** Define this if you want Tor to crash when any problem comes up, - * so you can get a coredump and track things down. */ -#undef TOR_FRAGILE - #define DEFAULT_BANDWIDTH_OP (1024 * 1000) #define MAX_NICKNAME_LEN 19 /* Hex digest plus dollar sign. */