Control: tag -1 + patch On Sun, Aug 30, 2015 at 13:18:44 +0200, intrigeri wrote: > Michael Gold wrote (29 Aug 2015 16:35:00 GMT) : > > An strace reveals it was trying to connect to 127.0.0.1:9050, not to the > > internet; code inspection reveals this to be a hard-coded SOCKS address. > > The preceding "Downloading https://www.torproject.org…" message makes it > > look like it was www.torproject.org that rejected the connection. > > I agree this is a UX problem, thanks for reporting it to Debian. > Do you want to report it upstream[0]? (I don't remember if the > upstream author tracks the Debian BTS.)
Here's a patch. I don't have an account there so I'm CCing Micah. I didn't handle the case where the remote end rejects the connection. I'm not sure what exactly it should say, but "Are you connected to the internet?" isn't relevant in that case. -- Michael
diff --git a/torbrowser_launcher/launcher.py b/torbrowser_launcher/launcher.py index e88a9f0ca87d..c830750e98fa 100644 --- a/torbrowser_launcher/launcher.py +++ b/torbrowser_launcher/launcher.py @@ -32,7 +32,7 @@ from twisted.web.client import Agent, RedirectAgent, ResponseDone, ResponseFaile from twisted.web.http_headers import Headers from twisted.internet.protocol import Protocol from twisted.internet.ssl import ClientContextFactory -from twisted.internet.error import DNSLookupError +from twisted.internet.error import DNSLookupError, ConnectionRefusedError import OpenSSL @@ -426,6 +426,13 @@ class Launcher: else: self.set_gui('error', _('The SSL certificate served by https://www.torproject.org is invalid! You may be under attack.'), [], False) + elif isinstance(f.value, ConnectionRefusedError) and self.common.settings['update_over_tor']: + # If we're using Tor, we'll only get this error when we fail to + # connect to the SOCKS server. If the connection fails at the + # remote end, we'll get txsocksx.errors.ConnectionRefused. + addr = self.common.settings['tor_socks_address'] + self.set_gui('error', _("Error connecting to Tor at {0}").format(addr), [], False) + else: self.set_gui('error', _("Error starting download:\n\n{0}\n\nAre you connected to the internet?").format(f.value), [], False)
signature.asc
Description: PGP signature