diff options
author | ru <ru@FreeBSD.org> | 2001-02-27 13:48:07 +0000 |
---|---|---|
committer | ru <ru@FreeBSD.org> | 2001-02-27 13:48:07 +0000 |
commit | 9000b1de10b8503c6a833fe174f067439c5893c7 (patch) | |
tree | cbca9e8851b5764ad77540cb62d6fdc79ecb0424 /sys/kern/uipc_socket.c | |
parent | bb70e1687a5a72cc582496d32293aed2b63f5647 (diff) | |
download | FreeBSD-src-9000b1de10b8503c6a833fe174f067439c5893c7.zip FreeBSD-src-9000b1de10b8503c6a833fe174f067439c5893c7.tar.gz |
In soshutdown(), use SHUT_{RD,WR,RDWR} instead of FREAD and FWRITE.
Also, return EINVAL if `how' is invalid, as required by POSIX spec.
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r-- | sys/kern/uipc_socket.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 4243504..f4237a0 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -958,10 +958,12 @@ soshutdown(so, how) { register struct protosw *pr = so->so_proto; - how++; - if (how & FREAD) + if (!(how == SHUT_RD || how == SHUT_WR || how == SHUT_RDWR)) + return (EINVAL); + + if (how != SHUT_WR) sorflush(so); - if (how & FWRITE) + if (how != SHUT_RD) return ((*pr->pr_usrreqs->pru_shutdown)(so)); return (0); } |