Quellcode durchsuchen

backport candidate:
Fix a minor memory leak when we fail to find enough suitable
servers to choose a circuit. Bugfix on 0.1.2.x.


svn:r11247

Roger Dingledine vor 18 Jahren
Ursprung
Commit
79066b4851
2 geänderte Dateien mit 4 neuen und 2 gelöschten Zeilen
  1. 2 0
      ChangeLog
  2. 2 2
      src/or/circuitbuild.c

+ 2 - 0
ChangeLog

@@ -24,6 +24,8 @@ Changes in version 0.2.0.6-alpha - 2007-??-??
     - Stop putting the authentication cookie in a file called "0"
     - Stop putting the authentication cookie in a file called "0"
       in your working directory if you don't specify anything for the
       in your working directory if you don't specify anything for the
       new CookieAuthFile option. Reported by Matt Edman.
       new CookieAuthFile option. Reported by Matt Edman.
+    - Fix a minor memory leak when we fail to find enough suitable
+      servers to choose a circuit. Bugfix on 0.1.2.x.
 
 
   o Minor features (misc):
   o Minor features (misc):
     - Optionally (if built with -DEXPORTMALLINFO) export the output
     - Optionally (if built with -DEXPORTMALLINFO) export the output

+ 2 - 2
src/or/circuitbuild.c

@@ -1072,7 +1072,6 @@ circuit_get_unhandled_ports(time_t now)
   int i;
   int i;
 
 
   for (i = 0; i < smartlist_len(source); ++i) {
   for (i = 0; i < smartlist_len(source); ++i) {
-    /*XXXX020 some of these are leaked somewhere.. fix that. */
     tmp = tor_malloc(sizeof(uint16_t));
     tmp = tor_malloc(sizeof(uint16_t));
     memcpy(tmp, smartlist_get(source, i), sizeof(uint16_t));
     memcpy(tmp, smartlist_get(source, i), sizeof(uint16_t));
     smartlist_add(dest, tmp);
     smartlist_add(dest, tmp);
@@ -1272,7 +1271,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
      * at least one predicted exit port. */
      * at least one predicted exit port. */
 
 
     int try;
     int try;
-    smartlist_t *needed_ports = circuit_get_unhandled_ports(time(NULL));
+    smartlist_t *needed_ports;
 
 
     if (best_support == -1) {
     if (best_support == -1) {
       if (need_uptime || need_capacity) {
       if (need_uptime || need_capacity) {
@@ -1290,6 +1289,7 @@ choose_good_exit_server_general(routerlist_t *dir, int need_uptime,
       log_notice(LD_CIRC, "All routers are down or won't exit -- choosing a "
       log_notice(LD_CIRC, "All routers are down or won't exit -- choosing a "
                  "doomed exit at random.");
                  "doomed exit at random.");
     }
     }
+    needed_ports = circuit_get_unhandled_ports(time(NULL));
     for (try = 0; try < 2; try++) {
     for (try = 0; try < 2; try++) {
       /* try once to pick only from routers that satisfy a needed port,
       /* try once to pick only from routers that satisfy a needed port,
        * then if there are none, pick from any that support exiting. */
        * then if there are none, pick from any that support exiting. */