diff --git a/main/core/pom.xml b/main/core/pom.xml
index 7bf3dd84c..5e17bd90d 100644
--- a/main/core/pom.xml
+++ b/main/core/pom.xml
@@ -12,7 +12,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
core
Cryptomator WebDAV and I/O module
diff --git a/main/crypto-aes/pom.xml b/main/crypto-aes/pom.xml
index 410aed809..37b3b76d9 100644
--- a/main/crypto-aes/pom.xml
+++ b/main/crypto-aes/pom.xml
@@ -12,7 +12,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
crypto-aes
Cryptomator cryptographic module (AES)
diff --git a/main/crypto-api/pom.xml b/main/crypto-api/pom.xml
index 151e9c4ae..e4ba0b81d 100644
--- a/main/crypto-api/pom.xml
+++ b/main/crypto-api/pom.xml
@@ -12,7 +12,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
crypto-api
Cryptomator cryptographic module API
diff --git a/main/installer-debian/pom.xml b/main/installer-debian/pom.xml
index d37d0fa41..6a057b886 100644
--- a/main/installer-debian/pom.xml
+++ b/main/installer-debian/pom.xml
@@ -3,7 +3,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
installer-debian
pom
diff --git a/main/installer-osx/pom.xml b/main/installer-osx/pom.xml
index 8e391df96..666783c69 100644
--- a/main/installer-osx/pom.xml
+++ b/main/installer-osx/pom.xml
@@ -3,7 +3,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
installer-osx
pom
diff --git a/main/installer-win-portable/pom.xml b/main/installer-win-portable/pom.xml
index dfa814698..e03dd8fc9 100644
--- a/main/installer-win-portable/pom.xml
+++ b/main/installer-win-portable/pom.xml
@@ -3,7 +3,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
installer-win-portable
pom
diff --git a/main/installer-win/pom.xml b/main/installer-win/pom.xml
index 7bb61f599..eaa8dac1d 100644
--- a/main/installer-win/pom.xml
+++ b/main/installer-win/pom.xml
@@ -3,7 +3,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
installer-win
pom
diff --git a/main/pom.xml b/main/pom.xml
index 07ffeed9f..320ecb458 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -11,7 +11,7 @@
4.0.0
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
pom
Cryptomator
diff --git a/main/ui/pom.xml b/main/ui/pom.xml
index 7bcff00c0..a32bd671c 100644
--- a/main/ui/pom.xml
+++ b/main/ui/pom.xml
@@ -12,7 +12,7 @@
org.cryptomator
main
- 0.8.0-SNAPSHOT
+ 0.7.2
ui
Cryptomator GUI
diff --git a/main/ui/src/main/java/org/cryptomator/ui/util/mount/WindowsWebDavMounter.java b/main/ui/src/main/java/org/cryptomator/ui/util/mount/WindowsWebDavMounter.java
index 84a98e48b..66d200839 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/util/mount/WindowsWebDavMounter.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/util/mount/WindowsWebDavMounter.java
@@ -30,7 +30,7 @@ import org.cryptomator.ui.util.command.Script;
final class WindowsWebDavMounter implements WebDavMounterStrategy {
private static final Pattern WIN_MOUNT_DRIVELETTER_PATTERN = Pattern.compile("\\s*([A-Z]:)\\s*");
- private static final int MAX_MOUNT_ATTEMPTS = 5;
+ private static final int MAX_MOUNT_ATTEMPTS = 8;
@Override
public boolean shouldWork() {
@@ -39,30 +39,26 @@ final class WindowsWebDavMounter implements WebDavMounterStrategy {
@Override
public void warmUp(int serverPort) {
-// try {
-// final Script mountScript = fromLines("net use * \\\\localhost@%DAV_PORT%\\DavWWWRoot\\bill-gates-mom-uses-goto /persistent:no");
-// mountScript.addEnv("DAV_PORT", String.valueOf(serverPort));
-// mountScript.execute(1, TimeUnit.SECONDS);
-// } catch (CommandFailedException e) {
-// // will most certainly throw an exception, because this is a fake WebDav path. But now windows has some DNS things cached :)
-// }
+ // no-op
}
@Override
public WebDavMount mount(URI uri, String name) throws CommandFailedException {
CommandResult mountResult;
try {
- final Script mountScript = fromLines("net use * \\\\0--1.ipv6-literal.net@%DAV_PORT%\\DavWWWRoot%DAV_UNC_PATH% /persistent:no");
+ final Script mountScript = fromLines("net use * \\\\localhost@%DAV_PORT%\\DavWWWRoot%DAV_UNC_PATH% /persistent:no");
mountScript.addEnv("DAV_PORT", String.valueOf(uri.getPort())).addEnv("DAV_UNC_PATH", uri.getRawPath().replace('/', '\\'));
mountResult = mountScript.execute(5, TimeUnit.SECONDS);
} catch (CommandFailedException ex) {
- final Script mountScript = fromLines("net use * \\\\0--1.ipv6-literal.net@%DAV_PORT%\\DavWWWRoot%DAV_UNC_PATH% /persistent:no");
- mountScript.addEnv("DAV_PORT", String.valueOf(uri.getPort())).addEnv("DAV_UNC_PATH", uri.getRawPath().replace('/', '\\'));
+ final Script localhostMountScript = fromLines("net use * \\\\localhost@%DAV_PORT%\\DavWWWRoot%DAV_UNC_PATH% /persistent:no");
+ localhostMountScript.addEnv("DAV_PORT", String.valueOf(uri.getPort())).addEnv("DAV_UNC_PATH", uri.getRawPath().replace('/', '\\'));
+ final Script ipv6literaltMountScript = fromLines("net use * \\\\0--1.ipv6-literal.net@%DAV_PORT%\\DavWWWRoot%DAV_UNC_PATH% /persistent:no");
+ ipv6literaltMountScript.addEnv("DAV_PORT", String.valueOf(uri.getPort())).addEnv("DAV_UNC_PATH", uri.getRawPath().replace('/', '\\'));
final Script proxyBypassScript = fromLines("reg add \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\" /v \"ProxyOverride\" /d \";0--1.ipv6-literal.net;0--1.ipv6-literal.net:%DAV_PORT%\" /f");
- proxyBypassScript.addEnv("DAV_PORT", String.valueOf(uri.getPort()));
- mountResult = bypassProxyAndRetryMount(mountScript, proxyBypassScript);
+ proxyBypassScript.addEnv("DAV_PORT", String.valueOf(uri.getPort()));
+ mountResult = bypassProxyAndRetryMount(localhostMountScript, ipv6literaltMountScript, proxyBypassScript);
}
-
+
final String driveLetter = getDriveLetter(mountResult.getStdOut());
final Script openExplorerScript = fromLines("start explorer.exe " + driveLetter);
openExplorerScript.execute();
@@ -77,7 +73,7 @@ final class WindowsWebDavMounter implements WebDavMounterStrategy {
}
};
}
-
+
private boolean isVolumeMounted(String driveLetter) {
for (Path path : FileSystems.getDefault().getRootDirectories()) {
if (path.toString().startsWith(driveLetter)) {
@@ -86,15 +82,17 @@ final class WindowsWebDavMounter implements WebDavMounterStrategy {
}
return false;
}
-
- private CommandResult bypassProxyAndRetryMount(Script mountScript, Script proxyBypassScript) throws CommandFailedException {
+
+ private CommandResult bypassProxyAndRetryMount(Script localhostMountScript, Script ipv6literalMountScript, Script proxyBypassScript) throws CommandFailedException {
CommandFailedException latestException = null;
for (int i = 0; i < MAX_MOUNT_ATTEMPTS; i++) {
try {
// wait a moment before next attempt
Thread.sleep(5000);
proxyBypassScript.execute();
- return mountScript.execute(5, TimeUnit.SECONDS);
+ // alternate localhost and 0--1.ipv6literal.net
+ final Script mountScript = (i % 2 == 0) ? localhostMountScript : ipv6literalMountScript;
+ return mountScript.execute(3, TimeUnit.SECONDS);
} catch (CommandFailedException ex) {
latestException = ex;
} catch (InterruptedException ex) {