From 6dd07801d4e5eb10dbf409275a105c82d977f623 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Mon, 20 Mar 2017 06:54:14 +1030 Subject: [PATCH] lightningd/connection: add fd support. Signed-off-by: Rusty Russell --- lightningd/connection.c | 10 ++++++++++ lightningd/connection.h | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/lightningd/connection.c b/lightningd/connection.c index 95d1bc2de..978bc5b9e 100644 --- a/lightningd/connection.c +++ b/lightningd/connection.c @@ -1,4 +1,5 @@ #include "connection.h" +#include #include #include @@ -15,6 +16,10 @@ struct io_plan *daemon_conn_write_next(struct io_conn *conn, { const u8 *msg = msg_dequeue(&dc->out); if (msg) { + int fd = msg_is_fd(msg); + if (fd >= 0) + return io_send_fd(conn, fd, true, + daemon_conn_write_next, dc); return io_write_wire(conn, take(msg), daemon_conn_write_next, dc); } else if (dc->msg_queue_cleared_cb) { @@ -51,3 +56,8 @@ void daemon_conn_send(struct daemon_conn *dc, const u8 *msg) { msg_enqueue(&dc->out, msg); } + +void daemon_conn_send_fd(struct daemon_conn *dc, int fd) +{ + msg_enqueue_fd(&dc->out, fd); +} diff --git a/lightningd/connection.h b/lightningd/connection.h index 8f05b08dd..9694e23fb 100644 --- a/lightningd/connection.h +++ b/lightningd/connection.h @@ -46,6 +46,11 @@ void daemon_conn_init(tal_t *ctx, struct daemon_conn *dc, int fd, */ void daemon_conn_send(struct daemon_conn *dc, const u8 *msg); +/** + * daemon_conn_send_fd - Enqueue a file descriptor to be sent (closed after) + */ +void daemon_conn_send_fd(struct daemon_conn *dc, int fd); + /** * daemon_conn_write_next - Continue writing from the msg-queue *