diff --git a/bramble-android/libs/jtorctl-briar.jar b/bramble-android/libs/jtorctl-briar.jar
index a299bcdb39e4ec965dd35fc56263dabecce069ad..4a65f0b74fd0bb16b91432cd98129cee1283aac6 100644
Binary files a/bramble-android/libs/jtorctl-briar.jar and b/bramble-android/libs/jtorctl-briar.jar differ
diff --git a/patches/jtorctl.patch b/patches/jtorctl.patch
index 7d346eff0c87e66b18defd0d28b53e4d4de93af8..29a4f751af2b8b897256e626c3964d0f7361c303 100644
--- a/patches/jtorctl.patch
+++ b/patches/jtorctl.patch
@@ -1,3 +1,16 @@
+diff --git a/README.md b/README.md
+index 902d727..359cc69 100644
+--- a/README.md
++++ b/README.md
+@@ -1,7 +1,4 @@
+-
+ A Java library for controlling a Tor instance via its control port.  It is
+ used in the Android app Orbot as well as others.
+ 
+-To add this library to a gradle project:
+-
+-    compile 'net.freehaven.tor.control:jtorctl:0.2'
++This fork includes patches for managing onion services.
 diff --git a/net/freehaven/tor/control/TorControlCommands.java b/net/freehaven/tor/control/TorControlCommands.java
 index 36482d5..14486e3 100644
 --- a/net/freehaven/tor/control/TorControlCommands.java
@@ -12,10 +25,64 @@ index 36482d5..14486e3 100644
  }
  
 diff --git a/net/freehaven/tor/control/TorControlConnection.java b/net/freehaven/tor/control/TorControlConnection.java
-index 9524612..c0f2070 100644
+index 9524612..eacdd66 100644
 --- a/net/freehaven/tor/control/TorControlConnection.java
 +++ b/net/freehaven/tor/control/TorControlConnection.java
-@@ -736,11 +736,111 @@ public class TorControlConnection implements TorControlCommands {
+@@ -40,10 +40,14 @@ public class TorControlConnection implements TorControlCommands {
+     static class Waiter {
+     
+         List<ReplyLine> response; // Locking: this
++        boolean interrupted;
+     
+         synchronized List<ReplyLine> 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<ReplyLine> 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<ReplyLine> 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);
      }