http://bugs.winehq.org/show_bug.cgi?id=30020
Witold Baryluk baryluk-winehq@smp.if.uj.edu.pl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |baryluk-winehq@smp.if.uj.ed | |u.pl
--- Comment #14 from Witold Baryluk baryluk-winehq@smp.if.uj.edu.pl 2012-04-23 20:52:38 CDT --- It looks that application calls
typedef struct linger { u_short l_onoff; u_short l_linger; } linger;
linger l; setsockopt(socket_fd, SOL_SOCKET, SO_LINGER, &l, sizeof(l));
that it:
setsockopt(0x029, 0xffff, 0x80, some_pointer, 4);
based on
http://www.koders.com/c/fidC79035BEED7D3E043591E5B881A6F2D444287D5C.aspx
and
http://msdn.microsoft.com/en-us/library/windows/desktop/ms739165%28v=vs.85%2...
Basically SO_LINGER is also supported on Unix, but on Linux a struct have different definition (according to socket(7) manpage):
struct linger { int l_onoff; /* linger active */ int l_linger; /* how many seconds to linger for */ };
Temporary workaround would be to just ignore SO_LINGER calls, and return 0 (success), and hope it will work (because now probably application just sees 22 != 0 and does immiediete exit, but actually ignoring it may work). Full solution will be to create proper mapping in setsockopt and possibly for completion also in getsockopt.