]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 5 Oct 2017 17:25:29 +0000 (20:25 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 5 Oct 2017 17:29:45 +0000 (20:29 +0300)
src/lib/test-istream-multiplex.c
src/lib/test-multiplex.c
src/lib/test-ostream-multiplex.c

index be3ee935d338aad01a75ab7e7372a17bdabd2e26..031069dab7983f31b523958b807b323e35be5c7c 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "test-lib.h"
 #include "ioloop.h"
+#include "fd-set-nonblock.h"
 #include "str.h"
 #include "crc32.h"
 #include "randgen.h"
@@ -284,6 +285,8 @@ static void test_istream_multiplex_stream(void)
 
        int fds[2];
        test_assert(pipe(fds) == 0);
+       fd_set_nonblock(fds[0], TRUE);
+       fd_set_nonblock(fds[1], TRUE);
        struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1);
        struct istream *is = i_stream_create_fd(fds[0], 10 + i_rand() % 10);
 
index ac9ca055b7741be0196e0229fe2dbd2af9d80128..3731665dc455308ef78df37af4e093cb9ce6da81 100644 (file)
@@ -3,6 +3,7 @@
 #include "test-lib.h"
 #include "ioloop.h"
 #include "str.h"
+#include "fd-set-nonblock.h"
 #include "istream.h"
 #include "istream-multiplex.h"
 #include "ostream.h"
@@ -83,6 +84,8 @@ static void setup_channel(struct test_channel *channel,
        channel->io = io_add_istream(is, test_istream_multiplex_stream_read,
                                     channel);
        test_assert(pipe(channel->fds) == 0);
+       fd_set_nonblock(channel->fds[0], TRUE);
+       fd_set_nonblock(channel->fds[1], TRUE);
        channel->in_alt = i_stream_create_fd(channel->fds[0], (size_t)-1);
        channel->out_alt = o_stream_create_fd(channel->fds[1], IO_BLOCK_SIZE);
        channel->io_alt = io_add_istream(channel->in_alt, test_istream_read_alt,
@@ -119,6 +122,8 @@ static void test_multiplex_stream(void) {
 
        int fds[2];
        test_assert(pipe(fds) == 0);
+       fd_set_nonblock(fds[0], TRUE);
+       fd_set_nonblock(fds[1], TRUE);
        struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1);
        struct istream *is = i_stream_create_fd(fds[0], (size_t)-1);
 
index ab7ad37b100f1fe90c78e637c474a6455773eb76..8dc0e2b03071eb35df65fa52e8d2becd116d2be6 100644 (file)
@@ -2,6 +2,7 @@
 
 #include "test-lib.h"
 #include "ioloop.h"
+#include "fd-set-nonblock.h"
 #include "str.h"
 #include "istream.h"
 #include "ostream-private.h"
@@ -107,6 +108,8 @@ static void test_ostream_multiplex_stream(void)
 
        int fds[2];
        test_assert(pipe(fds) == 0);
+       fd_set_nonblock(fds[0], TRUE);
+       fd_set_nonblock(fds[1], TRUE);
        struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1);
        struct istream *is = i_stream_create_fd(fds[0], (size_t)-1);