Skip to content

Make IPC default again on Linux and macOS

At a certain point, Tor Browser switched to Unix sockets both for SOCKS and control where supported (Linux and macOS): #20111 (closed).

Then TCP was restored to reuse the same tor daemon for TorBirdy: tor-launcher@485ba945.

Also, Tor Browser had some problems when + and __ weren't yet a thing for the control port and socks port parameters: #20761.

Now, these aren't problems anymore, amd IPC still seems a good idea (easier to audit for leaks, or less leaks in general - according to @JeremyRand - and allows for multiple Tor Browsers at the same time, since the default branch tries to make a unique filename).

Also, everything is already in place, we just need to flip extensions.torlauncher.control_port_use_ipc and extensions.torlauncher.socks_port_use_ipc. We should make them sticky, so that any previous user value is kept in user.js.

The differences in code between Windows and the other OS's are minimal:

  • the control port uses nsISocketTransportService.createUnixDomainTransport instead of nsISocketTransportService.createTransport, but both return the same type of abstraction (nsISocketTransport);
  • for SOCKS, network.proxy.socks is set to file:///...., instead of having the IP address/hostname;
  • different +__ControlPort and +__SocksPort are passed to tor.

I think it should be pretty safe to use them. I've been doing that on my developer build in these days and everything kept working (but I also have a number of other changes for the torbutton refactor/removal).

So, in today's meeting we decided to prioritize this preference flip ASAP, already for 13.0a1, to have this in test for the 3 months before the 13.0 release.

I will do after !694 (merged) is merged.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information