aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent <valodim@mugenguild.com>2014-06-23 23:16:25 +0200
committerVincent <valodim@mugenguild.com>2014-06-23 23:16:25 +0200
commitc865de4002a9751928969ef30a3a5a6f943249cc (patch)
tree8b02141f987b08a13d1e34a1f855af70875fb9d6
parent804f81199832636e6bed97ab37800bebd882867f (diff)
parent2b18dc741a11b9709eb91cc3a240aa0cfae6d56d (diff)
downloadopen-keychain-c865de4002a9751928969ef30a3a5a6f943249cc.tar.gz
open-keychain-c865de4002a9751928969ef30a3a5a6f943249cc.tar.bz2
open-keychain-c865de4002a9751928969ef30a3a5a6f943249cc.zip
Merge pull request #686 from mar-v-in/minidns
Use minidns instead of dnsjava
-rw-r--r--.gitmodules6
-rw-r--r--OpenKeychain/build.gradle2
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java12
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java21
m---------extern/dnsjava0
m---------extern/minidns0
-rw-r--r--settings.gradle2
7 files changed, 23 insertions, 20 deletions
diff --git a/.gitmodules b/.gitmodules
index 6b1646b89..f18a8731b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -28,9 +28,9 @@
[submodule "extern/SuperToasts"]
path = extern/SuperToasts
url = https://github.com/open-keychain/SuperToasts.git
-[submodule "extern/dnsjava"]
- path = extern/dnsjava
- url = https://github.com/open-keychain/dnsjava.git
[submodule "extern/KeybaseLib"]
path = extern/KeybaseLib
url = https://github.com/timbray/KeybaseLib.git
+[submodule "extern/minidns"]
+ path = extern/minidns
+ url = https://github.com/open-keychain/minidns.git
diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle
index c18c4865c..fd0c4c6ba 100644
--- a/OpenKeychain/build.gradle
+++ b/OpenKeychain/build.gradle
@@ -19,7 +19,7 @@ dependencies {
compile project(':extern:spongycastle:prov')
compile project(':extern:AppMsg:library')
compile project(':extern:SuperToasts:supertoasts')
- compile project(':extern:dnsjava')
+ compile project(':extern:minidns')
compile project(':extern:KeybaseLib:Lib')
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
index 80f52f914..5d281d5b0 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/helper/EmailKeyHelper.java
@@ -57,11 +57,13 @@ public class EmailKeyHelper {
}
}
- // Most users don't have the SRV record, so ask a default server as well
- String[] servers = Preferences.getPreferences(context).getKeyServers();
- if (servers != null && servers.length != 0) {
- HkpKeyserver hkp = new HkpKeyserver(servers[0]);
- keys.addAll(getEmailKeys(mail, hkp));
+ if (keys.isEmpty()) {
+ // Most users don't have the SRV record, so ask a default server as well
+ String[] servers = Preferences.getPreferences(context).getKeyServers();
+ if (servers != null && servers.length != 0) {
+ HkpKeyserver hkp = new HkpKeyserver(servers[0]);
+ keys.addAll(getEmailKeys(mail, hkp));
+ }
}
return new ArrayList<ImportKeysListEntry>(keys);
}
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
index df1a7e937..e49085a0e 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/HkpKeyserver.java
@@ -18,6 +18,10 @@
package org.sufficientlysecure.keychain.keyimport;
+import de.measite.minidns.Client;
+import de.measite.minidns.Question;
+import de.measite.minidns.Record;
+import de.measite.minidns.record.SRV;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
@@ -33,10 +37,6 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.pgp.PgpHelper;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.util.Log;
-import org.xbill.DNS.Lookup;
-import org.xbill.DNS.Record;
-import org.xbill.DNS.SRVRecord;
-import org.xbill.DNS.Type;
import java.io.IOException;
import java.io.InputStream;
@@ -402,19 +402,20 @@ public class HkpKeyserver extends Keyserver {
*/
public static HkpKeyserver resolve(String domain) {
try {
- Record[] records = new Lookup("_hkp._tcp." + domain, Type.SRV).run();
+ Record[] records = new Client().query(new Question("_hkp._tcp." + domain, Record.TYPE.SRV)).getAnswers();
if (records.length > 0) {
Arrays.sort(records, new Comparator<Record>() {
@Override
public int compare(Record lhs, Record rhs) {
- if (!(lhs instanceof SRVRecord)) return 1;
- if (!(rhs instanceof SRVRecord)) return -1;
- return ((SRVRecord) lhs).getPriority() - ((SRVRecord) rhs).getPriority();
+ if (lhs.getPayload().getType() != Record.TYPE.SRV) return 1;
+ if (rhs.getPayload().getType() != Record.TYPE.SRV) return -1;
+ return ((SRV) lhs.getPayload()).getPriority() - ((SRV) rhs.getPayload()).getPriority();
}
});
Record record = records[0]; // This is our best choice
- if (record instanceof SRVRecord) {
- return new HkpKeyserver(((SRVRecord) record).getTarget().toString(), (short) ((SRVRecord) record).getPort());
+ if (record.getPayload().getType() == Record.TYPE.SRV) {
+ return new HkpKeyserver(((SRV) record.getPayload()).getName(),
+ (short) ((SRV) record.getPayload()).getPort());
}
}
} catch (Exception ignored) {
diff --git a/extern/dnsjava b/extern/dnsjava
deleted file mode 160000
-Subproject 71c8a9e56b19b34907e7e2e810ca15b57e3edc2
diff --git a/extern/minidns b/extern/minidns
new file mode 160000
+Subproject dcf62a8ac59d84072e66e71ec8a5d137784e760
diff --git a/settings.gradle b/settings.gradle
index 24eb03490..4776ae5ee 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -12,5 +12,5 @@ include ':extern:spongycastle:pkix'
include ':extern:spongycastle:prov'
include ':extern:AppMsg:library'
include ':extern:SuperToasts:supertoasts'
-include ':extern:dnsjava'
+include ':extern:minidns'
include ':extern:KeybaseLib:Lib'