limit active UDP client to 256

This commit is contained in:
BreakWa11 2016-05-16 18:20:57 +08:00
parent bb916eb705
commit 4e43a4932d
2 changed files with 5 additions and 3 deletions

View file

@ -107,10 +107,10 @@ class LRUCache(collections.MutableMapping):
logging.debug('%d keys swept' % c)
return c < SWEEP_MAX_ITEMS
def clear(self):
def clear(self, keep):
now = time.time()
c = 0
while c < SWEEP_MAX_ITEMS:
while len(self._keys_to_last_time) > keep:
if len(self._keys_to_last_time) == 0:
break
for key in self._keys_to_last_time:

View file

@ -1138,6 +1138,8 @@ class UDPRelay(object):
(common.to_str(server_addr), server_port,
r_addr[0], r_addr[1]))
self._cache.clear(256)
if self._is_local:
ref_iv = [encrypt.encrypt_new_iv(self._method)]
self._protocol.obfs.server_info.iv = ref_iv[0]
@ -1344,7 +1346,7 @@ class UDPRelay(object):
logging.debug('UDP close')
self._closed = True
if not next_tick:
self._cache.clear()
self._cache.clear(0)
if self._eventloop:
self._eventloop.remove_periodic(self.handle_periodic)
self._eventloop.remove(self._server_socket)