From 4b99ad0b7ba5a22c98f14e4775e7b2d2d05179e2 Mon Sep 17 00:00:00 2001 From: Alexander Vdolainen Date: Thu, 18 Mar 2021 14:16:06 +0200 Subject: [PATCH] eport_write function; --- src/eport.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/eport.c b/src/eport.c index db68327..cfe507a 100644 --- a/src/eport.c +++ b/src/eport.c @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -52,7 +53,25 @@ ssize_t eport_read(FILE *stream, char *buffer, size_t buffer_size) ssize_t eport_write(FILE *stream, char *buffer, size_t buffer_size) { - return -1; + int fd = fileno(stream); + int16_t port_msg_len = (buffer_size << 8) | ((buffer_size >> 8) & 0xFF); + ssize_t wr = 0; + struct iovec msg[2]; + + if(buffer_size <= 0) { + errno = EINVAL; + return -1; + } + + /* write length and message itself */ + msg[0].iov_base = &port_msg_len; + msg[0].iov_len = sizeof(int16_t); + msg[1].iov_base = buffer; + msg[1].iov_len = buffer_size; + + wr = writev(fd, msg, 2); + + return wr; } int eport_ejabberd_msgread(char *buffer, size_t buffer_size,