[Bug 10648] gRPC library fails to send RPC packets correctly (nonblocking send() should not perform partial writes)

WineHQ Bugzilla wine-bugs at winehq.org
Tue Mar 1 13:43:39 CST 2022


https://bugs.winehq.org/show_bug.cgi?id=10648

Zebediah Figura <z.figura12 at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|ABANDONED                   |---
     Ever confirmed|0                           |1
                 CC|                            |z.figura12 at gmail.com
             Status|CLOSED                      |REOPENED
          Component|-unknown                    |winsock
            Summary|Async WSASend does not send |gRPC library fails to send
                   |all bytes.                  |RPC packets correctly
                   |                            |(nonblocking send() should
                   |                            |not perform partial writes)

--- Comment #6 from Zebediah Figura <z.figura12 at gmail.com> ---
(In reply to Jinoh Kang from comment #5)
> Requesting to reopen the ticket.
> 
> The gRPC library relies on the all-or-none behaviour of nonblocking send()
> on Winsock.  All applications relying on gRPC thus fails to transmit RPC
> packets properly.
> 
> It's possible to patch gRPC instead [1] so that it properly handles partial
> writes, but it is not always feasible in proprietary software applications.

I've reopened, but fixing applications is preferable if at all possible. It's
not clear that any other applications actually care about short write
behaviour.

> 
> Possible directions for the fix include:
> 
> - In sock_send(), test if it's possible to actually send the full stream
> data before calling send().

How?

> - On partial write, queue up the rest of the buffer and report success.

This seems to me like the only option feasible right now, although it's
obviously far from ideal.

Of course, we could also try to introduce an extra socket option or flag into
the kernel.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list