Pass the stdout file descriptor from the client as well as stdin and use

them for control clients directly instead of passing everything via the
client.
This commit is contained in:
nicm
2020-05-26 08:41:47 +00:00
parent 6f03e49e68
commit ea610a3119
5 changed files with 91 additions and 35 deletions

8
file.c
View File

@ -242,7 +242,9 @@ file_write(struct client *c, const char *path, int flags, const void *bdata,
cf->path = xstrdup("-");
fd = STDOUT_FILENO;
if (c == NULL || c->flags & CLIENT_ATTACHED) {
if (c == NULL ||
(c->flags & CLIENT_ATTACHED) ||
(c->flags & CLIENT_CONTROL)) {
cf->error = EBADF;
goto done;
}
@ -311,7 +313,9 @@ file_read(struct client *c, const char *path, client_file_cb cb, void *cbdata)
cf->path = xstrdup("-");
fd = STDIN_FILENO;
if (c == NULL || c->flags & CLIENT_ATTACHED) {
if (c == NULL ||
(c->flags & CLIENT_ATTACHED) ||
(c->flags & CLIENT_CONTROL)) {
cf->error = EBADF;
goto done;
}