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 <pbonzini@redhat.com> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
5838d66e73
commit
abc981bf29
@ -470,10 +470,20 @@ static void test_io_channel_ipv4_fd(void)
|
|||||||
{
|
{
|
||||||
QIOChannel *ioc;
|
QIOChannel *ioc;
|
||||||
int fd = -1;
|
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);
|
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
g_assert_cmpint(fd, >, -1);
|
g_assert_cmpint(fd, >, -1);
|
||||||
|
|
||||||
|
g_assert_cmpint(bind(fd, (struct sockaddr *)&sa, salen), ==, 0);
|
||||||
|
|
||||||
ioc = qio_channel_new_fd(fd, &error_abort);
|
ioc = qio_channel_new_fd(fd, &error_abort);
|
||||||
|
|
||||||
g_assert_cmpstr(object_get_typename(OBJECT(ioc)),
|
g_assert_cmpstr(object_get_typename(OBJECT(ioc)),
|
||||||
|
Loading…
Reference in New Issue
Block a user