15
15
#include <lightningd/log.h>
16
16
#include <lightningd/subd.h>
17
17
#include <sodium/randombytes.h>
18
+ #include <wallet/wallet.h>
18
19
19
20
/* Record of failures. */
20
21
enum pay_failure_type {
@@ -208,15 +209,14 @@ add_pay_failure(struct pay *pay,
208
209
209
210
static void
210
211
json_pay_success (struct pay * pay ,
211
- const struct preimage * payment_preimage )
212
+ const struct sendpay_result * r )
212
213
{
213
214
struct command * cmd = pay -> cmd ;
214
215
struct json_result * response ;
215
216
216
217
response = new_json_result (cmd );
217
218
json_object_start (response , NULL );
218
- json_add_hex (response , "payment_preimage" ,
219
- payment_preimage , sizeof (* payment_preimage ));
219
+ json_add_payment_fields (response , r -> payment );
220
220
json_add_num (response , "getroute_tries" , pay -> getroute_tries );
221
221
json_add_num (response , "sendpay_tries" , pay -> sendpay_tries );
222
222
json_add_route (response , "route" ,
@@ -239,6 +239,15 @@ static void json_pay_failure(struct pay *pay,
239
239
240
240
switch (r -> errorcode ) {
241
241
case PAY_IN_PROGRESS :
242
+ json_object_start (data , NULL );
243
+ json_add_num (data , "getroute_tries" , pay -> getroute_tries );
244
+ json_add_num (data , "sendpay_tries" , pay -> sendpay_tries );
245
+ json_add_payment_fields (data , r -> payment );
246
+ json_add_failures (data , "failures" , & pay -> pay_failures );
247
+ json_object_end (data );
248
+ msg = r -> details ;
249
+ break ;
250
+
242
251
case PAY_RHASH_ALREADY_USED :
243
252
case PAY_STOPPED_RETRYING :
244
253
json_object_start (data , NULL );
@@ -341,7 +350,7 @@ static void json_pay_sendpay_resolve(const struct sendpay_result *r,
341
350
/* If we succeed, hurray */
342
351
if (r -> succeeded ) {
343
352
log_info (pay -> cmd -> ld -> log , "pay(%p): Success" , pay );
344
- json_pay_success (pay , & r -> preimage );
353
+ json_pay_success (pay , r );
345
354
return ;
346
355
}
347
356
@@ -552,11 +561,15 @@ static bool json_pay_try(struct pay *pay)
552
561
static void json_pay_stop_retrying (struct pay * pay )
553
562
{
554
563
struct sendpay_result * sr ;
564
+
555
565
sr = tal (pay , struct sendpay_result );
556
566
sr -> succeeded = false;
557
567
if (pay -> in_sendpay ) {
558
568
/* Still in sendpay. Return with PAY_IN_PROGRESS */
559
569
sr -> errorcode = PAY_IN_PROGRESS ;
570
+ sr -> payment = wallet_payment_by_hash (sr ,
571
+ pay -> cmd -> ld -> wallet ,
572
+ & pay -> payment_hash );
560
573
sr -> details = "Stopped retrying during payment attempt; "
561
574
"continue monitoring with "
562
575
"pay or listpayments" ;
0 commit comments