File tree Expand file tree Collapse file tree 2 files changed +33
-17
lines changed 
main/kotlin/org/equeim/tremotesf/rpc 
test/kotlin/org/equeim/tremotesf/rpc Expand file tree Collapse file tree 2 files changed +33
-17
lines changed Original file line number Diff line number Diff line change @@ -48,24 +48,24 @@ internal class OkHttpCallback<ResponseArguments : Any>(
4848                if  (response.isSuccessful) Log .DEBUG  else  Log .ERROR ,
4949                " Received response headers for RPC request with $context : status is ${response.status} " 
5050            )
51-             if  (! response.isSuccessful) {
52-                 resumeWithException(
53-                     when  (response.code) {
54-                         HttpURLConnection .HTTP_UNAUTHORIZED  ->  RpcRequestError .AuthenticationError (
55-                             response,
56-                             requestHeaders
57-                         )
58- 
59-                         else  ->  RpcRequestError .UnsuccessfulHttpStatusCode (
60-                             response =  response,
61-                             responseBody =  body?.string(),
62-                             requestHeaders =  requestHeaders
63-                         )
64-                     }
65-                 )
66-                 return 
67-             }
6851            try  {
52+                 if  (! response.isSuccessful) {
53+                     resumeWithException(
54+                         when  (response.code) {
55+                             HttpURLConnection .HTTP_UNAUTHORIZED  ->  RpcRequestError .AuthenticationError (
56+                                 response,
57+                                 requestHeaders
58+                             )
59+ 
60+                             else  ->  RpcRequestError .UnsuccessfulHttpStatusCode (
61+                                 response =  response,
62+                                 responseBody =  body.string(),
63+                                 requestHeaders =  requestHeaders
64+                             )
65+                         }
66+                     )
67+                     return 
68+                 }
6969                if  (body.contentLength() ==  0L ) {
7070                    throw  SerializationException (" Response does not have a body" 
7171                }
Original file line number Diff line number Diff line change @@ -184,6 +184,22 @@ class RpcClientTest {
184184        assertThrows<RpcRequestError .NetworkError > { client.getSessionStats() }
185185    }
186186
187+     @ParameterizedTest
188+     @ValueSource(booleans =  [true , false ])
189+     fun  `Check connection error when reading response body on http status code error` errorDuringValidation :  Boolean ) = 
190+         runTest {
191+             if  (! errorDuringValidation) {
192+                 enqueueSuccessfulValidation()
193+             }
194+             server.enqueue(
195+                 MockResponse .Builder ()
196+                     .code(HttpURLConnection .HTTP_INTERNAL_ERROR )
197+                     .body(" lol" 
198+                     .onResponseBody(SocketEffect .ShutdownConnection ).build()
199+             )
200+             assertThrows<RpcRequestError .NetworkError > { client.getSessionStats() }
201+         }
202+ 
187203    @ParameterizedTest
188204    @ValueSource(booleans =  [true , false ])
189205    fun  `Check http status code error` errorDuringValidation :  Boolean ) =  runTest {
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments