Browse Source

Fix leaks in test_oom.c

Nick Mathewson 10 years ago
parent
commit
504e2000ed
1 changed files with 11 additions and 0 deletions
  1. 11 0
      src/test/test_oom.c

+ 11 - 0
src/test/test_oom.c

@@ -6,6 +6,7 @@
 #define RELAY_PRIVATE
 #define BUFFERS_PRIVATE
 #define CIRCUITLIST_PRIVATE
+#define CONNECTION_PRIVATE
 #include "or.h"
 #include "buffers.h"
 #include "circuitlist.h"
@@ -216,6 +217,7 @@ test_oom_streambuf(void *arg)
   struct timeval tv = { 1389641159, 0 };
   uint32_t tvms;
   int i;
+  smartlist_t *edgeconns = smartlist_new();
 
   (void) arg;
 
@@ -257,17 +259,21 @@ test_oom_streambuf(void *arg)
     tor_gettimeofday_cache_set(&tv);
     ec = dummy_edge_conn_new(c1, CONN_TYPE_EXIT, 1000, 1000);
     tt_assert(ec);
+    smartlist_add(edgeconns, ec);
     tv.tv_usec += 10*1000;
     tor_gettimeofday_cache_set(&tv);
     ec = dummy_edge_conn_new(c2, CONN_TYPE_AP, 1000, 1000);
     tt_assert(ec);
+    smartlist_add(edgeconns, ec);
     tv.tv_usec += 10*1000;
     tor_gettimeofday_cache_set(&tv);
     ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000); /* Yes, 4 twice*/
     tt_assert(ec);
+    smartlist_add(edgeconns, ec);
     tv.tv_usec += 10*1000;
     tor_gettimeofday_cache_set(&tv);
     ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000);
+    smartlist_add(edgeconns, ec);
     tt_assert(ec);
   }
 
@@ -302,6 +308,7 @@ test_oom_streambuf(void *arg)
     tor_gettimeofday_cache_set(&tv);
     ec = dummy_edge_conn_new(c4, CONN_TYPE_EXIT, 1000, 1000);
     tt_assert(ec);
+    smartlist_add(edgeconns, ec);
   }
   tt_int_op(buf_get_total_allocation(), ==, 4096*17*2);
   tt_int_op(circuit_max_queued_item_age(c4, tvms), ==, 1000);
@@ -337,6 +344,10 @@ test_oom_streambuf(void *arg)
   circuit_free(c4);
   circuit_free(c5);
 
+  SMARTLIST_FOREACH(edgeconns, edge_connection_t *, ec,
+                    connection_free_(TO_CONN(ec)));
+  smartlist_free(edgeconns);
+
   UNMOCK(circuit_mark_for_close_);
 }