diff --git a/libcore/src/main/assets/sdk_versions/com.mapbox.android.core b/libcore/src/main/assets/sdk_versions/com.mapbox.android.core index 82a0a174c..dd7849cc4 100644 --- a/libcore/src/main/assets/sdk_versions/com.mapbox.android.core +++ b/libcore/src/main/assets/sdk_versions/com.mapbox.android.core @@ -1,2 +1,2 @@ -libcore/1.4.0-SNAPSHOT +libcore/1.4.1-SNAPSHOT v1 diff --git a/libtelemetry/src/full/java/com/mapbox/android/telemetry/MapboxTelemetry.java b/libtelemetry/src/full/java/com/mapbox/android/telemetry/MapboxTelemetry.java index 3ba47cfe5..0d63997b8 100644 --- a/libtelemetry/src/full/java/com/mapbox/android/telemetry/MapboxTelemetry.java +++ b/libtelemetry/src/full/java/com/mapbox/android/telemetry/MapboxTelemetry.java @@ -24,6 +24,7 @@ import android.support.v4.content.LocalBroadcastManager; import android.util.Log; + import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; @@ -225,8 +226,16 @@ private boolean isUserAgentValid(String userAgent) { private void initializeTelemetryClient() { if (configurationClient == null) { - this.configurationClient = new ConfigurationClient(applicationContext, - TelemetryUtils.createFullUserAgent(userAgent, applicationContext), sAccessToken.get(), new OkHttpClient()); + if (BuildConfig.DEBUG) { + // Strict mode work around : https://github.com/square/okhttp/issues/3537 + this.configurationClient = new ConfigurationClient(applicationContext, + TelemetryUtils.createFullUserAgent(userAgent, applicationContext), sAccessToken.get(), + TelemetryUtils.createOkHttpClientWithStrictModeWorkAround()); + } else { + this.configurationClient = new ConfigurationClient(applicationContext, + TelemetryUtils.createFullUserAgent(userAgent, applicationContext), sAccessToken.get(), + new OkHttpClient()); + } } if (certificateBlacklist == null) { diff --git a/libtelemetry/src/main/assets/sdk_versions/com.mapbox.android.telemetry b/libtelemetry/src/main/assets/sdk_versions/com.mapbox.android.telemetry index 21f0f793b..1390e349f 100644 --- a/libtelemetry/src/main/assets/sdk_versions/com.mapbox.android.telemetry +++ b/libtelemetry/src/main/assets/sdk_versions/com.mapbox.android.telemetry @@ -1,2 +1,2 @@ -libtelemetry/4.7.0-SNAPSHOT +libtelemetry/4.7.1-SNAPSHOT v1 diff --git a/libtelemetry/src/main/java/com/mapbox/android/telemetry/TelemetryUtils.java b/libtelemetry/src/main/java/com/mapbox/android/telemetry/TelemetryUtils.java index d00504988..825704e48 100644 --- a/libtelemetry/src/main/java/com/mapbox/android/telemetry/TelemetryUtils.java +++ b/libtelemetry/src/main/java/com/mapbox/android/telemetry/TelemetryUtils.java @@ -8,12 +8,17 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.net.TrafficStats; import android.os.BatteryManager; import android.os.Build; import android.support.annotation.Nullable; import android.telephony.TelephonyManager; import android.text.TextUtils; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; @@ -26,6 +31,9 @@ import com.mapbox.android.core.MapboxSdkInfoForUserAgentGenerator; +import javax.net.SocketFactory; + +import okhttp3.OkHttpClient; import okio.Buffer; import static com.mapbox.android.telemetry.MapboxTelemetryConstants.MAPBOX_SHARED_PREFERENCES; @@ -292,4 +300,39 @@ static boolean adjustWakeUpMode(Context context) { } return false; } + + static OkHttpClient createOkHttpClientWithStrictModeWorkAround() { + return new OkHttpClient().newBuilder() + .socketFactory(new SocketFactory() { + SocketFactory socketFactory = SocketFactory.getDefault(); + private static final int THREAD_ID = 10000; + + @Override + public Socket createSocket(String host, int port) throws IOException, UnknownHostException { + TrafficStats.setThreadStatsTag(THREAD_ID); + return socketFactory.createSocket(host, port); + } + + @Override + public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws + IOException, UnknownHostException { + TrafficStats.setThreadStatsTag(THREAD_ID); + return socketFactory.createSocket(host, port, localHost, localPort); + } + + @Override + public Socket createSocket(InetAddress host, int port) throws IOException { + TrafficStats.setThreadStatsTag(THREAD_ID); + return socketFactory.createSocket(host, port); + } + + @Override + public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws + IOException { + TrafficStats.setThreadStatsTag(THREAD_ID); + return socketFactory.createSocket(address, port, localAddress, localPort); + } + }) + .build(); + } }