aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoushik Dutta <koushd@gmail.com>2012-10-13 15:44:56 -0700
committerKoushik Dutta <koushd@gmail.com>2012-10-13 15:45:06 -0700
commitbc96ad9d257c9a029d10e5f33fd1053d2e4e51ac (patch)
tree5392834a94db9bbb248ed26f307a5a0a2b24326f
parent08bcb605bb7d0ce62c160752bca9734363c99c55 (diff)
downloadAndroidAsync-bc96ad9d257c9a029d10e5f33fd1053d2e4e51ac.tar.gz
AndroidAsync-bc96ad9d257c9a029d10e5f33fd1053d2e4e51ac.tar.bz2
AndroidAsync-bc96ad9d257c9a029d10e5f33fd1053d2e4e51ac.zip
Fix up SSLContext initialization on Froyo. Fix up SSLEngine initialization on Froyo. Fix bug where unwrapping could be reentrant.
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/AsyncServer.java12
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/SSLDataExchange.java36
-rw-r--r--AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java3
-rw-r--r--AndroidAsyncSample/gen/R.java.d31
-rw-r--r--AndroidAsyncSample/gen/com/koushikdutta/async/sample/BuildConfig.java2
-rw-r--r--AndroidAsyncSample/src/com/koushikdutta/async/sample/MainActivity.java2
6 files changed, 43 insertions, 43 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
index 4418bbd..f4f1a7a 100644
--- a/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
+++ b/AndroidAsync/src/com/koushikdutta/async/AsyncServer.java
@@ -4,7 +4,6 @@ import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
-import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.DatagramChannel;
import java.nio.channels.SelectionKey;
@@ -17,17 +16,22 @@ import java.util.Set;
import java.util.concurrent.Semaphore;
import junit.framework.Assert;
+import android.os.Build;
import android.util.Log;
-import com.koushikdutta.async.callback.ClosedCallback;
import com.koushikdutta.async.callback.ConnectCallback;
-import com.koushikdutta.async.callback.DataCallback;
import com.koushikdutta.async.callback.ListenCallback;
-import com.koushikdutta.async.callback.WritableCallback;
public class AsyncServer {
private static final String LOGTAG = "NIO";
+ static {
+ if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO) {
+ java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
+ java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
+ }
+ }
+
static AsyncServer mInstance = new AsyncServer() {
{
setAutostart(true);
diff --git a/AndroidAsync/src/com/koushikdutta/async/SSLDataExchange.java b/AndroidAsync/src/com/koushikdutta/async/SSLDataExchange.java
index 2db7365..0d339ee 100644
--- a/AndroidAsync/src/com/koushikdutta/async/SSLDataExchange.java
+++ b/AndroidAsync/src/com/koushikdutta/async/SSLDataExchange.java
@@ -28,9 +28,15 @@ public class SSLDataExchange implements DataTransformer, DataExchange {
BufferedDataSink mSink;
ByteBuffer mReadTmp = ByteBuffer.allocate(8192);
boolean mUnwrapping = false;
- public SSLDataExchange(DataExchange exchange) {
+ public SSLDataExchange(DataExchange exchange, String host, int port) {
mExchange = exchange;
+ if (host != null) {
+ engine = ctx.createSSLEngine(host, port);
+ }
+ else {
+ engine = ctx.createSSLEngine();
+ }
engine.setUseClientMode(true);
mSink = new BufferedDataSink(exchange);
@@ -41,9 +47,9 @@ public class SSLDataExchange implements DataTransformer, DataExchange {
mEmitter.setDataCallback(new DataCallback() {
@Override
public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
+ if (mUnwrapping)
+ return;
try {
- if (mUnwrapping)
- return;
mUnwrapping = true;
ByteBufferList out = new ByteBufferList();
@@ -77,6 +83,7 @@ public class SSLDataExchange implements DataTransformer, DataExchange {
Util.emitAllData(SSLDataExchange.this, out);
}
catch (Exception ex) {
+ ex.printStackTrace();
report(ex);
}
finally {
@@ -95,16 +102,35 @@ public class SSLDataExchange implements DataTransformer, DataExchange {
}
}
+ static SSLContext ctx;
static {
try {
ctx = SSLContext.getInstance("Default");
}
catch (Exception ex) {
+ try {
+ ctx = SSLContext.getInstance("TLS");
+ TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+ }
+
+ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
+ }
+ } };
+ ctx.init(null, trustAllCerts, new java.security.SecureRandom());
+ }
+ catch (Exception ex2) {
+ ex.printStackTrace();
+ ex2.printStackTrace();
+ }
}
}
- static SSLContext ctx;
- SSLEngine engine = ctx.createSSLEngine();
+ SSLEngine engine;
boolean finishedHandshake = false;
DataCallback mDataCallback;
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
index 733d444..7cb6efb 100644
--- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
+++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncHttpClient.java
@@ -75,6 +75,7 @@ public class AsyncHttpClient {
}
}
final String lookup = uri.getScheme() + "//" + uri.getHost() + ":" + port;
+ final int finalPort = port;
final InternalConnectCallback socketConnected = new InternalConnectCallback() {
@Override
@@ -143,7 +144,7 @@ public class AsyncHttpClient {
if (exchange == null) {
exchange = socket;
if (request.getUri().getScheme().equals("https")) {
- SSLDataExchange ssl = new SSLDataExchange(socket);
+ SSLDataExchange ssl = new SSLDataExchange(socket, uri.getHost(), finalPort);
exchange = ssl;
socket.setDataCallback(ssl);
}
diff --git a/AndroidAsyncSample/gen/R.java.d b/AndroidAsyncSample/gen/R.java.d
deleted file mode 100644
index a1f128f..0000000
--- a/AndroidAsyncSample/gen/R.java.d
+++ /dev/null
@@ -1,31 +0,0 @@
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/gen/com/koushikdutta/async/sample/R.java \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/gen/com/koushikdutta/async/R.java \
- : /Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-hdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-hdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-ldpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-mdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-mdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-xhdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/drawable-xhdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/res/values/strings.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-hdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-hdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-ldpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-mdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-mdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-xhdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsync/bin/res/drawable-xhdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-hdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-hdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-ldpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-mdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-mdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-xhdpi/ic_action_search.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/drawable-xhdpi/ic_launcher.png \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/layout/activity_main.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/menu/activity_main.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/values/strings.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/values/styles.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/values-v11/styles.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/res/values-v14/styles.xml \
-/Volumes/Data/src/AndroidAsync/AndroidAsyncSample/bin/AndroidManifest.xml \
diff --git a/AndroidAsyncSample/gen/com/koushikdutta/async/sample/BuildConfig.java b/AndroidAsyncSample/gen/com/koushikdutta/async/sample/BuildConfig.java
index b4b6385..9429b8f 100644
--- a/AndroidAsyncSample/gen/com/koushikdutta/async/sample/BuildConfig.java
+++ b/AndroidAsyncSample/gen/com/koushikdutta/async/sample/BuildConfig.java
@@ -2,5 +2,5 @@
package com.koushikdutta.async.sample;
public final class BuildConfig {
- public final static boolean DEBUG = false;
+ public final static boolean DEBUG = true;
} \ No newline at end of file
diff --git a/AndroidAsyncSample/src/com/koushikdutta/async/sample/MainActivity.java b/AndroidAsyncSample/src/com/koushikdutta/async/sample/MainActivity.java
index ee1a212..e102ddd 100644
--- a/AndroidAsyncSample/src/com/koushikdutta/async/sample/MainActivity.java
+++ b/AndroidAsyncSample/src/com/koushikdutta/async/sample/MainActivity.java
@@ -20,7 +20,7 @@ public class MainActivity extends Activity {
ImageView rommanager;
ImageView tether;
ImageView desksms;
-
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);