Skip to content
Snippets Groups Projects
Commit 44f07c8d authored by akwizgran's avatar akwizgran
Browse files

Merge branch '1293-tor-cookie-file' into 'master'

Watch for creation rather than updating of Tor cookie file

See merge request akwizgran/briar!825
parents 624e03a2 d4a9c41c
No related branches found
No related tags found
No related merge requests found
......@@ -185,18 +185,15 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
if (used.getAndSet(true)) throw new IllegalStateException();
// Install or update the assets if necessary
if (!assetsAreUpToDate()) installAssets();
LOG.info("Starting Tor");
// Watch for the auth cookie file being updated
try {
cookieFile.getParentFile().mkdirs();
cookieFile.createNewFile();
} catch (IOException e) {
throw new PluginException(e);
}
// Watch for the auth cookie file being created
if (cookieFile.getParentFile().mkdirs())
LOG.info("Created directory for cookie file");
if (cookieFile.delete()) LOG.info("Deleted old cookie file");
CountDownLatch latch = new CountDownLatch(1);
FileObserver obs = new WriteObserver(cookieFile, latch);
FileObserver obs = new CreateObserver(cookieFile, latch);
obs.startWatching();
// Start a new Tor process
LOG.info("Starting Tor");
String torPath = torFile.getAbsolutePath();
String configPath = configFile.getAbsolutePath();
String pid = String.valueOf(android.os.Process.myPid());
......@@ -364,7 +361,7 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
File[] children = f.listFiles();
if (children != null) for (File child : children) listFiles(child);
} else {
LOG.info(f.getAbsolutePath());
LOG.info(f.getAbsolutePath() + " " + f.length());
}
}
......@@ -641,22 +638,6 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
LOG.info("Descriptor uploaded");
}
private static class WriteObserver extends FileObserver {
private final CountDownLatch latch;
private WriteObserver(File file, CountDownLatch latch) {
super(file.getAbsolutePath(), CLOSE_WRITE);
this.latch = latch;
}
@Override
public void onEvent(int event, @Nullable String path) {
stopWatching();
latch.countDown();
}
}
@Override
public void eventOccurred(Event e) {
if (e instanceof SettingsUpdatedEvent) {
......@@ -717,6 +698,26 @@ class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
if (oldConnectivityCheck != null) oldConnectivityCheck.cancel(false);
}
private static class CreateObserver extends FileObserver {
private final File file;
private final CountDownLatch latch;
private CreateObserver(File file, CountDownLatch latch) {
super(file.getParentFile().getAbsolutePath(), CREATE | MOVED_TO);
this.file = file;
this.latch = latch;
}
@Override
public void onEvent(int event, @Nullable String path) {
if (file.exists()) {
stopWatching();
latch.countDown();
}
}
}
private class NetworkStateReceiver extends BroadcastReceiver {
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment