From abc981bf292fb361f8a509c3611ddf2ba2c43360 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 8 Mar 2016 15:27:30 +0000 Subject: [PATCH] io: bind to socket before creating QIOChannelSocket In the QIOChannelSocket test we create a socket file descriptor and then try to create a QIOChannelSocket. This works on Linux, but fails on Win32 because it is not valid to call getsockname() on an unbound socket. Reviewed-by: Paolo Bonzini Signed-off-by: Daniel P. Berrange --- tests/test-io-channel-socket.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test-io-channel-socket.c b/tests/test-io-channel-socket.c index f226e475c6..4c16da1add 100644 --- a/tests/test-io-channel-socket.c +++ b/tests/test-io-channel-socket.c @@ -470,10 +470,20 @@ static void test_io_channel_ipv4_fd(void) { QIOChannel *ioc; int fd = -1; + struct sockaddr_in sa = { + .sin_family = AF_INET, + .sin_addr = { + .s_addr = htonl(INADDR_LOOPBACK), + } + /* Leave port unset for auto-assign */ + }; + socklen_t salen = sizeof(sa); fd = socket(AF_INET, SOCK_STREAM, 0); g_assert_cmpint(fd, >, -1); + g_assert_cmpint(bind(fd, (struct sockaddr *)&sa, salen), ==, 0); + ioc = qio_channel_new_fd(fd, &error_abort); g_assert_cmpstr(object_get_typename(OBJECT(ioc)),