non-symmetric Unix dgram sockets and poll

2 messages, 2 authors, 2011-02-03 · open the first message on its own page

non-symmetric Unix dgram sockets and poll

From: Alban Crequy <hidden>
Date: 2011-02-02 17:38:58

Hi,

I have 3 Unix dgram sockets (sockA, sockB, sockC):
- sockA is connected to sockB.
- sockB is connected to sockC.
- sockC is not connected.

SockA cannot send any message to sockB because net/unix/af_unix.c::unix_may_send()
prevents it. Is there any reason for that restriction?

If it was possible to send that message, unix_dgram_poll() on sockB could be in a
situation where it needs to add the current process in 2 different wait queues:
- sk_sleep(sk) for POLLIN (messages coming from sockA)
- &unix_sk(other)->peer_wait for POLLOUT (to send messages to sockC)

Is it correct?

Thanks,
Alban

Re: non-symmetric Unix dgram sockets and poll

From: Rémi Denis-Courmont <hidden>
Date: 2011-02-03 08:45:46

Le mercredi 2 février 2011 19:36:40 Alban Crequy, vous avez écrit :
Hi,

I have 3 Unix dgram sockets (sockA, sockB, sockC):
- sockA is connected to sockB.
- sockB is connected to sockC.
- sockC is not connected.

SockA cannot send any message to sockB because
net/unix/af_unix.c::unix_may_send() prevents it. Is there any reason for
that restriction?
Yes, absolutely. When you connect() a socket, you expect to only *receive* 
packets from the specified peer.

-- 
Rémi Denis-Courmont
http://www.remlab.net/
http://fi.linkedin.com/in/remidenis
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help