From 8e61dbc18a7b4d09e46e699e56c33be2fdd35df9 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 23 Feb 2022 23:24:47 +1100 Subject: [PATCH] Android: Try to fix 'unexpected status line' errors with texture packs from dropbox, addresses #933 --- .../src/main/java/com/classicube/MainActivity.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/android/app/src/main/java/com/classicube/MainActivity.java b/android/app/src/main/java/com/classicube/MainActivity.java index 4ea083ebd..dcfb98282 100644 --- a/android/app/src/main/java/com/classicube/MainActivity.java +++ b/android/app/src/main/java/com/classicube/MainActivity.java @@ -811,11 +811,24 @@ public class MainActivity extends Activity conn.setDoInput(true); conn.setRequestMethod(method); conn.setInstanceFollowRedirects(true); + + httpAddMethodHeaders(method); return 0; } catch (Exception ex) { return httpOnError(ex); } } + + static void httpAddMethodHeaders(String method) { + if (!method.equals("HEAD")) return; + + // Ever since dropbox switched to to chunked transfer encoding, + // sending a HEAD request to dropbox always seems to result in the + // next GET request failing with 'Unexpected status line' ProtocolException + // Seems to be a known issue: https://github.com/square/okhttp/issues/3689 + // Simplest workaround is to ask for connection to be closed after HEAD request + httpSetHeader("connection", "close"); + } public static void httpSetHeader(String name, String value) { conn.setRequestProperty(name, value);