commit 80304f4c9269d7d4aba3bdd02802677de58572ed
parent 4d17586e94b89a6c4abcdf4622441715c46f0f78
Author: Iván Ávalos <avalos@disroot.org>
Date: Wed, 19 Jun 2024 10:48:01 -0600
[wallet] Less verbose HTTP logging + client resource cleanup
bug 0008920
Diffstat:
2 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/taler-kotlin-android/src/main/java/net/taler/common/HttpUtils.kt b/taler-kotlin-android/src/main/java/net/taler/common/HttpUtils.kt
@@ -32,6 +32,7 @@ fun getDefaultHttpClient(
withJson: Boolean = true,
timeoutMs: Long? = null,
followRedirect: Boolean = false,
+ logging: Boolean = true,
): HttpClient = HttpClient(OkHttp) {
expectSuccess = true
followRedirects = followRedirect
@@ -57,7 +58,7 @@ fun getDefaultHttpClient(
}
install(Logging) {
logger = Logger.ANDROID
- level = LogLevel.HEADERS
+ level = if (logging) LogLevel.INFO else LogLevel.NONE
}
}
diff --git a/wallet/src/main/java/net/taler/wallet/backend/NetworkInterface.kt b/wallet/src/main/java/net/taler/wallet/backend/NetworkInterface.kt
@@ -47,15 +47,17 @@ class NetworkInterface: Networking.RequestHandler {
sendResponse: (resp: Networking.ResponseInfo) -> Unit
) {
Log.d(TAG, "HTTP: handleRequest($req, $id")
- if (req.debug) debugHttpRequest(req)
requests[id] = GlobalScope.launch {
+ val client = getDefaultHttpClient(
+ timeoutMs = req.timeoutMs,
+ followRedirect = req.redirectMode == Networking.RedirectMode.Transparent,
+ logging = req.debug,
+ )
+
val resp = try {
// TODO: reuse the same client for every request
- getDefaultHttpClient(
- timeoutMs = req.timeoutMs,
- followRedirect = req.redirectMode == Networking.RedirectMode.Transparent,
- ).request {
+ client.request {
url(req.url)
method = req.method.toHttpMethod() ?: error("invalid method")
@@ -80,7 +82,12 @@ class NetworkInterface: Networking.RequestHandler {
} catch (e: SerializationException) {
Log.d(TAG, "Exception handling HTTP response", e)
null
- } ?: return@launch
+ } finally {
+ cleanupRequest(id)
+ client.close()
+ }
+
+ if (resp == null) return@launch
// HTTP response status code or 0 on error.
val status = if (resp.status.value in 200 until 300) resp.status.value else 0
@@ -113,14 +120,7 @@ class NetworkInterface: Networking.RequestHandler {
return true
}
- private fun debugHttpRequest(req: Networking.RequestInfo) {
- Log.d(TAG, "HTTP request: body = ${req.body}")
- req.headers.forEachIndexed { i, header ->
- Log.d(TAG, "HTTP: header[$i] = $header")
- }
- Log.d(TAG, "HTTP request: method = ${req.method}")
- Log.d(TAG, "HTTP request: redirectMode = ${req.redirectMode}")
- Log.d(TAG, "HTTP request: timeoutMs = ${req.timeoutMs}")
- Log.d(TAG, "HTTP request: url = ${req.url}")
+ private fun cleanupRequest(id: Int) {
+ requests.remove(id)
}
}
\ No newline at end of file