{5} Accepted, Active Tickets by Owner (Full Description) (150 matches)

List tickets accepted, group by ticket owner. This report demonstrates the use of full-row display.

Results (1 - 100 of 150)

1 2

Cthulhu (2 matches)

Ticket Summary Component Milestone Type Created
#13421 GoodBadISP's Revamp Internal Services/Wiki project Oct 15, 2014

Following a discussion on the mailing list [1] the GoodBadISP page could do with some updating and proper arranging.

Some of the categories I have in mind to make available in the table format are as follows: Country, Company Name, ASN, Bridges Allowed, Relays Allowed, Exits Allowed, Last Updated, Correspondence.

Would "Bridges Allowed" be a redundant measure since they won't be in the public sphere?

Moritz @ Torservers already has done a fair deal of work, some is outdated or could use an update though but it's a good place to start our focus and give inspiration where needed. [2] [3] [4]

[1] https://lists.torproject.org/pipermail/tor-relays/2014-October/005493.html

[2] https://www.torservers.net/wiki/hoster/experience

[3] https://www.torservers.net/wiki/hoster/inquiry

[4] https://www.torservers.net/wiki/hoster/index

Note: Those wishing to assist on this project please feel free to CC yourself in and keep an eye on the child tickets. I can be found under the pseudonym "TheCthulhu" on IRC or contacted at thecthulhu <at> riseup <dot> net if you wish to ask me directly what to work on next. If this is the first time you've assisted using Trac or the Tor Wiki, don't hesitate to ask for help.

#13473 Sort Existing GoodBadISP page into tables Internal Services/Wiki task Oct 19, 2014

The existing GoodBadISP tables need sorting into the new format. All opinions, feedback and communications to that ISP must go in the correct section on ISPCorrespondence page to keep the primary page clean and to the point since it will grow substantially over time.

The new format should be available soon after this ticket is posted as it will be done for the US hosts (good experiences).

JacobHenner (1 match)

Ticket Summary Component Milestone Type Created
#8177 Vidalia Help Documentation Out of Date Archived/Vidalia defect Feb 6, 2013

In the most recent release of the Tor Browser Bundle, the help documentation bundled with Vidalia (accessed by selecting Help) is out of date. A search of GeoIP will confirm this, as the documentation still lists the GeoIP lookup server at geoip.vidalia-project.net, which has not been maintained since 2010.

MB (1 match)

Ticket Summary Component Milestone Type Created
#9328 o2online.de Live Check not working with enabled SSL strictness HTTPS Everywhere/EFF-HTTPS Everywhere defect Jul 25, 2013

With enabled HTTPS Everywhere, http://www.o2online.de/microsite/o2-netz/live-check/ does not load additional JavaScript from a non-SSL CDN

ahf (2 matches)

Ticket Summary Component Milestone Type Created
#11660 Make tor_spawn_background and related interfaces work the same on windows and *nix Core Tor/Tor Tor: unspecified defect Apr 30, 2014

Have a look at the tor_spawn_background unit tests. That's sure a lot of #ifdefs! It would be nice if our portability code actually let us write code to be portable across platforms: we should fix tor_spawn_background and tor_read_all_handle to act the same across platforms.

#21678 Unify Windows and Unix API for tor_read_all_handle() in util.c Core Tor/Tor Tor: 0.3.3.x-final enhancement Mar 8, 2017

While working on #21654 I noticed that we have some different code paths that depends upon whether we're running on Windows or not where it would be trivial to turn them into a single code path.

I do not have access to a Windows machine right now, so it would be useful if someone could help test the patch(es).

arma (5 matches)

Ticket Summary Component Milestone Type Created
#15713 toggling DisableNetwork during bootstrap causes delay Core Tor/Tor Tor: unspecified defect Apr 17, 2015

While testing a fix for #11879, Kathy and I noticed that if the bootstrap process is interrupted by setting DisableNetwork=1 via the control port, Tor waits about a minute after DisableNetwork is set back to 0 before continuing network activity. We observed this problem on a Mac OS 10.8.5 system. Possibly related tickets: #9229, #11069.

Once release candidates for Tor Browser 4.5 are available, this should be reproducible by following these steps:

  1. Start Tor Browser and click "Connect".
  2. Click "Open Settings" in the connection progress window to interrupt the bootstrap process.
  3. Click "Connect" again. Notice that there is a delay before the bootstrap makes more progress.

We are also able to reproduce it using Tor and a manual (telnet) control port connection. Follow these steps (control port authentication is up to you):

  1. Remove all cached Tor data and start Tor like this:

./tor --defaults-torrc torrc-defaults -f torrc DisableNetwork 1

  1. Make a control port connection and issue this command:

SETCONF DisableNetwork=0

  1. Wait for bootstrapping to reach 25-50% and then do:

SETCONF DisableNetwork=1

  1. Re-enable network access:

SETCONF DisableNetwork=0 Notice that there is a delay before the bootstrap makes more progress.

We used the torrc-defaults file that ships with Tor Browser 4.5a5:

# If non-zero, try to write to disk less frequently than we would otherwise.
AvoidDiskWrites 1
# Where to send logging messages.  Format is minSeverity[-maxSeverity]
# (stderr|stdout|syslog|file FILENAME).
Log notice stdout
# Bind to this address to listen to connections from SOCKS-speaking
# applications.
SocksPort 9150
ControlPort 9151
CookieAuthentication 1
## fteproxy configuration
ClientTransportPlugin fte exec PluggableTransports/fteproxy.bin --managed

## obfs4proxy configuration
ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec PluggableTransports/obfs4proxy

## flash proxy configuration
# Change the second number here (9000) to the number of a port that can
# receive connections from the Internet (the port for which you
# configured port forwarding).
ClientTransportPlugin flashproxy exec PluggableTransports/flashproxy-client --register :0 :9000

## meek configuration
ClientTransportPlugin meek exec PluggableTransports/meek-client-torbrowser -- PluggableTransports/meek-client

Our torrc is also from Tor Browser and it just contains a few paths:

DataDirectory /Users/.../tb-11879.app/TorBrowser/Data/Tor
GeoIPFile /Users/.../tb-11879.app/TorBrowser/Data/Tor/geoip
GeoIPv6File /Users/.../tb-11879.app/TorBrowser/Data/Tor/geoip6

I will attach some log output.

#15715 spurious "Network is unreachable" error after setting DisableNetwork=1 Core Tor/Tor Tor: unspecified defect Apr 17, 2015

If DisableNetwork is set to 1 via SETCONF during bootstrapping, Tor sometimes generates spurious errors such as "Network is unreachable". Kathy and I saw this while testing a fix for #11879. We realize this may be difficult to fix due to the internal architecture / concurrency inside Tor.

See #15713 for steps to reproduce (but note that an error does not occur every time). In the log that is attached to #15713 you can see an example:

Apr 17 10:28:10.000 [warn] Problem bootstrapping. Stuck at 25%: Loading networkstatus consensus. (Network is unreachable; NOROUTE; count 1; recommendation warn; host 847B1F850344D7876491A54892F904934E4EB85D at

(the error happens right away if it happens at all – no delay).

This problem may cause some Tor Browser users to be a little confused; all they need to do is click "Open Settings" while Tor Browser was starting up and they will sometimes see an error alert.

#19162 Make it even harder to become HSDir Core Tor/Tor Tor: unspecified defect May 23, 2016

In #8243 we started requiring Stable flag for becoming HSDirs, but this is still not hard enough for motivated adversaries. Hence we need to make it even harder for a relay to become HSDir, so that only relays that have been around for long get the flag. After prop224 gets deployed, there will be less incentive for adversaries to become HSDirs since they won't be able to harvest onion addresses.

Until then, our current plan is to increase the bandwidth and uptime required to become an HSDir to something almost unreasonable. For example requiring an uptime of over 6 months, or maybe requiring that the relay is in the top 1/4th of uptimes on the network.

#17773 Should clients avoid using guards that lost the Guard flag? Core Tor/Tor Tor: unspecified enhancement Dec 8, 2015

Nick and I both thought that at least in the past, Tor clients would stop using a relay as their guard, if it loses the Guard flag.

But it looks like the code doesn't do that -- once a relay is your guard, you'll use it in the guard position regardless of whether it has the Guard flag at this moment or not.

This is actually a tricky design decision. In favor of avoiding guards that don't have the guard flag:

  • If they get really slow, we can instruct clients to abandon them.
  • If a relay gets the guard flag for only a short period of time, it will have only a small number of (dedicated) users using it for the next months.

In favor of using non-Guard guards anyway:

  • An attacker can't push you away from your guard by hurting its performance in the eyes of the directory authorities.
  • You won't rotate guards as many times.

That "can't push you away" one looks big. What other aspects should we be considering here?

#18213 The parameter WarnUnsafeSocks does not work as specified in the documentation, no warning is logged in the log file Core Tor/Tor Tor: unspecified defect Feb 2, 2016

The parameter WarnUnsafeSocks does not work as specified in the documentation, no warning is logged in the log file when a connection is done to an ip address.

If WarnUnsafeSocks 1 (default) is set there is no warning in the log file. If you look at the code for log_unsafe_socks_warning, the only case where an error is logged is when safe_socks is true. safe_socks is true only when SafeSocks parameter is set, but not when WarnUnsafeSocks is set.

The code should be

if (safe_socks || options->WarnUnsafeSocks) {

instead of

if (safe_socks) {

atagar (1 match)

Ticket Summary Component Milestone Type Created
#16348 Suppress exception chaining when PEP 3134 is merged Core Tor/Stem defect Jun 10, 2015

with tor- and stem-1.4.1 I run (rarely) into this :

cat ioerror.stderr.old
Exception in thread Event Notifier:
Traceback (most recent call last):
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 1758, in get_network_status
    desc_content = self.get_info(query, get_bytes = True)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 414, in wrapped
    raise exc
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 409, in wrapped
    return func(self, *args, **kwargs)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 1113, in get_info
    raise exc
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 1066, in get_info
    stem.response.convert('GETINFO', response)
  File "/usr/lib64/python3.3/site-packages/stem/response/__init__.py", line 135, in convert
  File "/usr/lib64/python3.3/site-packages/stem/response/getinfo.py", line 38, in _parse_message
    raise stem.InvalidArguments('552', 'GETINFO request contained unrecognized keywords: %s\n' % ', '.join(unrecognized_keywords), unrecognized_keywords)
stem.InvalidArguments: GETINFO request contained unrecognized keywords: ns/id/2BCDF9F0BCEFC2A44F7850F92362BA85AA226E1F

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib64/python3.3/threading.py", line 901, in _bootstrap_inner
  File "/usr/lib64/python3.3/threading.py", line 858, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 882, in _event_loop
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 3480, in _handle_event
  File "./err.py", line 47, in orconn_event
    relay = controller.get_network_status(fingerprint)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 414, in wrapped
    raise exc
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 409, in wrapped
    return func(self, *args, **kwargs)
  File "/usr/lib64/python3.3/site-packages/stem/control.py", line 1761, in get_network_status
    raise stem.DescriptorUnavailable("Tor was unable to provide the descriptor for '%s'" % relay)
stem.DescriptorUnavailable: Tor was unable to provide the descriptor for '2BCDF9F0BCEFC2A44F7850F92362BA85AA226E1F'

while running this script :

$ cat err.py
#!/usr/bin/python3 -u

#   Toralf Foerster
#   Hamburg
#   Germany

# collect data wrt to https://trac.torproject.org/projects/tor/ticket/13603

import time
import functools

from stem import ORStatus, ORClosureReason
from stem.control import EventType, Controller

def main():
  class Cnt(object):
    def __init__(self, done=0, closed=0, ioerror=0):
      self.done = done
      self.closed = closed
      self.ioerror = ioerror

  c = Cnt()

  with Controller.from_port(port=9051) as controller:

    orconn_listener = functools.partial(orconn_event, controller, c)
    controller.add_event_listener(orconn_listener, EventType.ORCONN)

    while True:

def orconn_event(controller, c, event):
  if event.status == ORStatus.CLOSED:
    c.closed += 1

    if event.reason == ORClosureReason.DONE:
      c.done += 1

    if event.reason == ORClosureReason.IOERROR:
      c.ioerror += 1

      fingerprint = event.endpoint_fingerprint
      print (" %i %i %i %i %s %40s" % (c.closed, c.done, c.ioerror, event.arrived_at, time.ctime(event.arrived_at), fingerprint), end='')
      relay = controller.get_network_status(fingerprint)
      if relay:
        print (" %15s %5i %s %s" % (relay.address, relay.or_port, controller.get_info("ip-to-country/%s" % relay.address, 'unknown'), relay.nickname), end='')
      print ('', flush=True)

if __name__ == '__main__':

boklm (2 matches)

Ticket Summary Component Milestone Type Created
#11508 Test that about:tor page is properly loaded Applications/Quality Assurance and Testing enhancement Apr 14, 2014

During the last beta release we realized that some translators translate "about:tor" which breaks it. We should write a test that checks this crucial page is working in built bundles.

#11509 Make sure search engine strings are not translated Applications/Quality Assurance and Testing enhancement Apr 14, 2014

Bug #11236 is caused by translated search engine strings. We should make sure those strings are not translated.

catalyst (2 matches)

Ticket Summary Component Milestone Type Created
#22619 SessionGroup = Reading config failed Core Tor/Tor Tor: unspecified defect Jun 15, 2017

If i specify SessionGroup as described in manual. tor stops with error.


SocksPort 9051 SessionGroup=1

Jun 15 16:46:24.700 [warn] Invalid SocksPort option '"SessionGroup=INT"'

Jun 15 16:46:24.700 [warn] Failed to parse/validate config: Invalid SocksPort/SocksListenAddress configuration

Jun 15 16:46:24.701 [err] Reading config failed--see warnings above.

second try

SocksPort 9051 SessionGroup=INT

Results into:

Jun 15 16:46:35.677 [warn] Invalid SocksPort option '"SessionGroup=1"'

Jun 15 16:46:35.678 [warn] Failed to parse/validate config: Invalid SocksPort/SocksListenAddress configuration

Jun 15 16:46:35.677 [warn] Invalid SocksPort option '"SessionGroup=1"'

Jun 15 16:46:35.678 [warn] Failed to parse/validate config: Invalid SocksPort/SocksListenAddress configuration

Jun 15 16:46:35.678 [err] Reading config failed--see warnings above.

#23756 tor's .gitlab-ci.yml is doing mirroring? why? Core Tor/Tor Tor: 0.3.3.x-final defect Oct 4, 2017

Currently in master we have the following stanza in our .gitlab-ci.yml (from #22891):

    - "apt-get install -y --fix-missing git openssh-client"                                                                                                                                                                       
    # Run ssh-agent (inside the build environment)                                                                                                                                                                                
    - eval $(ssh-agent -s)                                                                                                                                                                                                        
    # Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store                                                                                                                                                       
    - ssh-add <("$DEPLOY_KEY")                                                                                                                                                                                                
    # For Docker builds disable host key checking. Be aware that by adding that                                                                                                                                                   
    # you are suspectible to man-in-the-middle attacks.                                                                                                                                                                           
    # WARNING: Use this only with the Docker executor, if you use it with shell                                                                                                                                                   
    # you will overwrite your user's SSH config.                                                                                                                                                                                  
    - mkdir -p ~/.ssh                                                                                                                                                                                                             
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'                                                                                                                                  
    # In order to properly check the server's host key, assuming you created the                                                                                                                                                  
    # SSH_SERVER_HOSTKEYS variable previously, uncomment the following two lines                                                                                                                                                  
    # instead.                                                                                                                                                                                                                    
    - mkdir -p ~/.ssh                                                                                                                                                                                                             
    - '[[ -f /.dockerenv ]] && echo "$SSH_SERVER_HOSTKEYS" > ~/.ssh/known_hosts'                                                                                                                                                  
    - echo "merging from torgit"                                                                                                                                                                                                  
    - git config --global user.email "labadmin@oniongit.eu"                                                                                                                                                                       
    - git config --global user.name "gitadmin"                                                                                                                                                                                    
    - "mkdir tor"                                                                                                                                                                                                                 
    - "cd tor"                                                                                                                                                                                                                    
    - git clone --bare https://git.torproject.org/tor.git                                                                                                                                                                         
    - git push --mirror git@oniongit.eu:network/tor.git                                                                                                                                                                           

Why are we doing this? Can we put a cronjob on the oniongit.eu server instead? It's pretty weird and frankly unexpected that my personal fork of tor at https://gitlab.com/isis/tor is cloning the official tor repo and then trying to mirror it to oniongit.eu. It also has a bunch of other problems:

I was originally going to patch the ssh-add line to instead be [[ -n "${DEPLOY_KEY}" -a -r "$DEPLOY_KEY" ]] && ssh-add "$DEPLOY_KEY" <<<"" but if I fix that, then all the rest of this script would run, so I'm rather glad it's failing on a more innocuous command.

  • Even if the ssh-add line weren't broken, this whole thing fails unless it's being run from a fork on oniongit.eu.
  • Why is it disabling SSH hostkey checking?!
  • Why is it making the ~/.ssh directory twice?
  • Why is it assuming that environment variables are set? e.g. $FOO versus ${FOO} or better test -n ${FOO}
  • Why is it unconditionally setting (global!) git config options? (I assume to disable the warning that git spits out when you don't have $GIT_{AUTHOR,COMMITTER}_{NAME,EMAIL} set, but why would a CI config set them globally instead of just setting the correct environment variables?)
  • Why are the mirror URLs hardcoded?
  • Why is the git username and email hardcoded?
  • Why is any of this even running when I push to https://gitlab.com/isis/tor?
  • Why is any of this even running when I push anywhere?
  • Why is it unconditionally starting an ssh-agent?
  • Why is using the existence of a (deprecated!) /.dockerenv file to determine if we're in a docker container?
  • Why is it assuming we're in the correct docker container, when lots of things, especially lots of CI systems, use docker?

I'm sorry if this is all necessary and I'm just not understanding the setup, but it's all just extremely unexpected behaviour from what is supposed to be a CI config file. Further, it's not even doing the same testing as our .travis.yml, but I'll make another ticket for that issue.

danieleweber7624 (1 match)

Ticket Summary Component Milestone Type Created
#8915 Cannot spoof useragent and vendor Applications/Tor Browser TorBrowserBundle 2.3.x-stable defect May 20, 2013

Can add any way to chage vendor to firefox via general.useragent.vendor?

Seems this only work in firefox 3 or older

Also firefox 17 not update the pref general.useragent.override without restarting the browser, this is actually same bug for newest vesions of firefox.

dgoulet (25 matches)

Ticket Summary Component Milestone Type Created
#19926 BUG warning in connection_ap_attach_pending: waiting for rendezvous desc :* Core Tor/Tor Tor: 0.3.3.x-final defect Aug 17, 2016

connection_ap_attach_pending: Bug: 0x613000b8d680 is no longer in circuit_wait. Its current state is waiting for rendezvous desc. Why is it on pending_entry_connections? (on Tor f6c7e131a1ceb178) Yeah, why?

#23744 sched: Notification events have different meaning for each scheduler Core Tor/Tor Tor: 0.3.3.x-final defect Oct 2, 2017

As an example, KIST controls how much and when channel data is pushed on the network which means this wants to write event used by the Vanilla scheduler as "queued cell but no space on the outbuf" is not something that is coherent with KIST.

A channel is scheduled in when it has cells in the queue, then they are flushed one by one by the KIST scheduler until the kernel says "no more space". Then, that channel is put back in the channel pending list and will get handled at the next tick of KIST.

So, we really don't need KIST to be notified of this event from connection_flushed_some() which is used by Vanilla to try to flush more cells in the outbuf because the outbuf has room for it.

Where it is useful is the second callsite of that even in channel_tls_handle_state_change_on_orconn() which notifies the scheduler that it might be in need of flushing some stuff. In the case of a brand new channel just opening, its state is "IDLE" and that even will then put it in "waiting for cells" after.

That being said, what needs to happened:

  1. Make the notification event a per-scheduler thing because KIST and Vanilla have different semantic for those events really. We should of course avoid as much as we can of code duplication and thus some "generic event handler" do make sense if they share the same semantic.
  1. Add a "channel state is open" notification event instead of "wants to write" which is really only true in very specific cases in channel_tls_handle_state_change_on_orconn(). That way, the scheduler can take a decision on the status of the channel instead of blind guessing it is waiting for cells.
  1. Nullify the "wants to write" event for KIST considering (2) so it stops possibly scheduling channels that do not need at all to be scheduled.

#22893 prop224: Make intro point per-service and not per-descriptor Core Tor/Tor Tor: 0.3.3.x-final enhancement Jul 12, 2017

With the service branch in #20657, the current code design has intro points (IPs) per-descriptor meaning intro point objects are indexed inside a descriptor object.

We want to change that to a per-service design for which there is a set of intro points picked by the service which are then assigned to descriptor(s).

The reason to do such a thing is so we expose less IPs overtime thus minimizing the service exposure. Currently, because IPS are per-descriptor, once the descriptor rotates we also rotate IPs which bounds IPs' lifetime to the descriptor lifetime but this is not always true (and should not).

With a per-service design, IPs can live on between descriptors because they rotate at a different rate than the IPs and thus honoring its lifetime.

#3733 Tor should abandon rendezvous circuits that cause a client request to time out Core Tor/Tor Tor: 0.3.3.x-final defect Aug 14, 2011
Aug 14 05:59:04.639 [Notice] Rend stream is 120 seconds late. Giving up on address '[scrubbed].onion'.
Aug 14 05:59:09.631 [Notice] Rend stream is 120 seconds late. Giving up on address '[scrubbed].onion'.
Aug 14 06:04:08.637 [Notice] Rend stream is 120 seconds late. Giving up on address '[scrubbed].onion'.
Aug 14 06:04:10.634 [Notice] Rend stream is 120 seconds late. Giving up on address '[scrubbed].onion'.
Aug 14 06:04:30.680 [Notice] Rend stream is 120 seconds late. Giving up on address '[scrubbed].onion'.

All of these streams had been attached to the same rendezvous circuit.

#14322 torsocks fails to wrap setcap binaries Core Tor/Torsocks defect Jan 22, 2015

the Linux 'capabilities' library for allowing non-root users to perform tasks which normally require elevated privileges.

at present the torsocks wrappers have checked for setuid and setgid flags on the binaries it executes and failed closed, throwing an error if this occurs, however there is currently no check to see if the binaries have capabilities applied.

in the case where they do, the LD_PRELOAD set by torsocks is stripped and the program will execute with no warning and without the torsocks wrapper.

as an example of this, the current 'ping' command on my Linux is setcap:

$ getcap which ping /usr/bin/ping = cap_net_raw+ep $ torsocks ping -c 1 torproject.org PING torproject.org ( 56(84) bytes of data. 64 bytes from icmp_seq=1 ttl=50 time=38.1 ms

the install script which does setcap
setuid here:


#16934 youtube-dl (recent), torsocks 2.1.0 and TBB5+ failure Core Tor/Torsocks defect Aug 31, 2015

ERROR torsocks[29369]: [socks5] Resolve destination buffer too small (in socks5_recv_resolve_reply() at socks5.c:690) ERROR: Unable to download webpage: <urlopen error [Errno -4] Non-recoverable failure in name resolution> (caused by URLError(gaierror(-4, 'Non-recoverable failure in name resolution'),))

The error changes over time. But it is mostly in this range. With a fresh restart the problem goes away, but it is back after some time blocking all requests.

Stopping any TBB5 running and starting TBB4.5.3 makes everything go smooth again.

Besides TBB, nothing changes in the configuration.

#21084 sometimes we call circuit has_opened() more than 2 times on client side Core Tor/Tor Tor: unspecified defect Dec 26, 2016

We have a branch bug15618_030-testing at https://gitweb.torproject.org/user/dgoulet/tor.git that logs a warning when we call more than 2 times circuit has_opened() on a circuit. The patch was made to confirm the theory on #15618 related to a warning we see on relays. While until now I never saw the warning on relay side, I see it quite often on client side.

Based on the log messages, I think this is related to introduction point circuits and not rendezvous circuits as we thought. Basically it happens when we open a 4 hop circuit with last hop X, and immediately we extend that circuit to a 5 hop one with last hop Y, where Y is (I think) the introduction point. I got the warning 2 times in a row and the similarity between them is that they are 5 hop circuits with the last two hops 4 and 5 the same, but different hops 2 and 3.

Dec 25 13:15:15.000 [info] internal circ (length 5, last hop $D7316BF7FD633DD7474B18C33E1D5FDEB04D26A7): $A7C411B809D0AA98C4264917BB701ABF17B2181E(open) $B5212DB685A2A0FCFBAE425738E478D12361710D(open) $123F403DA94A74F959B7FE0E5B27FA57EFA12925(open) $1F4105C688E835A56AF3D66C787677B57240FFA2(open) $D7316BF7FD633DD7474B18C33E1D5FDEB04D26A7(open)
Dec 25 13:15:15.000 [info] entry_guards_note_guard_success(): Recorded success for primary confirmed guard sakujakira ($A7C411B809D0AA98C4264917BB701ABF17B2181E)
Dec 25 13:15:15.000 [info] circuit_send_next_onion_skin(): circuit built!
Dec 25 13:15:15.000 [warn] BLAM. Circuit has_opened() called 3 times.
Dec 25 13:15:15.000 [info] rend_client_introcirc_has_opened(): introcirc is open
Dec 25 13:15:15.000 [info] connection_ap_handshake_attach_circuit(): pending-join circ 3419634369 already here, with intro ack. Stalling. (stream 26 sec old)
Dec 25 13:15:15.000 [info] connection_ap_handshake_attach_circuit(): ready rend circ 2404371907 already here (no intro-ack yet on intro 2259155742). (stream 26 sec old)
Dec 25 13:15:15.000 [info] connection_ap_handshake_attach_circuit(): found open intro circ 2259155742 (rend 2404371907); sending introduction. (stream 26 sec old)
Dec 25 13:15:15.000 [info] rend_client_send_introduction(): Sending an INTRODUCE1 cell
Dec 25 13:15:15.000 [info] pathbias_count_use_attempt(): Used circuit 53293 is already in path state use succeeded. Circuit is a Hidden service client: Pending rendezvous point currently open.
Dec 25 13:15:16.000 [info] internal circ (length 5, last hop $D7316BF7FD633DD7474B18C33E1D5FDEB04D26A7): $A7C411B809D0AA98C4264917BB701ABF17B2181E(open) $5C01D5518D1F5A071C6F07D1F4630F577AB5B60A(open) $DA9DA02A7B0565DF5F3E961CA911E750072DCBBD(open) $1F4105C688E835A56AF3D66C787677B57240FFA2(open) $D7316BF7FD633DD7474B18C33E1D5FDEB04D26A7(open)
Dec 25 13:15:16.000 [info] entry_guards_note_guard_success(): Recorded success for primary confirmed guard sakujakira ($A7C411B809D0AA98C4264917BB701ABF17B2181E)
Dec 25 13:15:16.000 [info] circuit_send_next_onion_skin(): circuit built!
Dec 25 13:15:16.000 [warn] BLAM. Circuit has_opened() called 3 times.
Dec 25 13:15:16.000 [info] rend_client_introcirc_has_opened(): introcirc is open
Dec 25 13:15:16.000 [info] connection_ap_handshake_attach_circuit(): pending-join circ 3419634369 already here, with intro ack. Stalling. (stream 26 sec old)
Dec 25 13:15:16.000 [info] connection_ap_handshake_attach_circuit(): Intro circ 2259155742 present and awaiting ack (rend 2404371907). Stalling. (stream 26 sec old)
Dec 25 13:15:16.000 [info] connection_ap_handshake_attach_circuit(): Intro circ 3200472182 present and awaiting ack (rend 4286776399). Stalling. (stream 26 sec old)
Dec 25 13:15:16.000 [info] connection_ap_handshake_attach_circuit(): ready rend circ 2334828448 already here (no intro-ack yet on intro 4002828471). (stream 27 sec old)
Dec 25 13:15:16.000 [info] connection_ap_handshake_attach_circuit(): found open intro circ 4002828471 (rend 2334828448); sending introduction. (stream 27 sec old)
Dec 25 13:15:16.000 [info] rend_client_send_introduction(): Sending an INTRODUCE1 cell
Dec 25 13:15:16.000 [info] pathbias_count_use_attempt(): Used circuit 53301 is already in path state use succeeded. Circuit is a Hidden service client: Pending rendezvous point currently open.

#22068 Make it explicit that Torsocks won't work correctly in certain scenarios in the README Core Tor/Torsocks defect Apr 26, 2017

As far as I understand, Torsocks works by setting LD_PRELOAD, so an application that doesn't uses libc, and instead uses syscalls directly will be able to bypass torsocks and connect directly to the Internet.

I think a warning about it on the README file, and MAN page is needed, besides making it explicit that using Torsocks is not 100% safe as the README might make you think, for example:

Torsocks allows you to use most applications in a safe way with Tor. It ensures that DNS requests are handled safely and explicitly rejects any traffic other than TCP from the application you're using. Torsocks is an ELF shared library that is loaded before all others. The library overrides every needed Internet communication libc function calls such as connect(2) or gethostbyname(3). This process is transparent to the user and if torsocks detects any communication that can't go through the Tor network such as UDP traffic, for instance, the connection is denied. If, for any reason, there is no way for torsocks to provide the Tor anonymity guarantee to your application, torsocks will force the application to quit and stop everything.

#23108 prop224: Don't rotate all service descriptors at once Core Tor/Tor Tor: 0.3.3.x-final defect Aug 4, 2017

In rotate_all_descriptors() there is the following XXX that needs to be resolved:

  /* XXX We rotate all our service descriptors at once. In the future it might
   *     be wise, to rotate service descriptors independently to hide that all
   *     those descriptors are on the same tor instance */

#23507 Add single onion unreachable address algorithm to prop224 Core Tor/Tor Tor: 0.3.3.x-final defect Sep 13, 2017

Here is how we make IPv6 (and other unreachable addresses) work with single-hop client and service connections to intro and rend points. It works for v2 single onion services. We talked about it for v3, but it never made it into the prop224 spec.

Here are the steps:

  1. The service chooses and connects to the intro point (possibly using a 3-hop path if it is a single onion service and can't reach it directly)
  2. The service always puts IPv4 and IPv6 in its descriptor link specifiers (if they are available in directory documents)
  3. If the link specifier has a reachable address, and the service is not a single onion service, a Tor2web client (currently v2 only) can use it to make a direct connection to the intro point
  4. Otherwise, the client connects over a 3-hop path via one of its reachable entry nodes

The process for client rendezvous is similar, but if the client knows that the service is a single onion service, it *must* connect to the rend point using a 3-hop path. (Again, this only matters for Tor2web, which is v2 only).

#23711 sched: KIST writes to kernel and get a "wants to write" notification right after Core Tor/Tor Tor: 0.3.3.x-final defect Sep 29, 2017

KIST scheduler does call a write to kernel contrary to the vanilla scheduler. This is done through channel_write_to_kernel() which calls connection_handle_write().

That last function will ultimately call connection_or_flushed_some() which triggers a scheduler_channel_wants_writes() because of this condition:

  datalen = connection_get_outbuf_len(TO_CONN(conn));
  if (datalen < OR_CONN_LOWWATER) {

That is OK if datalen > 0 but useless if datalen == 0. For KIST, it makes the channel go back in pending state and scheduled because it wants to write. But then if the outbuf or the cmux queue is empty, we end up scheduling a channel that actually does NOT need to write at all.

Could be the fix here is probably simple as:

  if (datalen > 0 && datalen < OR_CONN_LOWWATER) {

I suspect with KIST, the datalen will always be 0 because KIST in theory controls exactly what goes in the outbuf and what can be written to the kernel so when it triggers a connection write(), the entire outbuf should be drained (in theory). So the effect of this is that every write to the kernel from KIST triggers a useless "wants to write" event rescheduling the channel. Note that this only happens if the channel is in SCHED_CHAN_WAITING_TO_WRITE state.

#23712 sched: DESTROY cell on a circuit bypasses the scheduler Core Tor/Tor Tor: 0.3.4.x-final defect Sep 29, 2017

If you look at circuitmux_append_destroy_cell(), it is the one appending a DESTROY cell to the cmux queue and then calls channel_flush_from_first_active_circuit() if no writes are pending that is if the outbuf is empty (also looks at the out queue but that is always empty #23709).

In the case the flush is triggered, the cell is immediately put in the outbuf and written to kernel by libevent which completely bypasses the scheduler. Maybe it is what we want that is go as fast as we can in destroying a circuit? Don't know but it has this effect on the scheduler where the channel is scheduled with a "wants_to_write" event from the connection subsystem and ultimately the channel gets scheduled with nothing in the queue because it is already on the outbuf. For KIST, this is not ideal because KIST should control the flow of data to the kernel.

It seems there are two places we queue cells into a cmux queue: circuitmux_append_destroy_cell() and append_cell_to_circuit_queue(). The latter triggers a "has waiting cells" for the scheduler which is what we want but the former just bypasses it.

I think it should simply trigger that notify to the scheduler instead of flushing it by itself.

#24008 service_intro_point_new() should return NULL when passed a NULL extend_info Core Tor/Tor Tor: 0.3.3.x-final defect Oct 26, 2017

We pass a NULL extend_info to service_intro_point_new() in the unit tests, and expect a non-NULL return value.

But buggy code could also pass NULL here, and we should return NULL if that happens.

One way to fix this is to split the function into two, and only call the first half in the unit tests.

#24181 Put IPv6 and unrecognised link specifiers in onion service EXTEND cells Core Tor/Tor Tor: 0.3.3.x-final defect Nov 8, 2017

Prop224 says:

The hidden service SHOULD NOT reject any LSTYPE fields which it
doesn't recognize; instead, it should use them verbatim in its EXTEND
request to the rendezvous point.


We should either remove this from the spec, or we should:

  • add a similar sentence for client descriptor lspecs
  • put unrecognised lspecs in descriptors in client intro EXTEND requests
  • put unrecognised lspecs in INTRODUCE cells in service rend EXTEND requests

#24469 Cannibalizing a circuit should check that first hop is in our guard state Core Tor/Tor Tor: 0.3.3.x-final defect Nov 29, 2017

I noticed this on my v3 hidden service info logs which happened on Nov 22nd:

Nov 22 20:04:24.000 [info] internal (high-uptime) circ (length 4, last hop ThomasBernhardsHose): $175921396C7C426309AB03775A9930B6F611F794(open) $77159B89F39708B27CAC528FF32DD786569A11A5(open) $EE2D39A31F09EDD15B887B6EE7AB1396E52C3730(open) $A40E1C039224FA8072C7C84F729236FD738C69DA(open)
Nov 22 20:04:24.000 [info] connection_edge_process_relay_cell(): circuit_send_next_onion_skin() failed.
Nov 22 20:04:24.000 [warn] connection_edge_process_relay_cell (at origin) failed.
Nov 22 20:04:24.000 [warn] circuit_receive_relay_cell (backward) failed. Closing.

So that circuit above has a Guard (175921396C7C426309AB03775A9930B6F611F794) that was removed a minute or so before:

Nov 22 20:03:39.000 [info] sampled_guards_update_from_consensus(): Removing sampled guard lovejoy ($175921396C7C426309AB03775A9930B6F611F794): it was sampled over 120 days ago, and confirmed over 60 days ago.

Turns out that the circuit was cannibalized but tor made it failed because I assume our guard state wasn't available for that circuit which ultimately triggered those warnings. asn informed me that it is important that the circuit with old guard(s) stay alive for a while to help mitigate Guard discovery attacks.

Bottom line, I think our cannibalized function should exclude any circuit that doesn't match our guard state. In the meantime, those warnings will appear in the logs.

#11579 Torsocks should support Java Core Tor/Torsocks enhancement Apr 21, 2014

Right now Java programs run with torsocks have their network calls dropped, or sometimes crash. Torsocks should force Java programs to use Tor. This could be done by setting the proxy settings in the JVM with -DsockProxyHost= -DsocksProxyPort=8080. To ensure proxy obedience for DNS calls, torsocks might implement a DNS provider that uses SOCKS for resolution, add that to the classpath, and use it to override the DNS provider the JVM uses at runtime.

#11724 Check recvmmsg() FD passing on Unix socket for TCP socket Core Tor/Torsocks enhancement May 4, 2014

recvmsg() is supported as of now. A full exit should be done here because Torsocks can't handle this inet socket with Tor.

#11727 Support shared onion pool for DNS resolution in separate process Core Tor/Torsocks enhancement May 4, 2014

So it turns out that in irssi is doing DNS resolution in an other process and passing the result back to the first process which will make the connection.

This means that the two process have two distinct onion pools so the process doing the DNS resolution will store the onion address with the reserved cookie but the other process, when connecting using that cookie, will be unable to find the onion address in its pool.

One solution I have in mind is to create that onion pool in a shared memory (SHM) and hijack the clone/fork symbol so when we detect a new process we can set the onion pool reference in it thus sharing the pool across processes that have a common parent.

I have a PoC that works but maybe there could be an IPC approach instead.

#13184 Add an option to whitelist networks Core Tor/Torsocks enhancement Sep 17, 2014

This warning is possible for anything socket trying to connect to a localhost address.

WARNING torsocks[12360]: [connect] Connection to a local address are denied since it might be a TCP DNS query to a local DNS server. Rejecting it for safety reasons. (in tsocks_connect() at connect.c:177)

We should implement a whitelist mechanism so the user can tell which local network is allowed such as localhost.

#15621 Kill the pre-version 3 intro protocol code with fire. Core Tor/Tor Tor: unspecified enhancement Apr 7, 2015

We still have code for dealing with version 0, 1, and 2 of the HS intro protocol.

From rend-spec.txt:

As of Tor and, clients switched to using the v2 intro format.

From the release notes:

Bugfix on, when the v3 intro-point protocol (the first one which sent a timestamp field in the INTRODUCE2 cell) was introduced;

Anything that generates INTRODUCE cells with these versions are long dead, so the code for handling this protocol version should be removed.

#19407 Support FD passing on Unix socket Core Tor/Torsocks enhancement Jun 13, 2016

Multiple issues need FD passing through a Unix socket to work: #8585, #16183

It's maybe possible to support this safely. My intuition is that we might be able to get it work by passing some cookies in the ancillary data so we can recognize the sendmsg() with the recvmsg(). Maybe!?...

#23579 sched: Add accessors for channel_pending list Core Tor/Tor Tor: 0.3.3.x-final enhancement Sep 19, 2017

Let's make this list private and have accessors.

#24193 Make v3 single onion services parse and use IPv6 introduce link specifiers Core Tor/Tor Tor: 0.3.3.x-final enhancement Nov 9, 2017

Once #23577 is merged, we can make single onion services parse IPv6 addresses in introduce link specifiers. Then they can choose the address they want to use to connect to the rend point using their firewall settings.

#24451 Put IPv6 link specifiers in client EXTEND cells Core Tor/Tor Tor: 0.3.3.x-final enhancement Nov 28, 2017

Clients should put IPv6 link specifiers in the EXTEND cells to relays they choose from directory documents.

We need to do this in the same releases as #24181, to avoid adding an v3 onion service distinguisher.

#19793 Torsocks - only torify .onion domains Core Tor/Torsocks enhancement Jul 31, 2016

What torsocks does: Routes all traffic through Tor.

What it should do: It shoud have an option to route .onion domains through Tor, while normal traffic is not routed through Tor.

Advantages This would allow Mail/XMPP servers to connect to .onion domains, without any configuration hassle.

Original discussion http://tor-talk.torproject.narkive.com/j7MtPG5T/torsocks-usewithtor-only-for-onion

feynman (1 match)

Ticket Summary Component Milestone Type Created
#9022 Create an XMPP pluggable transport Obfuscation/Pluggable transport task Jun 5, 2013

We should look into XMPP pluggable transports. There are many public XMPP services that see widespread use even from censored countries.

hellais (1 match)

Ticket Summary Component Milestone Type Created
#12823 Design and implement new deck format Archived/Ooni enhancement Aug 7, 2014

The current test deck format has some limitations.

These are namely:

1) There is no way of making an input be part of the test deck itself

2) The format is too verbose and contains redundant information (all of the ooniprobe command line options need to be explicitly specified)

For this reason I think we should have a new format that makes it possible to include inputs as part of the test deck. The test deck should therefore be a compressed container (tar and gzip seem to be good candidates as they are well supported in python).

It should then be possible to reference input files that are part of the test deck itself.

hiro (6 matches)

Ticket Summary Component Milestone Type Created
#22530 Tor Browser 7.0 can't post on https://blog.torproject.org unless security slider is lowered Webpages/Blog defect Jun 8, 2017

For several years everyone was able to post on https://blog.torproject.org without enabling JavaScript and other dangerous things.

Observed behaviour: can not post unless slider set to medium or low Expected behaviour: high security supported Steps to reproduce: try to post at https://blog.torproject.org with security slider on high

#22637 Find a more maintainable approach for the signing-keys page Webpages/Website defect Jun 16, 2017

Right now we have this page: https://www.torproject.org/docs/signing-keys which is supposed to provide an official set of keys that have signed various Tor packages in the past.

We pointed to it from https://www.torproject.org/docs/verifying-signatures among other places.

But people keep generating new subkeys, so the text on that page goes out of date after a month or so.

We should come up with a better way to distribute these keys, in a way that provides good enough authenticity while being easy to automate.

Maybe that's a script that gets run every so often to generate the page automatically? Maybe that's creating a gpg keyring with the right keys on it, and getting rid of the webpage?

We can think of this as part of the grand website redo, but also we can think of it as a bitesized improvement that needs to be made and can be independent of the grand website redo.

#23574 Don't allow text injection in our 404 page Internal Services/Tor Sysadmin Team defect Sep 19, 2017

We got a report on HackerOne by sumitthehacker:

i want to report a text injection and a misconfiguration of the 404 page

the bug exists at :


as you can see attacker text is included
"It has been changed by a new one https://www.attacker.com so go to the new one since this one was not found on this server."

#22487 Add https version of `deb.torproject.org` repository install instructions Webpages/Website enhancement Jun 4, 2017

Add https version of deb.torproject.org repository in the install section of Tor on Ubuntu or Debian.

Using the HTTPS transport for APT (package manager) will overcome censorship/blocking from DPIs and filtering equipment that block on the HTTP protocol.

#22842 Create a knowledge base that's more in-depth than FAQs Webpages/Website WebsiteV3 task Jul 6, 2017

It would be useful for visitors to our web pages to have access to content that:

  • goes into more depth than a FAQ entry
  • is more formal than a blog post
  • is less comprehensive than a reference manual section
  • is more stable than a wiki page

These pages would form sort of a knowledge base or resource section.

#23809 Add instructions for running a relay on a Raspberry Pi Webpages/Website task Oct 10, 2017

I know this is basically just Debian instructions, but framing this differently could really help for those that don't already know that Raspbian is essentially just Debian underneath.

This could be deferred until after the big website changes.

irl (10 matches)

Ticket Summary Component Milestone Type Created
#23169 Explain why metrics are important and what we do to make sure they're safe Metrics/Website defect Aug 10, 2017

In trying to answer the comments on https://blog.torproject.org/blog/we-enhanced-security-and-integrity-tor-metrics-supported-moss, I realized that our metrics site is just a bunch of graphs and stuff, with no easy-to-find explanation of *why* we collect stuff, what our goals are and why collecting these things will get us there, what our constraints are (e.g. which things we won't ever do even if they would also help us achieve our goals), etc.

I see a little sentence under 'Philosophy' on the about page. That's a nice start.

But explaining why metrics are worthwhile, when we're a privacy project, seems like something we should address directly rather than leave implicit.

It might be that some of the safety board principles could be useful to articulate here: https://research.torproject.org/safetyboard.html#guidelines

#24078 metrics-bot should have a better error message when a country has no relays Metrics/Bot defect Oct 30, 2017

See also: AS? Maybe. 23650 has no relays (allegedly in China, according to the first google result).

Anyway. I think there should be a different error message for (i) you asked me a question I don't understand, and (ii) I understand the question but have no results.

#24080 Make metrics-bot comply with Metrics' project guidelines and java style rules Metrics/Bot defect Oct 30, 2017

metrics-bot doesn't comply yet to Metrics' project guidelines and java style rules (like using metrics-base etc.). This has been mostly due to metrics-bot being an exercise in irl relearning Java, but should be fixed now.

#24507 Allow for aggregation property to be selected from list Metrics/Atlas defect Dec 3, 2017

Currently it is not possible, without direct entry of the URL, to access an aggregation of the entire network by country code *and* AS.

The following changes will fix this:

  • Allow for empty queries to be interpreted as an aggregation of the entire network
  • Add an aggregation property drop down to the advanced search form
  • Add an aggregation property drop down to the aggregated search form

#23518 Turn Atlas into page on Tor Metrics Metrics/Atlas enhancement Sep 14, 2017

We briefly discussed this before, but I didn't find a ticket for it, so I made this one.

Let's consider turning Atlas into a page on Tor Metrics. It could live under "Home >> Services >> Atlas".

From a technical perspective I think we could add Atlas as Git submodule and copy its index.html into a JSP, so that we can include the Tor Metrics banner and footer. And we'd copy over all required JS files.

It would certainly help to get rid of Atlas' navbar and footer and make sure that it works well with Metrics' style file.

#23941 Determine if a relay is eligible for a t-shirt and display on details page Metrics/Atlas enhancement Oct 22, 2017

A script was written for #9889 to determine if a relay is eligible for a t-shirt or not.

We've talked about having this in Atlas and having seen another mail on tor-relays today asking about eligibility, I think it's a useful feature to have.

Input from the t-shirts team would be appreciated to make sure we have the criteria correct, and to know where to send those that are eligible. Ideally we could link to a web page that explains any caveats to the process (e.g. you can't get 500 t-shirts for 500 relays) and how to apply for your t-shirt.

#24067 Document the XML configuration Metrics/Bot enhancement Oct 30, 2017

Currently the XML configuration is not documented, and the only example contains all the credentials and is only on my workstation.

The format for the configuration should be documented to allow for others to set up a test instance of metrics-bot.

#24068 Document the factoids XML format Metrics/Bot enhancement Oct 30, 2017

An example is included in the JavaDoc, but the format should be explicitly documented. It may also be good to add a link for submitting new factoids via Trac.

#24388 Add unreachable or addresses to details view and a synthetic flag Metrics/Atlas enhancement Nov 22, 2017

This originally came up in #10401 for IPv6, but as it's possible that IPv4 ports may also be unreachable, this should be addressed seperately.

#8667 Distinguish between permanent and temporary Onionoo errors Metrics/Atlas enhancement Apr 9, 2013

As of now, Onionoo has a "maintenance mode" that I'm planning to use very rarely. But sometimes it's necessary to shut down Onionoo to support new features or fix bugs. During this time, Onionoo responds to all requests with a 503 Service Unavailable status code. Atlas should respect this code and display a different warning than:

"Backend error! The backend server replied with an error to your query. This probably means that you did not properly format your query. If your query was properly formatted it may mean that there is an issue with your browser/add-ons. Please report which browser/addons/etc. you're using to the bug tracker."

How about this warning?

"Backend temporarily unavailable! The backend server is temporarily unavailable. If this issue persists for more than a few hours, please report it using the <a href="https://trac.torproject.org/projects/tor/newticket?component=Atlas">bug tracker</a>."

isis (5 matches)

Ticket Summary Component Milestone Type Created
#24432 The meek<->moat tunneling isn't set up correctly Obfuscation/BridgeDB defect Nov 27, 2017

The apache config has:

ProxyPass /meek/ ProxyPass /moat/ ProxyPass / retry=10 ProxyPassReverse /

(BridgeDB's HTTPS distributor is a Python process listening on port 3880, and the moat distributor is listening on 3881.) The moat-server is run with the following:

∃!isisⒶwintermute:(master $>)~/code/torproject/bridgedb-admin ∴ cat bin/run-meek #!/usr/bin/env bash


/srv/bridges.torproject.org/bin/meek-server --disable-tls & disown

The moat distributor has two pages, /moat/fetch and /moat/check. In my Tor Browser, if I go to https://4-dot-tor-bridges-hyphae-channel.appspot.com/meek/moat/fetch I get a "301 Permanent Redirect" from the Apache server telling me to go to https://bridges.torproject.org/meek/meek/moat/fetch. Probably I've just configured all the URIs wrong?

#12802 BridgeDB needs Nagios checks for the Email Distributor Obfuscation/BridgeDB enhancement Aug 6, 2014

BridgeDB needs Nagios checks that the Email Distributor is working. The best way to do this would be to send an email to bridges@… which say "get help".

#16564 Add a line to bridge descriptors specifying they're bridges? Core Tor/Tor Tor: unspecified enhancement Jul 12, 2015

Right now if my bridge descriptor gets uploaded to the directory authorities, poof I'm now a public relay, even if I didn't mean to be.

That's not the end of the world, since I am technically offering to be a relay already, and the only difference is that I didn't opt to publish my descriptor myself.

But still it seems like we should make the choice explicit inside the descriptor.

#22948 Padding, Keepalive and Drop cells should have random payloads Core Tor/Tor Tor: 0.3.3.x-final defect Jul 16, 2017

tor-spec says:

   Link padding can be created by sending PADDING or VPADDING cells
   along the connection; relay cells of type "DROP" can be used for
   long-range padding.  The contents of a PADDING, VPADDING, or DROP
   cell SHOULD be chosen randomly, and MUST be ignored.


But padding cells sent by channelpadding_send_padding_cell_for_callback() and keepalive cells sent by run_connection_housekeeping() have a payload of all zero bytes.

I don't know if this is a security issue or not. It is probably ok, unless Tor has compression enabled on its TLS connections. If compression is enabled, all the padding data size calculations will be wrong.

#22776 Implement the remaining cryptographic protocols for Hyphae Obfuscation/BridgeDB enhancement Jun 30, 2017

We'll need:

1) Back-Maxwell Rangeproofs (requires Borromean Ring Signatures) 2) A ZKP compiler 3) Testvectors for Ristretto (a.k.a. Decaf for curve25519)

iwakeh (17 matches)

Ticket Summary Component Milestone Type Created
#20287 Perform another review of CollecTor's file protocol and fix any remaining differences to the code Metrics/Website defect Oct 4, 2016

It seems that section 4.3.3 of the protocol doesn't coincide with CollecTor's code.

The section reads:

   'votes' contains files named

   year DASH month DASH day DASH hour DASH minute DASH second
   DASH VOTE DASH fingerprint DASH digest

   Where VOTE is the string "vote" and all time related
   values are derived from the valid-after dates. 'fingerprint'
   is the fingerprint of the authority and 'digest' is the SHA1
   digest of the authority's medium term signing key.

But the code for creating the digest calculates a digest for the descriptor bytes from the start of the vote to the 'directory-signature ' (incl.). (cf. here).

            String ascii = new String(data, "US-ASCII");
            String startToken = "network-status-version ";
            String sigToken = "directory-signature ";
            int start = ascii.indexOf(startToken);
            int sig = ascii.indexOf(sigToken);
            if (start >= 0 && sig >= 0 && sig > start) {
              sig += sigToken.length();
              byte[] forDigest = new byte[sig - start];
              System.arraycopy(data, start, forDigest, 0, sig - start);
              String digest = DigestUtils.shaHex(forDigest).toUpperCase();
              if (this.aw != null) {
                this.aw.storeVote(data, validAfter, dirSource, digest,

Which is correct?

#24290 Use timeout for fetching remote index.json in DescriptorIndexCollector Metrics/Library defect Nov 15, 2017

Tonight the relaydescs module of the main CollecTor instance froze when attempting to fetch the remote index.json from the backup CollecTor instance. Here's a stack trace I got from jcmd:

"CollecTor-Scheduled-Thread-10" #38 daemon prio=5 os_prio=0 tid=0x00007fb7ac009800 nid=0xea7 runnable [0x00007fb7e5893000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
        at java.net.SocketInputStream.read(SocketInputStream.java:171)
        at java.net.SocketInputStream.read(SocketInputStream.java:141)
        at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
        at sun.security.ssl.InputRecord.read(InputRecord.java:503)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
        - locked <0x000000008061f060> (a java.lang.Object)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1385)
        - locked <0x000000008061f188> (a java.lang.Object)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1413)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1397)
        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1564)
        - locked <0x000000008061f1f8> (a sun.net.www.protocol.https.DelegateHttpsURLConnection)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492)
        - locked <0x000000008061f1f8> (a sun.net.www.protocol.https.DelegateHttpsURLConnection)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:263)
        - locked <0x000000008061f2e0> (a sun.net.www.protocol.https.HttpsURLConnectionImpl)
        at java.net.URL.openStream(URL.java:1045)
        at org.torproject.descriptor.index.IndexNode.fetchIndex(IndexNode.java:101)
        at org.torproject.descriptor.index.DescriptorIndexCollector.collectDescriptors(DescriptorIndexCollector.java:74)
        at org.torproject.collector.sync.SyncManager.collectFromOtherInstances(SyncManager.java:59)
        at org.torproject.collector.sync.SyncManager.merge(SyncManager.java:43)
        at org.torproject.collector.cron.CollecTorMain.run(CollecTorMain.java:76)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

I didn't look at the code in detail, but I could imagine that a timeout would have helped in this case. Maybe there are other possible fixes, though.

#20395 Add capability to handle large descriptor files Metrics/Library defect Oct 18, 2016

Discovered OOM problem for large descriptor files in #20335, see comment 12 there for how to reproduce.

#18798 Analyze descriptor completeness Metrics/CollecTor enhancement Apr 12, 2016

I started a wiki page here.

#19169 Verify, correct, and extend runtime statistics Metrics/CollecTor enhancement May 25, 2016

see Analysis Part 2 for background information.

  • verify current stats
  • avoid ambiguous log statements
  • maybe, separate stats for download and import
  • ...

#19754 Restructure metrics-web backend Metrics/Statistics enhancement Jul 26, 2016

Restructure Java, R, SQL components and further improve guide compliance. (cf. Metrics-web development doc)

#20489 Add various tests for recently fixed issues Metrics/CollecTor enhancement Oct 28, 2016

For all issues fixed during system test of the sync-release (#18910):

  • verify that there are tests checking the fixed functionality (where it makes sense)
  • add tests to catch similar issues with junit test instead of system testing (where feasible)

At least for comments 82, 95, 98 in #18910.

#21219 Remove old descriptor files from out/ after archiving Metrics/CollecTor enhancement Jan 13, 2017

Unless I'm mistaken (or misconfigured) -- which is entirely possible -- collector will accumulate uncompressed data in out/ indefinitely, long after it's been archived in archive/ and will no longer be modified.

This takes up a lot of disk space and it'd be nice to

a) get confirmation I can remove data from out/ than is older than N months (2? 3?) b) have it deleted automagically (or at least with a config setting)

#23046 Add sub-interface LogDescriptor.LogLine (and the extension to WebServerAccessLogLine) Metrics/Library metrics-lib 2.2.0 enhancement Jul 27, 2017

Add sub-interface LogDescriptor.LogLine (and the extension to WebServerAccessLogLine), the first interface will simply provide one method that returns a line from the log.

LogDescriptor will need to be extended to provide all LogLines, which includes sub-interface specific parsing and retrieving the unrecognized lines up to a limit (100 for a start).

Sub-interface WebServerAccessLogLine, which extends LogLine, is more specific for access-logs and provides methods for all fields that contain useful data after the sanitation process, i.e., it doesn't provide all Apache log fields. (cf. discussion in #22983)

#23348 Update all documentation markdown files Metrics/Onionoo Onionoo-2.0.0 enhancement Aug 28, 2017

Mostly, remove outdated info and provide appropriate links to Metrics development and contribution wiki pages.

#24028 Provide a modernized API for metrics-lib Metrics/Library enhancement Oct 27, 2017

In order to provide a more modern API in metrics-lib the interface hierarchy needs to be renewed/restructured/changed in backwards compatible ways.

A separate discussion led to the following results:

  • The new interfaces will be placed in new packages, which allows for keeping good names and improving other w/o disturbing the existing classes. Suggested packages:
    • org.torproject.metrics.descriptor
    • org.torproject.metrics.descriptor.impl
    • org.torproject.metrics.index
    • org.torproject.metrics.internal
  • Besides improving the general structure consider different return types for all time related values and use java.util.Optional for all optional values and other java 8 features (as mentioned in summary ticket #23752).

Possible next steps:

  • Use a small, i.e., limited to few classes/interfaces, prototype example for finding the right approach to make these two interface hierarchies live beside each other and minimize additional implementation.
  • Use the working prototype approach to try new naming rules for methods.
  • Extend the found solution to the entire public API.
  • Choose first code base to use the new interface hierarchy.
  • Possibly improve new interface hierarchy.
  • Use new interfaces in all Metrics products.

The other ticket related to an improved metrics-lib API is obsolete with this new approach; for reference and as improvement-idea resource: #19640. There is a pending new interfaces, which should be only implemented with the new hierarchy (if demand permits): #17861. The work-in-progress interfaces (and implementations) for webstats could be moved into the new hierarchy already, but could also be easily moved later.

#24222 Improve onionoo's war structure and startup Metrics/Onionoo Onionoo-2.0.0 enhancement Nov 10, 2017

This task should streamline the jetty start-up and war structure with Exonerator's and metrics-web's embedded Jetty settings, e.g., provide a configurable onionoo.jetty.port etc.

#24229 Provide BGP Data Collection on Tor Metrics Metrics/Website enhancement Nov 10, 2017

Yixin's data description:


  • Data (06/2016 - 08/2017): We put each month's BGP updates into a single txt file, compressed with xz -9e into [year]-[month]-updates.txt.xz. These are the files under all-updates/. The all-updates.tar is basically a tarball of the all-updates/ directory.
  • Software (detection.py): This is our script to analyze the data (also linked in the html page).


Next steps (semi-random order):

  • find a place for the data, i.e., a path on CollecTor
  • determine a data update process
  • integrate html description into Metrics' site

#24294 Rename metrics-web packages Metrics/Website enhancement Nov 15, 2017

This ticket is based on a discussion on #24036:

  • Rename root package org.torproject.metrics to org.torproject.metrics.stats to make it part of the Tor Metrics name space.
  • ernie.cron becomes org.torproject.metrics.stats.servers to get rid of the legacy name and to reflect that it's all about servers and bandwidth (provided by servers).
  • org.torproject.metrics.web and subpackages remain unchanged.
  • org.torproject.metrics.web.research, containing just a single class, is merged into org.torproject.metrics.web.

#18732 Document release process for Java projects Metrics task Apr 6, 2016

The Release Process description should be based on existing documentation:

metrics-lib's CONTRIB.md

and after completion be referenced by metrics-lib's README

#17861 Consider adding a new interface RelayNetworkStatusMicrodescConsensus Metrics/Library enhancement Dec 15, 2015

There are currently three different version 3 network status document types, identified by the following @type annotations:

  1. @type network-status-vote-3 1.0: these are votes exchanged by directory authorities;
  2. @type network-status-consensus-3 1.0: these are (unflavored) consensuses based on votes and published by directory authorities;
  3. @type network-status-microdesc-consensus-3 1.0: these are the same consensuses as before but using a specific flavor, in this case one that references microdescriptors rather than server descriptors.

So, while we're using a separate interface for the first type (RelayNetworkStatusVote), we're using the same interface (RelayNetworkStatusConsensus) for the second and third type. This only works, because the only differences between unflavored and microdesc-flavored consensuses can be found in the network status entries, and we're using the generic NetworkStatusEntry for those. But as soon as there will be new keywords in either unflavored or microdesc-flavored consensuses, we'll have to add support for them to RelayNetworkStatusConsensus, even though the other flavor doesn't support them.

We might consider adding another interface RelayNetworkStatusMicrodescConsensus for microdesc-flavored consensus, which would probably just extend RelayNetworkStatusConsensus for now (or copy over everything from it? uhhh). But if microdesc-flavored consensuses ever derive from unflavored consensus in header or footer, we'll be able to model those changes correctly.

Related to this suggestion, we might consider making NetworkStatusEntry less generic by using a separate Entry interface like we just did for ExitList. Following that model, RelayNetworkStatusVote.Entry would keep its getMicrodescriptorDigests() method, RelayNetworkStatusConsensus.Entry would drop that method, and RelayNetworkStatusMicrodescConsensus.Entry would get a getMicrodescriptorDigest() (singular) method.

I don't think these changes are super urgent, but I wanted to write them down before resolving #17000 where they first came up.

#20325 Perform available space check using the partition recent is located on Metrics/CollecTor enhancement Oct 9, 2016

Currently, the root path of the configured 'recent' directory is used when measuring the available space.

This might not make sense in situations when partitions are mounted elsewhere. For example:

/dev/sda1 on /      (just the os)
/dev/sdb1 on /data  (here the 'recent' folder resides somewhere)

In this case sda1 might be small and sdb1 could be the huge data partition. Thus, the measurement of free space for / is useless.

Suggestion: (cf. comments) Last resort: add CheckSpacePath property and default to the root of the recent path in case it doesn't exist.

karsten (4 matches)

Ticket Summary Component Milestone Type Created
#23713 Add as_name parameter Metrics/Onionoo enhancement Sep 29, 2017

Currently one can search for relays in a specific AS with the as parameter, but you can not search for all relays with a given as_name (big organizations have multiple ASes).

background: I'd like to make the entries in this table clickable atlas URLs https://nusenu.github.io/OrNetStats/#top-10-autonomous-system-names-by-cw-fraction

Note: as_names usually contain spaces

#23829 Add support for search term negation Metrics/Onionoo enhancement Oct 11, 2017

Currently you can search for things like give me all exits in FI running 0.3.1


you can not: give me all relays by operator with contact foo that do not have the guard flag

#23913 Allow parameters and qualified search terms to be specified more than once Metrics/Onionoo enhancement Oct 20, 2017

split from https://trac.torproject.org/projects/tor/ticket/21366?replyto=20#comment:20

Allow parameters and qualified search terms to be specified more than once. As a result, search=contact:Neel%20contact:Chauhan would become a valid search for all contacts containing both name parts.

#23914 Extend flag parameter to support comma-separated list of flags Metrics/Onionoo enhancement Oct 20, 2017

split from https://trac.torproject.org/projects/tor/ticket/23829?replyto=3#comment:3

The flag parameter currently does not accept a comma-separated list of flags. We could extend it towards doing so.

lunar (1 match)

Ticket Summary Component Milestone Type Created
#11355 Provide obfsproxy nightlies in our debian repositories Obfuscation/Obfsproxy task Mar 28, 2014

People are asking for obfsproxy nightlies (#10954). It would be brilliant if people could add our debian repo, and get the latest obfsproxy master through it.

How can I help you do this?

No hurry on this one. I mainly made this ticket because #10954 was not very specific.


mikeperry (1 match)

Ticket Summary Component Milestone Type Created
#2161 Allow subscription to external rule feeds HTTPS Everywhere/EFF-HTTPS Everywhere enhancement Nov 6, 2010

The ultimate direction we want to go is towards an adblock plus model, where people can subscribe to rule feeds that are relevant to them, maintained by third parties. This involves both altering our XML schema to include a 'rulefeed' envelope tag, and adding a bit of UI to add and manage subscription urls.

It also depends upon a few enhancements being completed first. These are in the child ticket list below:

n8fr8 (6 matches)

Ticket Summary Component Milestone Type Created
#2424 Android purges firewall rules after network disable/airplane mode. Applications/Orbot defect Jan 22, 2011

Setting my phone to disable data access and/or enable airplane mode seems to cause the transproxy iptables rules created by OrBot to get silently flushed. After re-enabling, all apps access everything without tor, until I go into the orbot config screen to cause it to reapply them.

OrBot should listen for these network disable/loss/disconnect events if possible, and reinstate the iptables rules after this happens.

Someone should also test if switching from cell data to+from wifi also triggers this iptables reset. I have not tested that yet.

#3595 Connections with IPv4-mapped IPv6 addresses bypass transproxy Applications/Orbot defect Jul 14, 2011

A user (DEplan on #guardianproject) reported that Gibberbot was using his real IP despite Orbot's transproxy being turned on; further research led to the conclusion that recent releases of Android seem to use IPv4-mapped IPv6 adresses for a large portion of connections. For examples, please see http://pastebin.com/Z4KDDq40. These connections completely bypass transproxy.

I am not yet sure about the circumstances under which Android employs these addresses.

The problems in finding a solution are that Android usually does not include ip6tables (though Orbot could simply package that) and kernels do usually not include IPv6 netfilter modules. The latter is a major issue, since Orbot can't package modules for every single kernel a user might be running.

As a side note, IPv6 does not support NAT (which is what transproxying is based on).

I'll try to figure out what triggers this behaviour of Android and find possible solutions (using sysctl to disable IPv6 does not solve it).

#5393 orbot relay bug - orbot is not setting the relay values into torrc properly causing orbot to not work when set as relay Applications/Orbot defect Mar 15, 2012

This is about the bug discussed with 'n8fr8' on #guardianproject at freenode. So, the relay functionality you said was broken and needs to be fixed for 'orbot' on smartphones. I checked with the orbot version '' and you have checked with the 'dev branch of the code' as you said (i suppose that means you have checked with latest version of code by compiling and running the latest updated version from git; i will do it too and let you know again). But none seemed to work. In fact, you said you were getting a more significant crash, when you enabled relaying on smartphone for dev branch of code. You also thought if the problem is: whether the Relay conflict is with transproxying/root or with Tor client connection in general. But, i'm not sure if it later seemed not to be the problem. Then, you told me to change the torrc file on my android phone, as you said that orbot is not setting the relay values properly which might be the reason for orbot not working as a relay on smartphone. So, I will do that and let you know about it. I will also keep checking 'https://guardianproject.info/builds/Orbot/' to see if any new dev/debug release is posted. Thankyou so very much for all your help, Mr.Nathan.

#2761 Orbot Service not shutting down Applications/Orbot defect Mar 15, 2011

Behaviour: When closing tor network with big Button and exiting Orbot after tor is "deactivated", privoxy is still running and the Orbot service is not stopped.


  • Killing Privoxy from shell stops the privoxy process (OK)
  • Killing Orbot process simply restarts the process (BAD)


  • Running Orbot v1.0.4.1
  • Android Froyo 2.2.1 speedmod kernel
  • Samsung Galaxy

#3775 Permission error on Orbot Applications/Orbot defect Aug 21, 2011

There's some kind of problem with permissions in Orbot. I'm not sure if this happens only to me, but when I try to start Tor, it cannot access cache/control_auth_cookie. I can chmod it every time, but it is a bit annoying.

#5469 Orbot: can't specify node restrictions Applications/Orbot defect Mar 24, 2012

I'm using Orbot (v0.2.3.10-alpha-1.0.7-FINAL, on Android ICS v4.0.1) and I can't seem to get the exit node I request. In the Exit and Entrance Node fields I have "{us}" entered, yet sometimes I get IP's outside the US. Yesterday I got a UK ip.

Also, at random (usually after 30 minutes or so) I seem to lose connection to the Tor network without Orbot notifying me. I'm using Pandora from Canada.

nickm (6 matches)

Ticket Summary Component Milestone Type Created
#6767 tor crashes with Assertion smartlist_get(rl->old_routers, idx) == sd failed Core Tor/Tor Tor: 0.3.3.x-final defect Sep 4, 2012

I started my gateway with stderr redirected to syslog and got following crash:

Sep  2 12:30:07 OpenWrt cron.info crond[708]: crond: USER root pid 1794 cmd /root/tor-watchdog.sh
Sep  2 12:43:19 OpenWrt daemon.err Tor[1280]: routerlist_remove_old(): Bug: routerlist.c:3004: routerlist_remove_old: Assertion idx == sd->routerlist_index failed; aborting.
Sep  2 12:43:21 OpenWrt user.notice tor.stdout: routerlist.c:3004 routerlist_remove_old: Assertion idx == sd->routerlist_index failed; aborting.
Sep  2 12:45:01 OpenWrt cron.info crond[708]: crond: USER root pid 1797 cmd /root/tor-watchdog.sh
Sep  2 12:45:01 OpenWrt user.notice Tor.watchdog: pidfile exists and process is missing - start
Sep  2 12:45:02 OpenWrt user.notice Tor.init: Sep 02 12:45:02.684 [notice] Tor v0.2.2.37 (git-fce6eb1c44e87bc2). This is experimental software. Do not rely on it for strong anonymity. (Running on Linux mips)

OpenWrt package versions: libopenssl - 1.0.1c-1, tor -

openssl build information:

root@OpenWrt:~# strings /usr/lib/libcrypto.so.1.0.0 | grep gcc
mipsel-openwrt-linux-uclibc-gcc -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DDSO_DLFCN -DHAVE_DLFCN_H -I/home/fnord/slave/brcm47xx/build/staging_dir/target-mipsel_uClibc- -I/home/fnord/slave/brcm47xx/build/staging_dir/target-mipsel_uClibc- -I/home/fnord/slave/brcm47xx/build/staging_dir/toolchain-mipsel_gcc-4.6-linaro_uClibc- -I/home/fnord/slave/brcm47xx/build/staging_dir/toolchain-mipsel_gcc-4.6-linaro_uClibc- -DOPENSSL_SMALL_FOOTPRINT -DHAVE_CRYPTODEV -DOPENSSL_NO_ERR -DTERMIO -Os -pipe -mips32 -mtune=mips32 -fno-caller-saves -fhonour-copts -Wno-error=unused-but-set-variable -msoft-float -fpic -DOPENSSL_THREADS -pthread -D_REENTRANT -D_THREAD_SAFE -D_THREADSAFE -fomit-frame-pointer -Wall

#14039 Many unnecessary CPU wakeups per second Core Tor/Tor Tor: 0.3.3.x-final defect Dec 28, 2014

PowerTOP shows Tor waking up 10 times per second even when it’s doing nothing. This is bad for power usage on a laptop because it prevents the CPU from entering its deepest sleep states. It looks like the reason is the default TokenBucketRefillInterval of 100 msec (#3630). Perhaps this logic can be refactored so that refill_timer is only activated when there are buckets to be refilled.

#17278 Fix malleable relay crypto Core Tor/Tor Tor: unspecified defect Oct 7, 2015

This has been an annoyance in our protocol for entirely too long. Once we have a solid proposal (#5460) for this, we should implement it posthaste.

#19984 Use a better set of comparison/evaluation functions for deciding which connections to kill when OOS Core Tor/Tor Tor: 0.3.3.x-final defect Aug 25, 2016

Our existing OOS code kills low-priority OR connections. But really, we need to look at all connections that an adversary might be able to create (especially dir and exit connections), or else an adversary will be able to open a bunch of those, and force us to kill as many OR connections as they want.

This problem is the reason that DisableOOSCheck is now on-by-default.

#18346 Separate the various roles that directory authorities play, from a configuration POV Core Tor/Tor Tor: unspecified enhancement Feb 19, 2016

It would be handy if the following roles were split up:

1) The list of IP:Orport:Identity to which every relay should upload every descriptor. 2) The list of IP:Orport:Identity from which caches should expect to find canonical consensuses and descriptors. 3) The list of IP:Orport:Identity from which non-caches should expect to bootstrap consensuses and descriptors. (See 'fallbackdir') 4) The list of keys that must sign a vote or a consensus. 5) The list of IP:Orport:Identity that authorities use when sending and receiving votes.

Splitting roles up in this way would better prepare us for an implementation of prop#257 down the road.

#18637 Have OOM handler look at all memory consumption, not just some Core Tor/Tor Tor: unspecified enhancement Mar 25, 2016

Just because our OOM handler doesn't know how to free every kind of memory we allocate, doesn't mean we shouldn't teach it to consider our total allocation when deciding that we're low on memory.

For platforms where malloc() can return NULL, we could have it look at that too.

1 2
Note: See TracReports for help on using and creating reports.