diff --git a/lightningd/status.c b/lightningd/status.c index 1e034ada5..453cbbbb9 100644 --- a/lightningd/status.c +++ b/lightningd/status.c @@ -58,24 +58,17 @@ void status_send_sync(const u8 *p) static void status_send_with_hdr(u16 type, const void *p, size_t len) { - be16 be_type, be_len; - - if (too_large(len + sizeof(be_type), type)) - len = 65535 - sizeof(be_type); - - be_type = cpu_to_be16(type); - be_len = cpu_to_be16(len + sizeof(be_type)); - assert(be16_to_cpu(be_len) == len + sizeof(be_type)); + u8 *msg = tal_arr(NULL, u8, 0); + towire_u16(&msg, type); + towire(&msg, p, len); + if (too_large(tal_len(msg), type)) + tal_resize(&msg, 65535); if (status_fd >= 0) { - if (!write_all(status_fd, &be_len, sizeof(be_len)) - || !write_all(status_fd, &be_type, sizeof(be_type)) - || !write_all(status_fd, p, len)) + if (!wire_sync_write(status_fd, msg)) err(1, "Writing out status %u len %zu", type, len); + tal_free(msg); } else { - u8 *msg = tal_arr(NULL, u8, sizeof(be_type) + len); - memcpy(msg, &be_type, sizeof(be_type)); - memcpy(msg + sizeof(be_type), p, len); daemon_conn_send(status_conn, take(msg)); } }