summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-02-27 16:48:53 +0100
committerFelix Fietkau <nbd@openwrt.org>2014-02-27 16:48:55 +0100
commit8f3c5a7b50eb4642108f104d33c043da6d0f14a4 (patch)
treeaa6559637db91e42a0cbef8b29701fd5274f49e5
parent334c38918063b5ece164624e20490021b2bff38a (diff)
downloadubus-8f3c5a7b50eb4642108f104d33c043da6d0f14a4.tar.gz
libubus: close file descriptor after passing it in the status msg
Simplifies handling of non-deferred requests Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--examples/server.c1
-rw-r--r--libubus-io.c3
2 files changed, 3 insertions, 1 deletions
diff --git a/examples/server.c b/examples/server.c
index bfad363..95eba5e 100644
--- a/examples/server.c
+++ b/examples/server.c
@@ -68,7 +68,6 @@ static void test_hello_reply(struct uloop_timeout *t)
pipe(fds);
ubus_request_set_fd(ctx, &req->req, fds[0]);
ubus_complete_deferred_request(ctx, &req->req, 0);
- close(fds[0]);
req->fd = fds[1];
req->timeout.cb = test_hello_fd_reply;
diff --git a/libubus-io.c b/libubus-io.c
index bc054b8..030d382 100644
--- a/libubus-io.c
+++ b/libubus-io.c
@@ -142,6 +142,9 @@ int __hidden ubus_send_msg(struct ubus_context *ctx, uint32_t seq,
if (ret < 0)
ctx->sock.eof = true;
+ if (fd >= 0)
+ close(fd);
+
return ret;
}