https://bugs.winehq.org/show_bug.cgi?id=17195
--- Comment #160 from Sebastian Lackner sebastian@fds-team.de --- I decided to check what the remaining differences are between my implementation and Adams patchset. I've rebased most of his patches for 1.7.14, and have just added my tests as a last patch (you can split it with 'git am'): http://ix.io/dT6
As suspected, there are various differences in the implementation, test results are here: http://ix.io/dT5 .
Failing tests in my implementation (and marked as todo_wine): * Its impossible to handle specific 0 byte reads correctly (without kernel patches), Adams implementation works well for those. * Based on the design decision to use SOCK_SEQPACKET there is an upper message size limit (which can be changed in /proc). * Some overlapped stuff needs to be fixed, my patches don't touch this part.
Failing tests in Adams implementation: * Writing to a pipe doesn't seem to block if the pipe "is full" - not sure if there are any applications that really needs this though. * Wrong error code when pipe is empty in non-blocking mode, should be ERROR_NO_DATA, but is ERROR_NO_MORE_ITEMS, could maybe confuse some applications? * Doesn't fix all GetNamedPipeHandleState issues. * ReadFile succeeds reading from INVALID_HANDLE_VALUE? Could also confuse some applications, when they depend the correct error code.
This is my attempt to quickly fix the issues 2-4 in his implementation by just adding one additional patch on top of it: http://ix.io/dTc
Regards, Sebastian