From cb2dba2c1257e0aa80edc9a171a9c5cd7b2822f8 Mon Sep 17 00:00:00 2001 From: Øyvind Harboe Date: Mon, 27 Sep 2010 09:24:51 +0200 Subject: server: read/write now goes through connection fn's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit depending on whether the connection is over a socket or pipe, the read is done differently. pipes can return -1 when writing 0 bytes, make 0 byte writes a successful no-op. 0 byte writes falls out naturally of tcl server code. Signed-off-by: Øyvind Harboe --- src/server/server.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/server/server.c') diff --git a/src/server/server.c b/src/server/server.c index e67be13e..1c556638 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -513,6 +513,33 @@ int server_quit(void) return ERROR_OK; } +int connection_write(struct connection *connection, const void *data, int len) +{ + if (len == 0) + { + /* successful no-op. Sockets and pipes behave differently here... */ + return 0; + } + if (connection->service->type == CONNECTION_TCP) + { + return write_socket(connection->fd_out, data, len); + } else + { + return write(connection->fd_out, data, len); + } +} + +int connection_read(struct connection *connection, void *data, int len) +{ + if (connection->service->type == CONNECTION_TCP) + { + return read_socket(connection->fd, data, len); + } else + { + return read(connection->fd, data, len); + } +} + /* tell the server we want to shut down */ COMMAND_HANDLER(handle_shutdown_command) { -- cgit v1.2.3