Browse Source

clean up this TOR_FRAGILE business

svn:r4116
Roger Dingledine 20 years ago
parent
commit
509405a5f7
10 changed files with 28 additions and 69 deletions
  1. 6 1
      src/common/util.h
  2. 2 6
      src/or/circuitbuild.c
  3. 1 3
      src/or/circuituse.c
  4. 7 21
      src/or/connection.c
  5. 3 9
      src/or/connection_edge.c
  6. 1 3
      src/or/connection_or.c
  7. 1 3
      src/or/directory.c
  8. 5 13
      src/or/dns.c
  9. 2 6
      src/or/main.c
  10. 0 4
      src/or/or.h

+ 6 - 1
src/common/util.h

@@ -23,7 +23,7 @@
 #include <time.h>
 #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);

+ 2 - 6
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;
 }
 

+ 1 - 3
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;

+ 7 - 21
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;
   }
 }

+ 3 - 9
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;

+ 1 - 3
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;

+ 1 - 3
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;

+ 5 - 13
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? */

+ 2 - 6
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);

+ 0 - 4
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. */