mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
d4ddebd55a
It's not currently encrypted, but at least you get some idea now why an HTLC failed. We (ab)use HTTP error codes for the moment. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
42 lines
871 B
C
42 lines
871 B
C
#include "failure.h"
|
|
#include "protobuf_convert.h"
|
|
#include <ccan/tal/str/str.h>
|
|
|
|
/* FIXME: Crypto! */
|
|
const u8 *failinfo_create(const tal_t *ctx,
|
|
secp256k1_context *secpctx,
|
|
const struct pubkey *id,
|
|
u32 error_code,
|
|
const char *reason)
|
|
{
|
|
FailInfo *f = tal(ctx, FailInfo);
|
|
u8 *arr;
|
|
|
|
fail_info__init(f);
|
|
f->id = pubkey_to_proto(f, secpctx, id);
|
|
f->error_code = error_code;
|
|
if (reason)
|
|
f->reason = tal_strdup(f, reason);
|
|
else
|
|
f->reason = NULL;
|
|
|
|
arr = tal_arr(ctx, u8, fail_info__get_packed_size(f));
|
|
fail_info__pack(f, arr);
|
|
tal_free(f);
|
|
return arr;
|
|
}
|
|
|
|
FailInfo *failinfo_unwrap(const tal_t *ctx, const void *data, size_t len)
|
|
{
|
|
struct ProtobufCAllocator *prototal = make_prototal(ctx);
|
|
FailInfo *f;
|
|
|
|
f = fail_info__unpack(prototal, len, data);
|
|
if (f)
|
|
steal_from_prototal(ctx, prototal, f);
|
|
else
|
|
tal_free(prototal);
|
|
|
|
return f;
|
|
}
|