From c6b6cd3d66ddb88f676f22675ac36cbaba52532b Mon Sep 17 00:00:00 2001 From: n8fr8 Date: Thu, 28 Jun 2012 22:50:18 -0400 Subject: [PATCH] fixed relay resolv.conf DNS error #2069 in tor trac --- res/raw/torrc | 3 ++ .../android/service/TorService.java | 37 +++++++++++++++---- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/res/raw/torrc b/res/raw/torrc index 5366ce8e..c86ad2b8 100644 --- a/res/raw/torrc +++ b/res/raw/torrc @@ -11,3 +11,6 @@ TransListenAddress 127.0.0.1 TransPort 9040 DNSListenAddress 127.0.0.1 DNSPort 5400 +HardwareAccel 1 +SafeLogging 1 +TestSocks 1 \ No newline at end of file diff --git a/src/org/torproject/android/service/TorService.java b/src/org/torproject/android/service/TorService.java index 74a91cf8..1cbb93c5 100644 --- a/src/org/torproject/android/service/TorService.java +++ b/src/org/torproject/android/service/TorService.java @@ -8,10 +8,13 @@ package org.torproject.android.service; +import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.FileWriter; import java.io.IOException; +import java.io.PrintWriter; import java.net.Socket; import java.util.ArrayList; import java.util.Arrays; @@ -734,7 +737,7 @@ public class TorService extends Service implements TorServiceConstants, TorConst int procId = -1; int attempts = 0; - int torRetryWaitTimeMS = 5000; + int torRetryWaitTimeMS = 2000; while (procId == -1 && attempts < MAX_START_TRIES) { @@ -748,22 +751,25 @@ public class TorService extends Service implements TorServiceConstants, TorConst procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath()); - logNotice("got tor proc id: " + procId); - if (procId == -1) { - - sendCallbackStatusMessage(getString(R.string.couldn_t_start_tor_process_)); Thread.sleep(torRetryWaitTimeMS); + procId = TorServiceUtils.findProcessId(fileTor.getAbsolutePath()); attempts++; } - - if (waitForProcess) - logNotice(log.toString()); + else + { + logNotice("got tor proc id: " + procId); + + } } if (procId == -1) { + + logNotice(log.toString()); + sendCallbackStatusMessage(getString(R.string.couldn_t_start_tor_process_)); + throw new Exception ("Unable to start Tor"); } else @@ -1572,6 +1578,9 @@ public class TorService extends Service implements TorServiceConstants, TorConst int ORPort = Integer.parseInt(prefs.getString(TorConstants.PREF_OR_PORT, "9001")); String nickname = prefs.getString(TorConstants.PREF_OR_NICKNAME, "Orbot"); + String dnsFile = writeDNSFile (); + + mBinder.updateConfiguration("ServerDNSResolvConfFile", dnsFile, false); mBinder.updateConfiguration("ORPort", ORPort + "", false); mBinder.updateConfiguration("Nickname", nickname, false); mBinder.updateConfiguration("ExitPolicy", "reject *:*", false); @@ -1626,6 +1635,18 @@ public class TorService extends Service implements TorServiceConstants, TorConst return true; } + //using Google DNS for now as the public DNS server + private String writeDNSFile () throws IOException + { + File file = new File(appBinHome,"resolv.conf"); + + PrintWriter bw = new PrintWriter(new FileWriter(file)); + bw.println("nameserver 8.8.8.8"); + bw.println("nameserver 8.8.4.4"); + bw.close(); + + return file.getAbsolutePath(); + } }