Sridhar Samudrala <sri@us.ibm.com> reported an error (EOPNOTSUPP)
after calling select().
The issue is that rshutdown(SHUT_WR) was called before select().
As part of shutdown, rsockets switches the underlying fd from
nonblocking to blocking to ensure that previously sent data has
completed. shutdown(SHUT_WR) indicates that the socket should be
kept open for receiving data.
Delay handling the actual shutdown unless SHUT_RDWR is specified,
or the socket is closed.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
struct rsocket *rs;
int ret = 0;
+ if (how != SHUT_RDWR)
+ return 0;
+
rs = idm_at(&idm, socket);
if (rs->fd_flags & O_NONBLOCK)
rs_set_nonblocking(rs, 0);