On 03/13/2018 03:09 PM, Ulrich Windl wrote:
Guoqing Jiang <[email protected]> schrieb am 13.03.2018 um 05:00 in Nachricht
<[email protected]>:
On 03/08/2018 07:24 PM, Ulrich Windl wrote:
Hi!
What surprises me most is that a connect(...O_NONBLOCK) actually blocks:
EINPROGRESS
The socket is non-blocking and the connection cannot be
com-
pleted immediately.
Maybe it is because that the socket is created by sock_create_kern, and
O_NONBLOCK flag is not worked since __sctp_connect has the following
description.
/* in-kernel sockets don't generally have a file allocated to them
* if all they do is call sock_create_kern().
*/
if (sk->sk_socket->file)
f_flags = sk->sk_socket->file->f_flags;
timeo = sock_sndtimeo(sk, f_flags & O_NONBLOCK);
But O_NONBLOCK is still passed to sock_sndtimeo() (unless the intention was "f_flags
& ~O_NONBLOCK").
If I am not reading wrong, the O_NONBLOCK doesn't have effective above
since f_flags is still 0.
So, in this case, timeo is set to sk->sk_sndtimeo. In sctp_wait_for_connect
you also can see nonblock is only work when timeo is set to 0.
if (!*timeo_p)
goto do_nonblock;
Thanks,
Guoqing
_______________________________________________
Users mailing list: [email protected]
https://lists.clusterlabs.org/mailman/listinfo/users
Project Home: http://www.clusterlabs.org
Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
Bugs: http://bugs.clusterlabs.org