From 96d2889a6c5223173e435a1eae62ecec861384ad Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 23 Jun 2017 14:57:00 +0100 Subject: [PATCH] Notify Tor controller if Tor has crashed. --- bramble-android/libs/jtorctl-briar.jar | Bin 21074 -> 20429 bytes patches/jtorctl.patch | 71 ++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/bramble-android/libs/jtorctl-briar.jar b/bramble-android/libs/jtorctl-briar.jar index a299bcdb39e4ec965dd35fc56263dabecce069ad..4a65f0b74fd0bb16b91432cd98129cee1283aac6 100644 GIT binary patch delta 16790 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 H*RTHv?g>B+ delta 17380 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 response; // Locking: this ++ boolean interrupted; + + synchronized List getResponse() throws InterruptedException { + while (response == null) { + wait(); ++ if (interrupted) { ++ throw new InterruptedException(); ++ } + } + return response; + } +@@ -52,6 +56,11 @@ public class TorControlConnection implements TorControlCommands { + this.response = response; + notifyAll(); + } ++ ++ synchronized void interrupt() { ++ interrupted = true; ++ notifyAll(); ++ } + } + + static class ReplyLine { +@@ -171,7 +180,7 @@ public class TorControlConnection implements TorControlCommands { + + protected synchronized List sendAndWaitForResponse(String s, + String rest) throws IOException { +- if(parseThreadException != null) throw parseThreadException; ++ if (parseThreadException != null) throw parseThreadException; + checkThread(); + Waiter w = new Waiter(); + if (debugOutput != null) +@@ -305,8 +314,15 @@ public class TorControlConnection implements TorControlCommands { + while (true) { + ArrayList lst = readReply(); + if (lst.isEmpty()) { +- // connection has been closed remotely! end the loop! +- return; ++ // interrupted queued waiters, there won't be any response. ++ synchronized (waiters) { ++ if (!waiters.isEmpty()) { ++ for (Waiter w : waiters) { ++ w.interrupt(); ++ } ++ } ++ } ++ throw new IOException("Tor is no longer running"); + } + if ((lst.get(0)).status.startsWith("6")) + handleEvent(lst); +@@ -736,11 +752,111 @@ public class TorControlConnection implements TorControlCommands { sendAndWaitForResponse("TAKEOWNERSHIP\r\n", null); }