From: Timo Sirainen Date: Thu, 5 Oct 2017 17:25:29 +0000 (+0300) Subject: lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking X-Git-Tag: 2.3.0.rc1~887 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c704b7fa16ac4fa95c1d84d82d93837ae5cf98e7;p=thirdparty%2Fdovecot%2Fcore.git lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking --- diff --git a/src/lib/test-istream-multiplex.c b/src/lib/test-istream-multiplex.c index be3ee935d3..031069dab7 100644 --- a/src/lib/test-istream-multiplex.c +++ b/src/lib/test-istream-multiplex.c @@ -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); diff --git a/src/lib/test-multiplex.c b/src/lib/test-multiplex.c index ac9ca055b7..3731665dc4 100644 --- a/src/lib/test-multiplex.c +++ b/src/lib/test-multiplex.c @@ -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); diff --git a/src/lib/test-ostream-multiplex.c b/src/lib/test-ostream-multiplex.c index ab7ad37b10..8dc0e2b030 100644 --- a/src/lib/test-ostream-multiplex.c +++ b/src/lib/test-ostream-multiplex.c @@ -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);