[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [flashproxy/master] Store references to proxy pairs to avoid garbage collection.
commit 01d2047a74a61e1748361f5eaf3257b17b09f776
Author: David Fifield <david@xxxxxxxxxxxxxxx>
Date: Fri Jul 15 21:03:35 2011 +0000
Store references to proxy pairs to avoid garbage collection.
Adding an event listener is not enough to keep a proxy pair alive. Pairs
could be garbage-collected at unpredictable times. We were able to
provoke this by running more than one pair at a time with servers on
localhost; perhaps it was the greater memory pressure (64 KB blocks at a
time) that exposed it.
---
swfcat.as | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/swfcat.as b/swfcat.as
index 4dea237..9f0a4f7 100644
--- a/swfcat.as
+++ b/swfcat.as
@@ -50,6 +50,9 @@ package
/* Number of proxy pairs currently connected (up to
MAX_NUM_PROXY_PAIRS). */
private var num_proxy_pairs:int = 0;
+ /* References to active proxy pairs, to prevent them from being
+ garbage collected. */
+ private var proxy_pairs:Array;
private var fac_addr:Object;
@@ -73,6 +76,8 @@ package
badge = new Badge();
+ proxy_pairs = [];
+
if (RATE_LIMIT)
rate_limit = new BucketRateLimit(RATE_LIMIT * RATE_LIMIT_HISTORY, RATE_LIMIT_HISTORY);
else
@@ -189,9 +194,12 @@ package
puts("Error: " + e);
return;
}
+ proxy_pairs.push(proxy_pair);
proxy_pair.addEventListener(Event.COMPLETE, function(e:Event):void {
proxy_pair.log("Complete.");
num_proxy_pairs--;
+ /* Delete from the list of active proxy pairs. */
+ proxy_pairs.splice(proxy_pairs.indexOf(proxy_pair), 1);
badge.proxy_end();
});
proxy_pair.connect();
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits