http://bugs.winehq.org/show_bug.cgi?id=29164
--- Comment #3 from acDev admin@myac.msk.ru 2011-11-25 13:03:36 CST --- (In reply to comment #1)
Sorry to bother, it may be obvious to you but can you elaborate a bit more about it? What program is affected and how did you reach that conclusion? I really would like to understand and others less experienced like me might find it helpful too.
My console IOCP server is used under windows (XP and later) and under wine (1.3.12 and later). I had to do specifically for the wine option in config file that allows you to read remote_addr from different positions. Here is my code:
procedure TIOCPServer.ExtractAddresses(ChangeAddr: Boolean = False); var PLoc, PRem: PSockAddrIn; LLoc, LRem: integer; begin Server.FGetAcceptExSockaddrs(FRecvBuf, FAddrOffset, Addr_Buf_Len, Addr_Buf_Len, PLoc, LLoc, PRem, LRem); FillChar(FLocalAddr, SizeOf(FLocalAddr), 0); FillChar(FRemoteAddr, SizeOf(FRemoteAddr), 0); if ChangeAddr then begin // this is for WINE only !!! if SizeOf(FLocalAddr) = LRem then FLocalAddr := PRem^; if SizeOf(FRemoteAddr) = LLoc then FRemoteAddr := PLoc^; end else begin if SizeOf(FLocalAddr) = LLoc then FLocalAddr := PLoc^; if SizeOf(FRemoteAddr) = LRem then FRemoteAddr := PRem^; end; end;