Merge pull request #1568 from bemusementpark/fix-body

Fix leak in Response#body
This commit is contained in:
Andrew 2024-07-25 09:51:35 +09:30 committed by GitHub
commit 64c72248e8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -115,18 +115,26 @@ object HTTP {
}
Verb.DELETE -> request.delete()
}
lateinit var response: Response
try {
val connection: OkHttpClient = if (timeout != HTTP.timeout) { // Custom timeout
if (useSeedNodeConnection) {
throw IllegalStateException("Setting a custom timeout is only allowed for requests to snodes.")
return try {
when {
// Custom timeout
timeout != HTTP.timeout -> {
if (useSeedNodeConnection) {
throw IllegalStateException("Setting a custom timeout is only allowed for requests to snodes.")
}
getDefaultConnection(timeout)
}
useSeedNodeConnection -> seedNodeConnection
else -> defaultConnection
}.newCall(request.build()).execute().use { response ->
when (val statusCode = response.code) {
200 -> response.body!!.bytes()
else -> {
Log.d("Loki", "${verb.rawValue} request to $url failed with status code: $statusCode.")
throw HTTPRequestFailedException(statusCode, null)
}
}
getDefaultConnection(timeout)
} else {
if (useSeedNodeConnection) seedNodeConnection else defaultConnection
}
response = connection.newCall(request.build()).execute()
} catch (exception: Exception) {
Log.d("Loki", "${verb.rawValue} request to $url failed due to error: ${exception.localizedMessage}.")
@ -135,14 +143,5 @@ object HTTP {
// Override the actual error so that we can correctly catch failed requests in OnionRequestAPI
throw HTTPRequestFailedException(0, null, "HTTP request failed due to: ${exception.message}")
}
return when (val statusCode = response.code) {
200 -> {
response.body!!.bytes()
}
else -> {
Log.d("Loki", "${verb.rawValue} request to $url failed with status code: $statusCode.")
throw HTTPRequestFailedException(statusCode, null)
}
}
}
}