]> 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 18:17:49 +0000 (21:17 +0300)
src/lib/test-istream-multiplex.c
src/lib/test-multiplex.c
src/lib/test-ostream-multiplex.c

index 25838c84cb0326ddc8956e2d6738e209df840457..fb114e712f695f968f62b5eab799bde2bac0964f 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, FALSE);
        struct istream *is = i_stream_create_fd(fds[0], 10 + rand() % 10, FALSE);
 
index b71e217ab85358c7e22ea1423b21a4f1c7647a6e..ca89f2c9eabf9faf656825e69279c07663985f7d 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, FALSE);
        channel->out_alt = o_stream_create_fd(channel->fds[1], IO_BLOCK_SIZE, FALSE);
        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, FALSE);
        struct istream *is = i_stream_create_fd(fds[0], (size_t)-1, FALSE);
 
index 20a243b5531fecc53b9fe0116bfbfa2c0ea8ca74..28584b503689a3f2796d1a7ef01375b8f475300c 100644 (file)
@@ -3,6 +3,7 @@
 #include "test-lib.h"
 #include "randgen.h"
 #include "ioloop.h"
+#include "fd-set-nonblock.h"
 #include "str.h"
 #include "istream.h"
 #include "ostream-private.h"
@@ -108,6 +109,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, FALSE);
        struct istream *is = i_stream_create_fd(fds[0], (size_t)-1, FALSE);