Skip to content

Commit

Permalink
Revert "OKHTTP Update to v3.8.1 (#98)"
Browse files Browse the repository at this point in the history
This reverts commit a3348d8.
  • Loading branch information
klinker24 committed Aug 17, 2017
1 parent 048514e commit 8d1b2ee
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 65 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'com.android.tools.build:gradle:2.3.2'
}
}

Expand Down
4 changes: 2 additions & 2 deletions library/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apply plugin: 'com.android.library'

dependencies {
compile 'com.klinkerapps:logger:1.0.3'
compile 'com.squareup.okhttp3:okhttp:3.8.1'
compile 'com.squareup.okhttp3:okhttp-urlconnection:3.8.1'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0'
}

android {
Expand Down
124 changes: 79 additions & 45 deletions library/src/main/java/com/android/mms/service_alt/MmsHttpClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,15 @@
import android.util.Log;

import com.android.mms.service_alt.exception.MmsHttpException;
import com.squareup.okhttp.ConnectionPool;
import com.squareup.okhttp.ConnectionSpec;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Protocol;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import com.squareup.okhttp.internal.Internal;
import com.squareup.okhttp.internal.huc.HttpURLConnectionImpl;
import com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
Expand All @@ -42,23 +51,12 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.SocketFactory;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;

import okhttp3.Authenticator;
import okhttp3.ConnectionPool;
import okhttp3.ConnectionSpec;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.Route;
import okhttp3.internal.huc.OkHttpsURLConnection;

/**
* MMS HTTP client for sending and downloading MMS messages
*/
Expand Down Expand Up @@ -96,7 +94,7 @@ public class MmsHttpClient {
* @param connectionPool The connection pool for creating an OKHttp client
*/
public MmsHttpClient(Context context, SocketFactory socketFactory, MmsNetworkManager hostResolver,
ConnectionPool connectionPool) {
ConnectionPool connectionPool) {
mContext = context;
mSocketFactory = socketFactory;
mHostResolver = hostResolver;
Expand All @@ -118,7 +116,7 @@ public MmsHttpClient(Context context, SocketFactory socketFactory, MmsNetworkMan
* @throws MmsHttpException For any failures
*/
public byte[] execute(String urlString, byte[] pdu, String method, boolean isProxySet,
String proxyHost, int proxyPort, MmsConfig.Overridden mmsConfig)
String proxyHost, int proxyPort, MmsConfig.Overridden mmsConfig)
throws MmsHttpException {
Log.d(TAG, "HTTP: " + method + " " + redactUrlForNonVerbose(urlString)
+ (isProxySet ? (", proxy=" + proxyHost + ":" + proxyPort) : "")
Expand Down Expand Up @@ -240,47 +238,83 @@ public byte[] execute(String urlString, byte[] pdu, String method, boolean isPro
*/
private HttpURLConnection openConnection(URL url, final Proxy proxy) throws MalformedURLException {
final String protocol = url.getProtocol();
final OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.protocols(Arrays.asList(Protocol.HTTP_1_1))
.connectionSpecs(Arrays.asList(ConnectionSpec.CLEARTEXT))
.connectionPool(new ConnectionPool(3, 60000, TimeUnit.MILLISECONDS))
.authenticator(new Authenticator() {
@Override
public Request authenticate(Route route, Response response) throws IOException {
return null;
}
})
.proxySelector(new ProxySelector() {
@Override
public List<Proxy> select(URI uri) {
if (proxy != null) {
return Arrays.asList(proxy);
} else {
return new ArrayList<Proxy>();
}
OkHttpClient okHttpClient;
if (protocol.equals("http")) {
okHttpClient = new OkHttpClient();
okHttpClient.setFollowRedirects(false);
okHttpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1));
okHttpClient.setProxySelector(new ProxySelector() {
@Override
public List<Proxy> select(URI uri) {
if (proxy != null) {
return Arrays.asList(proxy);
} else {
return new ArrayList<Proxy>();
}
}

@Override
public void connectFailed(URI uri, SocketAddress address, IOException failure) {
@Override
public void connectFailed(URI uri, SocketAddress address, IOException failure) {

}
});
}
});
okHttpClient.setAuthenticator(new com.squareup.okhttp.Authenticator() {
@Override
public Request authenticate(Proxy proxy, Response response) throws IOException {
return null;
}

if (protocol.equals("http")) {
builder.followRedirects(false)
.socketFactory(SocketFactory.getDefault());
@Override
public Request authenticateProxy(Proxy proxy, Response response) throws IOException {
return null;
}
});
okHttpClient.setConnectionSpecs(Arrays.asList(ConnectionSpec.CLEARTEXT));
okHttpClient.setConnectionPool(new ConnectionPool(3, 60000));
okHttpClient.setSocketFactory(SocketFactory.getDefault());
Internal.instance.setNetwork(okHttpClient, mHostResolver);

if (proxy != null) {
builder.proxy(proxy);
okHttpClient.setProxy(proxy);
}

return new HttpURLConnectionImpl(url, okHttpClient);
} else if (protocol.equals("https")) {
builder.hostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier())
.sslSocketFactory(HttpsURLConnection.getDefaultSSLSocketFactory());
okHttpClient = new OkHttpClient();
okHttpClient.setProtocols(Arrays.asList(Protocol.HTTP_1_1));
HostnameVerifier verifier = HttpsURLConnection.getDefaultHostnameVerifier();
okHttpClient.setHostnameVerifier(verifier);
okHttpClient.setSslSocketFactory(HttpsURLConnection.getDefaultSSLSocketFactory());
okHttpClient.setProxySelector(new ProxySelector() {
@Override
public List<Proxy> select(URI uri) {
return Arrays.asList(proxy);
}

@Override
public void connectFailed(URI uri, SocketAddress address, IOException failure) {

}
});
okHttpClient.setAuthenticator(new com.squareup.okhttp.Authenticator() {
@Override
public Request authenticate(Proxy proxy, Response response) throws IOException {
return null;
}

@Override
public Request authenticateProxy(Proxy proxy, Response response) throws IOException {
return null;
}
});
okHttpClient.setConnectionSpecs(Arrays.asList(ConnectionSpec.CLEARTEXT));
okHttpClient.setConnectionPool(new ConnectionPool(3, 60000));
Internal.instance.setNetwork(okHttpClient, mHostResolver);

return new HttpsURLConnectionImpl(url, okHttpClient);
} else {
throw new MalformedURLException("Invalid URL or unrecognized protocol " + protocol);
}

return new OkHttpsURLConnection(url, builder.build());
}

private static void logHttpHeaders(Map<String, List<String>> headers) {
Expand Down Expand Up @@ -370,7 +404,7 @@ private static void addLocaleToHttpAcceptLanguage(StringBuilder builder, Locale
* @return The HTTP param with macro resolved to real value
*/
private static String resolveMacro(Context context, String value,
MmsConfig.Overridden mmsConfig) {
MmsConfig.Overridden mmsConfig) {
if (TextUtils.isEmpty(value)) {
return value;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,20 +20,21 @@
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkRequest;
import android.net.NetworkInfo;
import android.net.SSLCertificateSocketFactory;
import android.os.Build;
import android.os.SystemClock;

import com.klinker.android.logger.Log;

import com.android.mms.service_alt.exception.MmsNetworkException;
import com.squareup.okhttp.ConnectionPool;

import java.net.InetAddress;
import java.util.concurrent.TimeUnit;

import okhttp3.ConnectionPool;
import java.net.UnknownHostException;

public class MmsNetworkManager {
public class MmsNetworkManager implements com.squareup.okhttp.internal.Network {
private static final String TAG = "MmsNetworkManager";
// Timeout used to call ConnectivityManager.requestNetwork
private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 60 * 1000;
Expand Down Expand Up @@ -119,10 +120,10 @@ public Network acquireNetwork() throws MmsNetworkException {
mMmsRequestCount += 1;
if (mNetwork != null) {
// Already available
android.util.Log.d(TAG, "MmsNetworkManager: already available");
Log.d(TAG, "MmsNetworkManager: already available");
return mNetwork;
}
android.util.Log.d(TAG, "MmsNetworkManager: start new network request");
Log.d(TAG, "MmsNetworkManager: start new network request");
// Not available, so start a new request
newRequest();
final long shouldEnd = SystemClock.elapsedRealtime() + NETWORK_ACQUIRE_TIMEOUT_MILLIS;
Expand All @@ -131,7 +132,7 @@ public Network acquireNetwork() throws MmsNetworkException {
try {
this.wait(waitTime);
} catch (InterruptedException e) {
android.util.Log.w(TAG, "MmsNetworkManager: acquire network wait interrupted");
Log.w(TAG, "MmsNetworkManager: acquire network wait interrupted");
}
if (mNetwork != null || permissionError) {
// Success
Expand All @@ -141,7 +142,7 @@ public Network acquireNetwork() throws MmsNetworkException {
waitTime = shouldEnd - SystemClock.elapsedRealtime();
}
// Timed out, so release the request and fail
android.util.Log.d(TAG, "MmsNetworkManager: timed out");
Log.d(TAG, "MmsNetworkManager: timed out");
releaseRequestLocked(mNetworkCallback);
throw new MmsNetworkException("Acquiring network timed out");
}
Expand All @@ -154,7 +155,7 @@ public void releaseNetwork() {
synchronized (this) {
if (mMmsRequestCount > 0) {
mMmsRequestCount -= 1;
android.util.Log.d(TAG, "MmsNetworkManager: release, count=" + mMmsRequestCount);
Log.d(TAG, "MmsNetworkManager: release, count=" + mMmsRequestCount);
if (mMmsRequestCount < 1) {
releaseRequestLocked(mNetworkCallback);
}
Expand All @@ -172,7 +173,7 @@ private void newRequest() {
@Override
public void onAvailable(Network network) {
super.onAvailable(network);
android.util.Log.d(TAG, "NetworkCallbackListener.onAvailable: network=" + network);
Log.d(TAG, "NetworkCallbackListener.onAvailable: network=" + network);
synchronized (MmsNetworkManager.this) {
mNetwork = network;
MmsNetworkManager.this.notifyAll();
Expand All @@ -182,7 +183,7 @@ public void onAvailable(Network network) {
@Override
public void onLost(Network network) {
super.onLost(network);
android.util.Log.d(TAG, "NetworkCallbackListener.onLost: network=" + network);
Log.d(TAG, "NetworkCallbackListener.onLost: network=" + network);
synchronized (MmsNetworkManager.this) {
releaseRequestLocked(this);
MmsNetworkManager.this.notifyAll();
Expand All @@ -204,7 +205,7 @@ public void onLost(Network network) {
connectivityManager.requestNetwork(
mNetworkRequest, mNetworkCallback);
} catch (SecurityException e) {
android.util.Log.e(TAG, "permission exception... skipping it for testing purposes", e);
Log.e(TAG, "permission exception... skipping it for testing purposes", e);
permissionError = true;
}
}
Expand All @@ -221,7 +222,7 @@ private void releaseRequestLocked(ConnectivityManager.NetworkCallback callback)
try {
connectivityManager.unregisterNetworkCallback(callback);
} catch (Exception e) {
android.util.Log.e(TAG, "couldn't unregister", e);
Log.e(TAG, "couldn't unregister", e);
}
}
resetLocked();
Expand All @@ -244,6 +245,18 @@ private void resetLocked() {

private static final InetAddress[] EMPTY_ADDRESS_ARRAY = new InetAddress[0];

@Override
public InetAddress[] resolveInetAddresses(String host) throws UnknownHostException {
Network network = null;
synchronized (this) {
if (mNetwork == null) {
return EMPTY_ADDRESS_ARRAY;
}
network = mNetwork;
}
return network.getAllByName(host);
}

private ConnectivityManager getConnectivityManager() {
if (mConnectivityManager == null) {
mConnectivityManager = (ConnectivityManager) mContext.getSystemService(
Expand All @@ -254,7 +267,7 @@ private ConnectivityManager getConnectivityManager() {

private ConnectionPool getOrCreateConnectionPoolLocked() {
if (mConnectionPool == null) {
mConnectionPool = new ConnectionPool(httpMaxConnections, httpKeepAliveDurationMs, TimeUnit.MILLISECONDS);
mConnectionPool = new ConnectionPool(httpMaxConnections, httpKeepAliveDurationMs);
}
return mConnectionPool;
}
Expand Down Expand Up @@ -295,7 +308,7 @@ public String getApnName() {
Network network = null;
synchronized (this) {
if (mNetwork == null) {
android.util.Log.d(TAG, "MmsNetworkManager: getApnName: network not available");
Log.d(TAG, "MmsNetworkManager: getApnName: network not available");
mNetworkRequest = new NetworkRequest.Builder()
.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
Expand All @@ -309,7 +322,8 @@ public String getApnName() {
if (mmsNetworkInfo != null) {
apnName = mmsNetworkInfo.getExtraInfo();
}
android.util.Log.d(TAG, "MmsNetworkManager: getApnName: " + apnName);
Log.d(TAG, "MmsNetworkManager: getApnName: " + apnName);
return apnName;
}

}

0 comments on commit 8d1b2ee

Please sign in to comment.