Bladeren bron

Merge pull request #8385 from nextcloud/fix-is-internet-walled-check

Fix ConnectivityService.isInternetWalled() check when content length is -1
Tobias Kaminsky 4 jaren geleden
bovenliggende
commit
3c6415147b

+ 2 - 1
src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.java

@@ -74,7 +74,8 @@ class ConnectivityServiceImpl implements ConnectivityService {
 
             int status = get.execute(client);
 
-            boolean result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() == 0);
+            // Content-Length is not available when using chunked transfer encoding, so check for -1 as well
+            boolean result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
 
             get.releaseConnection();
 

+ 6 - 0
src/test/java/com/nextcloud/client/network/ConnectivityServiceTest.kt

@@ -276,6 +276,12 @@ class ConnectivityServiceTest {
             assertFalse(connectivityService.isInternetWalled)
         }
 
+        @Test
+        fun `status 204 and no content length means internet is not walled`() {
+            mockResponse(contentLength = -1, status = HttpStatus.SC_NO_CONTENT)
+            assertFalse(connectivityService.isInternetWalled)
+        }
+
         @Test
         fun `other status than 204 means internet is walled`() {
             mockResponse(contentLength = 0, status = HttpStatus.SC_GONE)