qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 0/5] Do not set SO_REUSEADDR on Windows


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH v5 0/5] Do not set SO_REUSEADDR on Windows
Date: Wed, 18 Sep 2013 14:42:23 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Sep 16, 2013 at 04:23:44PM +0200, Sebastian Ottlik wrote:
> This patchset disables most uses of SO_REUSEADDR on Windows and replaces it 
> with
> calls to the new function socket_set_fast_reuse. On Windows systems the 
> default
> behaviour is equivalent to SO_REUSEADDR on other operating systems. 
> SO_REUSEADDR
> can still be set but results in undesired behaviour in most cases. It may even
> lead to situations were system behaviour is unspecified. More information on
> this can be found at:
> http://msdn.microsoft.com/en-us/library/windows/desktop/ms740621.aspx
> 
> I originally encountered this issue when accidentally launching two QEMU
> instances with identical GDB ports at the same time. In which case QEMU won't
> fail as one might expect.
> 
> Note that patch #4 fails checkpatch.pl. This is intentional (see v3 changes).
> 
> v5 Changes:
> - Fixed inverted silent flag on all call sites of socket_set_fast_reuse
> 
> v4 Changes:
> - Added the silent flag to socket_set_fast_reuse controlling error reporting
>   One location where SO_REUSEADDR was set would report errors if setting the
>   option failed. Keeping the reporting code there would be somewhat unclean, 
> so
>   I moved it to socket_set_fast_reuse. A side effect of this was that the 
> error
>   reporting was added for all locations that now use socket_set_fast_reuse. 
> Here
>   a new flag is added to control error reporting, which means this patchset
>   won't change QEMU behaviour (except for not setting SO_REUSEADDR on 
> Windows).
> 
> - Fixed a commit message typo
> 
> - Rebased to current master (2d1fe1873a984d1c2c89ffa3d12949cafc718551).
> 
> v3 Changes:
> - Fixed coding style issues.
>   According to checkpatch.pl patch #4 still introduces style errors as tabs 
> are
>   used instead of space for some indentation. I keept the tabs to stay
>   consistent with the sourrounding code, as tabs seem to be used consitently 
> in
>   parts (all?) of the slirp code.
> 
> - Changed patch #3 to keep SO_REUSEADDR for multicast sockets on windows and
>   added an explainatory comment.
> 
> - Rebased to current master (94c2b6aff43cdfcfdfb552773a6b6b973a72ef0b).
> 
> v2 Changes:
> 
> - Introduce a function with os specific implementation instead of using #ifdef
>   I named it socket_set_fast_reuse instead of the suggested qemu_set_reuseaddr
>   so the name better reflects what the function actually does.
> 
> gdbstub.c              |    6 ++----
> include/qemu/sockets.h |    1 +
> net/socket.c           |   18 ++++++++++--------
> slirp/misc.c           |    3 +--
> slirp/socket.c         |    4 +---
> slirp/tcp_subr.c       |    6 ++----
> slirp/udp.c            |    4 ++--
> util/oslib-posix.c     |   14 ++++++++++++++
> util/oslib-win32.c     |   10 ++++++++++
> util/qemu-sockets.c    |    6 +++---
> 10 files changed, 46 insertions(+), 26 deletions(-)
> 
> util: add socket_set_fast_reuse function which will
> gdbstub: call socket_set_fast_reuse instead of
> net: call socket_set_fast_reuse instead of setting
> slirp: call socket_set_fast_reuse instead of setting
> util: call socket_set_fast_reuse instead of setting
> 

Reviewed-by: Stefan Hajnoczi <address@hidden>



reply via email to

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