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

WineHQ Bugzilla wine-bugs at winehq.org
Fri Mar 11 14:29:31 CST 2022


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

--- Comment #7 from Jinoh Kang <jinoh.kang.kr at gmail.com> ---
(In reply to Zebediah Figura from comment #6)
> (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?

Heuristics.  Actually it would require *both* remedies in order for the final
solution to be plausible at all.

> 
> > - 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.

Combined with heuristics above, I think this won't happen that much frequently
in practice.

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

Linux maybe, but Darwin...

-- 
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