server: read/write now goes through connection fn's
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 <oyvind.harboe@zylin.com>
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user