Fix NPE during json parsing (#414)

This commit is contained in:
KirillPamPam
2024-02-05 18:48:47 +04:00
committed by GitHub
parent 5e94e521a3
commit de7207840a

View File

@@ -52,12 +52,15 @@ abstract class ResponseParser<T> {
) )
} }
while (parser.nextToken() != JsonToken.END_OBJECT) { while (parser.nextToken() != JsonToken.END_OBJECT) {
val field = parser.currentName val field = parser.currentName ?: break
state = process(parser, json, field, state) state = process(parser, json, field, state)
} }
} catch (e: JsonParseException) { } catch (e: JsonParseException) {
log.warn("Failed to parse JSON from upstream: ${e.message}") log.warn("Failed to parse JSON from upstream: ${e.message}")
} }
if (state.error != null && state.id == null) {
state = state.copy(id = JsonRpcResponse.NumberId(0))
}
if (state.isReady) { if (state.isReady) {
return state return state
} }
@@ -161,7 +164,7 @@ abstract class ResponseParser<T> {
val field = parser.currentName() val field = parser.currentName()
if (field == "code" && parser.currentToken == JsonToken.VALUE_NUMBER_INT) { if (field == "code" && parser.currentToken == JsonToken.VALUE_NUMBER_INT) {
code = parser.intValue code = parser.intValue
} else if (field == "message" && parser.currentToken == JsonToken.VALUE_STRING) { } else if ((field == "message" || field == "error") && parser.currentToken == JsonToken.VALUE_STRING) {
message = parser.valueAsString message = parser.valueAsString
} else if (field == "data") { } else if (field == "data") {
when (val value = parser.nextToken()) { when (val value = parser.nextToken()) {