Browse Source

log: add easy way to log hex blobs.

Use it in one case, and also fix another logging FIXME.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
ppa-0.6.1
Rusty Russell 9 years ago
parent
commit
bb0bf2b5ad
  1. 5
      daemon/cryptopkt.c
  2. 20
      daemon/log.c
  3. 16
      daemon/log.h
  4. 5
      daemon/peer.c

5
daemon/cryptopkt.c

@ -495,8 +495,9 @@ static struct io_plan *keys_exchanged(struct io_conn *conn,
neg->their_sessionpubkey,
sizeof(neg->their_sessionpubkey),
&sessionkey)) {
/* FIXME: Dump key in this case. */
log_unusual(neg->log, "Bad sessionkey");
log_unusual_blob(neg->log, "Bad sessionkey %s",
neg->their_sessionpubkey,
sizeof(neg->their_sessionpubkey));
return io_close(conn);
}

20
daemon/log.c

@ -359,6 +359,26 @@ void log_struct_(struct log *log, int level,
tal_free(ctx);
}
void log_blob_(struct log *log, enum log_level level, const char *fmt,
size_t len, ...)
{
va_list ap;
const void *blob;
const char *hex;
/* Macro wrappers ensure we only have one arg. */
va_start(ap, len);
blob = va_arg(ap, void *);
va_end(ap);
hex = tal_hexstr(log, blob, len);
if (level == -1)
log_add(log, fmt, hex);
else
log_(log, level, fmt, hex);
tal_free(hex);
}
void log_each_line_(const struct log_record *lr,
void (*func)(unsigned int skipped,
struct timerel time,

16
daemon/log.h

@ -42,6 +42,22 @@ void log_(struct log *log, enum log_level level, const char *fmt, ...)
void log_add(struct log *log, const char *fmt, ...) PRINTF_FMT(2,3);
void logv(struct log *log, enum log_level level, const char *fmt, va_list ap);
void log_blob_(struct log *log, enum log_level level, const char *fmt,
size_t len, ...)
PRINTF_FMT(3,5);
/* These must have %s where the blob is to go. */
#define log_add_blob(log, fmt, blob, len) \
log_blob_((log), -1, (fmt), (len), (char *)(blob))
#define log_debug_blob(log, fmt, blob, len) \
log_blob_((log), LOG_DBG, (fmt), (len), (char *)(blob))
#define log_info_blob(log, fmt, blob, len) \
log_blob_((log), LOG_INFORM, (fmt), (len), (char *)(blob))
#define log_unusual_blob(log, fmt, blob, len) \
log_blob_((log), LOG_UNUSUAL, (fmt), (len), (char *)(blob))
#define log_broken_blob(log, fmt, blob, len) \
log_blob_((log), LOG_BROKEN, (fmt), (len), (char *)(blob))
/* Makes sure ptr is a 'structtype', makes sure it's in loggable_structs. */
#define log_struct_check_(log, loglevel, fmt, structtype, ptr) \

5
daemon/peer.c

@ -3197,8 +3197,9 @@ static const struct bitcoin_tx *htlc_timeout_tx(const struct peer *peer,
static void reset_onchain_closing(struct peer *peer)
{
if (peer->onchain.tx) {
/* FIXME: Log old txid */
log_unusual(peer->log, "New anchor spend, forgetting old");
log_unusual_struct(peer->log,
"New anchor spend, forgetting old tx %s",
struct sha256_double, &peer->onchain.txid);
peer->onchain.tx = tal_free(peer->onchain.tx);
peer->onchain.resolved = NULL;
peer->onchain.htlcs = NULL;

Loading…
Cancel
Save