diff --git a/plugins/libplugin-pay.c b/plugins/libplugin-pay.c index be6419aeff8c..d8e20266ebe3 100644 --- a/plugins/libplugin-pay.c +++ b/plugins/libplugin-pay.c @@ -533,7 +533,7 @@ static struct payment_result *tal_sendpay_result_from_json(const tal_t *ctx, msgtok = json_get_member(buffer, toks, "message"); rawmsgtok = json_get_member(buffer, datatok, "raw_message"); if (failcodetok == NULL || failcodetok->type != JSMN_PRIMITIVE || - failcodenametok == NULL || failcodenametok->type != JSMN_STRING || + (failcodenametok != NULL && failcodenametok->type != JSMN_STRING) || (erridxtok != NULL && erridxtok->type != JSMN_PRIMITIVE) || (errnodetok != NULL && errnodetok->type != JSMN_STRING) || (errchantok != NULL && errchantok->type != JSMN_STRING) || @@ -547,7 +547,11 @@ static struct payment_result *tal_sendpay_result_from_json(const tal_t *ctx, else result->raw_message = NULL; - result->failcodename = json_strdup(result, buffer, failcodenametok); + if (failcodenametok != NULL) + result->failcodename = json_strdup(result, buffer, failcodenametok); + else + result->failcodename = NULL; + json_to_u32(buffer, failcodetok, &result->failcode); result->message = json_strdup(result, buffer, msgtok);