tipc: Simplify prohibition of listen and accept for connectionless sockets
authorYing Xue <ying.xue@windriver.com>
Wed, 6 Jul 2011 10:01:13 +0000 (06:01 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Sun, 18 Sep 2011 02:55:12 +0000 (22:55 -0400)
Modifies the proto_ops structure used by TIPC DGRAM and RDM sockets
so that calls to listen() and accept() are handled by existing kernel
"unsupported operation" routines, and eliminates the related checks
in the listen and accept routines used by SEQPACKET and STREAM sockets
that are no longer needed.

Signed-off-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
net/tipc/socket.c

index 2f90beba282b193d0878336718e4457ae714b7d9..9440a3d48ca04755dc5cff871bd5a3d258af2760 100644 (file)
@@ -1483,9 +1483,7 @@ static int listen(struct socket *sock, int len)
 
        lock_sock(sk);
 
-       if (sock->state == SS_READY)
-               res = -EOPNOTSUPP;
-       else if (sock->state != SS_UNCONNECTED)
+       if (sock->state != SS_UNCONNECTED)
                res = -EINVAL;
        else {
                sock->state = SS_LISTENING;
@@ -1513,10 +1511,6 @@ static int accept(struct socket *sock, struct socket *new_sock, int flags)
 
        lock_sock(sk);
 
-       if (sock->state == SS_READY) {
-               res = -EOPNOTSUPP;
-               goto exit;
-       }
        if (sock->state != SS_LISTENING) {
                res = -EINVAL;
                goto exit;
@@ -1793,11 +1787,11 @@ static const struct proto_ops msg_ops = {
        .bind           = bind,
        .connect        = connect,
        .socketpair     = sock_no_socketpair,
-       .accept         = accept,
+       .accept         = sock_no_accept,
        .getname        = get_name,
        .poll           = poll,
        .ioctl          = sock_no_ioctl,
-       .listen         = listen,
+       .listen         = sock_no_listen,
        .shutdown       = shutdown,
        .setsockopt     = setsockopt,
        .getsockopt     = getsockopt,