[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] broken socket events on win32 qemu
From: |
Andrew Baumann |
Subject: |
[Qemu-devel] broken socket events on win32 qemu |
Date: |
Mon, 7 Mar 2016 07:23:12 +0000 |
Hi Daniel,
This commit ("char: convert from GIOChannel to QIOChannel"):
https://github.com/qemu/qemu/commit/9894dc0cdcc397ee5b26370bc53da6d360a363c2
... appears to have broken socket events for character devices on Win32. For
example, I can no longer connect to a GDB stub (started with: "-gdb
tcp:127.0.0.1:1234"), since tcp_chr_accept is never called.
Without having looked very closely at the code, I suspect the problem may be
that we've lost the special-case treatment of socket handles as distinct from
file descriptors on Win32 (they are different namespaces, and different APIs
are needed). The previous version of qemu-char.c special-cased sockets in
io_channel_from_socket():
-#ifdef _WIN32
- chan = g_io_channel_win32_new_socket(fd);
-#else
- chan = g_io_channel_unix_new(fd);
-#endif
... but I don't see anything equivalent in io/channel-socket.c. Am I looking in
the wrong place?
BTW, The same change introduces another problem on win32: server sockets like
the GDB example above fail on getpeername() with "Unable to query remote socket
address: Unknown error". This seems to be caused by a definition of ENOTCONN
that is not WSAENOTCONN. I'm still trying to figure out why that is, and how to
best fix it.
Regards,
Andrew
- [Qemu-devel] broken socket events on win32 qemu,
Andrew Baumann <=