From bc714f8001edbb26ebf07411cf92e9ba2f756b35 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Mon, 26 Oct 2020 21:31:16 +0000 Subject: Refactor textmessage/textclient with channel creation around ancil_* --- .../textclient_server_init_fromsocket.c | 34 ++-------------------- 1 file changed, 3 insertions(+), 31 deletions(-) (limited to 'src/libunixonacid/textclient_server_init_fromsocket.c') diff --git a/src/libunixonacid/textclient_server_init_fromsocket.c b/src/libunixonacid/textclient_server_init_fromsocket.c index 4964524..a662cfc 100644 --- a/src/libunixonacid/textclient_server_init_fromsocket.c +++ b/src/libunixonacid/textclient_server_init_fromsocket.c @@ -4,45 +4,17 @@ #include #include -#include -#include -#include +#include #include #include #include -static int getfd (void *p) -{ - return ((int *)p)[0] ; -} - -static int one (void *p) -{ - (void)p ; - return 1 ; -} - -static int sendit (void *p) -{ - int *fd = p ; - return ancil_send_fd(fd[0], fd[1], '|') ; -} - int textclient_server_init_fromsocket (textmessage_receiver_t *in, textmessage_sender_t *syncout, textmessage_sender_t *asyncout, char const *before, size_t beforelen, char const *after, size_t afterlen, tain_t const *deadline, tain_t *stamp) { - int fd[3] = { textmessage_sender_fd(syncout) } ; struct iovec v ; if (sanitize_read(textmessage_timed_receive(in, &v, deadline, stamp)) <= 0) return 0 ; if (v.iov_len != beforelen || memcmp(v.iov_base, before, beforelen)) return (errno = EPROTO, 0) ; - if (pipenbcoe(fd+1) < 0) return 0 ; - if (!timed_flush(fd, &getfd, &one, &sendit, deadline, stamp)) goto err ; - if (!textmessage_timed_send(syncout, after, afterlen, deadline, stamp)) goto err ; - textmessage_sender_init(asyncout, fd[2]) ; - if (!textmessage_timed_send(asyncout, after, afterlen, deadline, stamp)) goto err ; + if (!textmessage_create_send_channel(textmessage_sender_fd(syncout), asyncout, after, afterlen, deadline, stamp)) return 0 ; + if (!textmessage_timed_send(syncout, after, afterlen, deadline, stamp)) return 0 ; return 1 ; - - err: - fd_close(fd[2]) ; - fd_close(fd[1]) ; - return 0 ; } -- cgit v1.3.1