diff options
author | Koushik Dutta <koushd@gmail.com> | 2014-11-06 16:28:05 -0800 |
---|---|---|
committer | Koushik Dutta <koushd@gmail.com> | 2014-11-06 16:28:05 -0800 |
commit | 02b146297b392fce04642ca9ab3d653cf19c7424 (patch) | |
tree | 788b4c68dfea1b16301e1cb9a069b34bad5965d4 /AndroidAsync | |
parent | 609d581f793d530191a7950c495c48272c1887ef (diff) | |
download | AndroidAsync-02b146297b392fce04642ca9ab3d653cf19c7424.tar.gz AndroidAsync-02b146297b392fce04642ca9ab3d653cf19c7424.tar.bz2 AndroidAsync-02b146297b392fce04642ca9ab3d653cf19c7424.zip |
pass in the GetSocketData to the engine configurators.
Diffstat (limited to 'AndroidAsync')
3 files changed, 21 insertions, 9 deletions
diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLEngineConfigurator.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLEngineConfigurator.java index 36af9c1..755a50d 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLEngineConfigurator.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLEngineConfigurator.java @@ -3,5 +3,5 @@ package com.koushikdutta.async.http; import javax.net.ssl.SSLEngine; public interface AsyncSSLEngineConfigurator { - public void configureEngine(SSLEngine engine, String host, int port); + public void configureEngine(SSLEngine engine, AsyncHttpClientMiddleware.GetSocketData data, String host, int port); } diff --git a/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLSocketMiddleware.java b/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLSocketMiddleware.java index 01f3fbe..d557a31 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLSocketMiddleware.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/AsyncSSLSocketMiddleware.java @@ -57,12 +57,12 @@ public class AsyncSSLSocketMiddleware extends AsyncSocketMiddleware { engineConfigurators.clear(); } - protected SSLEngine createConfiguredSSLEngine(String host, int port) { + protected SSLEngine createConfiguredSSLEngine(GetSocketData data, String host, int port) { SSLContext sslContext = getSSLContext(); SSLEngine sslEngine = sslContext.createSSLEngine(); for (AsyncSSLEngineConfigurator configurator : engineConfigurators) { - configurator.configureEngine(sslEngine, host, port); + configurator.configureEngine(sslEngine, data, host, port); } return sslEngine; @@ -79,7 +79,7 @@ public class AsyncSSLSocketMiddleware extends AsyncSocketMiddleware { protected void tryHandshake(AsyncSocket socket, GetSocketData data, final Uri uri, final int port, final ConnectCallback callback) { AsyncSSLSocketWrapper.handshake(socket, uri.getHost(), port, - createConfiguredSSLEngine(uri.getHost(), port), + createConfiguredSSLEngine(data, uri.getHost(), port), trustManagers, hostnameVerifier, true, createHandshakeCallback(data, callback)); } diff --git a/AndroidAsync/src/com/koushikdutta/async/http/spdy/SpdyMiddleware.java b/AndroidAsync/src/com/koushikdutta/async/http/spdy/SpdyMiddleware.java index 74b08bd..b45f16a 100644 --- a/AndroidAsync/src/com/koushikdutta/async/http/spdy/SpdyMiddleware.java +++ b/AndroidAsync/src/com/koushikdutta/async/http/spdy/SpdyMiddleware.java @@ -39,13 +39,13 @@ public class SpdyMiddleware extends AsyncSSLSocketMiddleware { super(client); addEngineConfigurator(new AsyncSSLEngineConfigurator() { @Override - public void configureEngine(SSLEngine engine, String host, int port) { - configure(engine, host, port); + public void configureEngine(SSLEngine engine, GetSocketData data, String host, int port) { + configure(engine, data, host, port); } }); } - private void configure(SSLEngine engine, String host, int port) { + private void configure(SSLEngine engine, GetSocketData data, String host, int port) { if (!initialized && spdyEnabled) { initialized = true; try { @@ -83,6 +83,12 @@ public class SpdyMiddleware extends AsyncSSLSocketMiddleware { } } + // TODO: figure out why POST does not work if sending content-length header + // see above regarding app engine comment as to why: drive requires content-length + // but app engine sends a GO_AWAY if it sees a content-length... + if (!canSpdyRequest(data)) + return; + if (sslParameters != null) { try { byte[] protocols = concatLengthPrefixed( @@ -229,12 +235,18 @@ public class SpdyMiddleware extends AsyncSSLSocketMiddleware { } } - request.logv("\n" + request); final AsyncSpdyConnection.SpdySocket spdy = connection.newStream(headers, requestBody != null, true); callback.onConnectCompleted(null, spdy); } + private boolean canSpdyRequest(GetSocketData data) { + // TODO: figure out why POST does not work if sending content-length header + // see above regarding app engine comment as to why: drive requires content-length + // but app engine sends a GO_AWAY if it sees a content-length... + return data.request.getBody() == null; + } + @Override public Cancellable getSocket(GetSocketData data) { if (!spdyEnabled) @@ -249,7 +261,7 @@ public class SpdyMiddleware extends AsyncSSLSocketMiddleware { // TODO: figure out why POST does not work if sending content-length header // see above regarding app engine comment as to why: drive requires content-length // but app engine sends a GO_AWAY if it sees a content-length... - if (data.request.getBody() != null) + if (!canSpdyRequest(data)) return super.getSocket(data); // can we use an existing connection to satisfy this, or do we need a new one? |