X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fio%2Ffdpass%2Ffdpass.c;h=63c46223691311f7db2eade98c961face21d4b34;hp=11208a9b652fa41d7c325db753ba5e5ba06cbe0c;hb=60e31637d7545a22844a3c0f46833031bce4295f;hpb=4f6d604ce616e70659b8494fd41ecd41e8fca30a;ds=sidebyside diff --git a/ccan/io/fdpass/fdpass.c b/ccan/io/fdpass/fdpass.c index 11208a9b..63c46223 100644 --- a/ccan/io/fdpass/fdpass.c +++ b/ccan/io/fdpass/fdpass.c @@ -12,17 +12,21 @@ static int do_fd_send(int fd, struct io_plan_arg *arg) return 0; return -1; } + if (arg->u2.s) + close(arg->u1.s); return 1; } struct io_plan *io_send_fd_(struct io_conn *conn, int fd, + bool fdclose, struct io_plan *(*next)(struct io_conn *, void *), void *next_arg) { struct io_plan_arg *arg = io_plan_arg(conn, IO_OUT); arg->u1.s = fd; + arg->u2.s = fdclose; return io_set_plan(conn, IO_OUT, do_fd_send, next, next_arg); }