[PATCH 2/3] server: Implement an interface change notification object (try 2).

Erich E. Hoover erich.e.hoover at gmail.com
Thu Dec 5 14:58:12 CST 2013


This patch implements the SIO_ADDRESS_LIST_CHANGE call inside of the
server.  The implementation uses a per-socket queue so that when a
socket is destroyed prior to a notification event then that socket's
async operations are all appropriately woken up.  Only one interface
change notification object exists at a time, this object is destroyed
whenever there are no sockets expecting events and is then re-created
as necessary.

This attempt contains several revisions:
1) ifchange_poll_event now uses a non-blocking recv() and checks for
EWOULDBLOCK/EAGAIN.
2) ifchange_poll_event now causes a wake up and reports errors (if one occurs).
3) ifchange_poll_event loops over all NLMSGs within a message buffer.
4) all of the ifchange code is now within an "#ifdef
HAVE_LINUX_RTNETLINK_H" block so that it is completely unused when
this header is unavailable.
5) the WSA_FLAG_OVERLAPPED define has been removed since it is
contained within winsock2.h.
6) the comment spacing for "struct ifchange", "struct object_ops
ifchange_ops", and "struct fd_ops ifchange_fd_ops" has been reduced to
the minimum necessary spacing to keep the comments at the same level.
7) the space after "(struct ifchange *)" and "(struct nlmsghdr*)" have
been removed.
8) the fprintf for unsupported platforms has been moved out to an
equivalent statement in ws2_32 (part of patch 1).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-server-Implement-an-interface-change-notification-ob.patch
Type: text/x-diff
Size: 15529 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20131205/57d9b2a5/attachment-0001.patch>


More information about the wine-patches mailing list