[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC] Do not set SO_REUSEADDR on Windows
From: |
Stefan Weil |
Subject: |
Re: [Qemu-devel] [PATCH RFC] Do not set SO_REUSEADDR on Windows |
Date: |
Wed, 04 Sep 2013 19:31:05 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/20130803 Thunderbird/17.0.8 |
Am 04.09.2013 16:41, schrieb Peter Maydell:
> On 4 September 2013 15:27, Paolo Bonzini <address@hidden> wrote:
>> Il 04/09/2013 16:22, Sebastian Ottlik ha scritto:
>>> This patchset disabels all use of SO_REUSEADDR on Windows. On
>>> Windows systems the default behavior is equivalent to SO_REUSEADDR
>>> on other operating systems. SO_REUSEADDR can still be set but
>>> results in undesired bahvior instead. It may even lead to situations
>>> were system behavior is unspecified. More information on this can be
>>> found at:
>>> http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621.aspx
> Yep. The issue's come up before:
> https://lists.nongnu.org/archive/html/qemu-devel/2011-03/msg01794.html
> but I guess nobody ever got round to writing the patch.
>> Can you make a different patch that introduces a new function
>> qemu_set_reuseaddr is include/qemu/sockets.h & util/oslib-*, and
>> makes it a stub for Windows?
> Yes please, and include a comment in the Windows stub explaining why
> it does nothing (with the links to MSDN docs) because otherwise it's
> pretty unobvious and an invitation for somebody to incorrectly
> reinstate the brokenness. -- PMM
May I suggest a slightly different approach? Instead of a new function
qemu_set_reuseaddr I'd prefer extending the existing qemu_setsockopt.
These steps / patches are required:
1. Move *sock* lines from include/qemu-common.h to include/qemu/sockets.h
and addqemu/sockets.h to the include statements in bt-host.c and
linux-user/syscall.c (I hope this list is complete).
This step is needed because we don't want to add socket includes to
qemu-common.h (which would be needed when we add a function prototype
for qemu_setsockopt).
2. Replace the Win32 defines for qemu_getsockopt, qemu_setsockopt by
function
prototypes (see Linux getsockopt, setsockopt for reference) and
implement both functions in util/oslib-win32.c. Ignore SO_REUSEADDR in
qemu_setsockopt.
Using these two functions allows easy implementation of OS specific hacks
(we might need more in the future).
3. Revert commit efcb7e45290ecc8633f7c5bdf02ac86f6289fa7d. It is no longer
needed after patch 2.
Regards,
Stefan
- [Qemu-devel] [PATCH RFC] Do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH RFC 2/4] net: do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH RFC 1/4] gdbstub: do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH RFC 4/4] util: do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- [Qemu-devel] [PATCH RFC 3/4] slirp: do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04
- Re: [Qemu-devel] [PATCH RFC] Do not set SO_REUSEADDR on Windows, Paolo Bonzini, 2013/09/04
- Re: [Qemu-devel] [PATCH RFC] Do not set SO_REUSEADDR on Windows, Sebastian Ottlik, 2013/09/04