From 566f4f198a2e1e7cc05502bec1db267965a5ccc6 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Mon, 21 Feb 2011 12:39:48 -0600 Subject: [PATCH] rx: Reset fd_set in LWP rxi_Sendmsg When we select() on the socket fd in rxi_Sendmsg, we do not reset the fd_set, and just use the same memory for any necessary subsequent select()s. However, if the select returned on EINTR, the fd_set may be cleared, and so we may try to select() on an empty fd_set forever. To be sure that we don't do that, reset the fd_set to the socket fd every time. Reviewed-on: http://gerrit.openafs.org/4028 Tested-by: BuildBot Reviewed-by: Jeffrey Altman (cherry picked from commit 63fb786c541926dbf03a9452288c6a938c7cd6c4) Change-Id: I4d0cc939065c39ca2478006e05fae025921af5b8 Reviewed-on: http://gerrit.openafs.org/4089 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/rx/rx_lwp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/rx/rx_lwp.c b/src/rx/rx_lwp.c index 2a81b0365..525743edc 100644 --- a/src/rx/rx_lwp.c +++ b/src/rx/rx_lwp.c @@ -474,6 +474,8 @@ rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags) while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) { if (err >= 0 || errno != EINTR) osi_Panic("rxi_sendmsg: select error %d.%d", err, errno); + FD_ZERO(sfds); + FD_SET(socket, sfds); } } if (sfds) -- 2.39.5