[tor-bugs] #18881 [Core Tor/Stem]: speed up is_match() of stem/exit_policy.py

Tor Bug Tracker & Wiki blackhole at torproject.org
Sun Apr 24 14:23:54 UTC 2016


#18881: speed up is_match() of stem/exit_policy.py
-------------------------------+--------------------
     Reporter:  toralf         |      Owner:  atagar
         Type:  defect         |     Status:  new
     Priority:  Medium         |  Milestone:
    Component:  Core Tor/Stem  |    Version:
     Severity:  Normal         |   Keywords:
Actual Points:                 |  Parent ID:
       Points:                 |   Reviewer:
      Sponsor:                 |
-------------------------------+--------------------
 I turns out to me, that the following code snipped
 {{{
         for conn in connections:
           raddr, rport, lport = conn.remote_address, conn.remote_port,
 conn.local_port
           if policy.can_exit_to(raddr, rport):
             Curr.setdefault(rport, []).append(str(lport) + ':' + raddr)
 }}}
 takes much longer than expected due to the fact, that policy.can_exit()
 calls is_match() which itself makes a a lot of checks eg.:
 {{{
     # validate our input and check if the argument doesn't match our
 address type

     if address is not None:
 }}}
 For a relay having about 5,000 connections and about 100 ExitPolicy rules
 thoses checks are repeated 500,000 times w/o too much profit, or ?

 I do wonder if is_match() could get a wrapper which just does the given
 address+port test against the exit policy ?

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/18881>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list