diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2020-10-26 21:31:16 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2020-10-26 21:31:16 +0000 |
commit | bc714f8001edbb26ebf07411cf92e9ba2f756b35 (patch) | |
tree | e0812fa851135a518209640876b1dc4dd9b7dfad /src/libunixonacid/textclient_server_init_fromsocket.c | |
parent | 7530e8cdd506ecec1f4ad3bbd55f94de5a6d63ac (diff) | |
download | skalibs-bc714f8001edbb26ebf07411cf92e9ba2f756b35.tar.xz |
Refactor textmessage/textclient with channel creation around ancil_*
Diffstat (limited to 'src/libunixonacid/textclient_server_init_fromsocket.c')
-rw-r--r-- | src/libunixonacid/textclient_server_init_fromsocket.c | 34 |
1 files changed, 3 insertions, 31 deletions
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 <string.h> #include <sys/uio.h> -#include <skalibs/djbunix.h> -#include <skalibs/unix-timed.h> -#include <skalibs/ancil.h> +#include <skalibs/allreadwrite.h> #include <skalibs/textmessage.h> #include <skalibs/textclient.h> #include <skalibs/posixishard.h> -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 ; } |