On 02/28/2012 03:28 PM, David Lamparter wrote:
On Tue, Feb 28, 2012 at 11:47:39AM +0100, Rodrigo Moya wrote:
quoted
quoted
- slow readers: dropping packets vs blocking the sender. Although
datagrams are not reliable on IP, datagrams on Unix sockets are
never
quoted
lost. So if one receiver has its buffer full the sender is blocked
instead of dropping packets. That way we guarantee a reliable
communication channel.
This sounds like a terribly nice way to f*ck the entire D-Bus system by
having one broken (or malicious) desktop application. What's the
intended way of coping with users that block the socket by not reading?
-David L.
The problem is that D-bus expects a reliable transport method (TCP or
SOCK_STREAM Unix socks) but this is not the case with multicast Unix
sockets. Since our implementation is for SOCK_SEQPACKET and SOCK_DGRAM
socket types.
So, you have to either add another layer to the D-bus protocol to make
it reliable (acks, retransmissions, flow control, etc) or avoid losing
D-bus messages (by blocking the sender if one of the receivers has its
buffer full).
Regards,
Javier