if (gdb_con->closed)
return ERROR_SERVER_REMOTE_CLOSED;
- if (write_socket(connection->fd_out, data, len) == len)
+ if (connection_write(connection, data, len) == len)
{
return ERROR_OK;
}
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)
{
int server_register_commands(struct command_context *context);
+int connection_write(struct connection *connection, const void *data, int len);
+int connection_read(struct connection *connection, void *data, int len);
+
/**
* Used by server_loop(), defined in server_stubs.c, httpd.c, or ecosboard.c
*/
if (tclc->tc_outerror)
return ERROR_SERVER_REMOTE_CLOSED;
- wlen = write_socket(connection->fd, data, len);
+ wlen = connection_write(connection, data, len);
if (wlen == len)
return ERROR_OK;
struct tcl_connection *tclc;
unsigned char in[256];
- rlen = read_socket(connection->fd, &in, sizeof(in));
+ rlen = connection_read(connection, &in, sizeof(in));
if (rlen <= 0) {
if (rlen < 0)
LOG_ERROR("error during read: %s", strerror(errno));
if (t_con->closed)
return ERROR_SERVER_REMOTE_CLOSED;
- if (write_socket(connection->fd_out, data, len) == len)
+ if (connection_write(connection, data, len) == len)
{
return ERROR_OK;
}
struct telnet_connection *t_con = connection->priv;
struct command_context *command_context = connection->cmd_ctx;
- bytes_read = read_socket(connection->fd, buffer, TELNET_BUFFER_SIZE);
+ bytes_read = connection_read(connection, buffer, TELNET_BUFFER_SIZE);
if (bytes_read == 0)
return ERROR_SERVER_REMOTE_CLOSED;