qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

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