qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]