summaryrefslogtreecommitdiffstats
path: root/sys/netsmb/smb_trantcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netsmb/smb_trantcp.c')
-rw-r--r--sys/netsmb/smb_trantcp.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/sys/netsmb/smb_trantcp.c b/sys/netsmb/smb_trantcp.c
index 4c273cd..5db6b7e 100644
--- a/sys/netsmb/smb_trantcp.c
+++ b/sys/netsmb/smb_trantcp.c
@@ -94,18 +94,12 @@ nb_setsockopt_int(struct socket *so, int level, int name, int val)
return sosetopt(so, &sopt);
}
-static __inline int
-nb_poll(struct nbpcb *nbp, int events, struct thread *td)
-{
- return sopoll(nbp->nbp_tso, events, NULL, td);
-}
-
static int
nbssn_rselect(struct nbpcb *nbp, struct timeval *tv, int events,
struct thread *td)
{
struct timeval atv, rtv, ttv;
- int ncoll, timo, error;
+ int ncoll, timo, error, revents;
if (tv) {
atv = *tv;
@@ -128,16 +122,18 @@ retry:
/* XXX: Should be done when the thread is initialized. */
TAILQ_INIT(&td->td_selq);
- error = nb_poll(nbp, events, td);
+ revents = sopoll(nbp->nbp_tso, events, NULL, td);
mtx_lock(&sellock);
- if (error) {
+ if (revents) {
error = 0;
goto done;
}
if (tv) {
getmicrouptime(&rtv);
- if (timevalcmp(&rtv, &atv, >=))
+ if (timevalcmp(&rtv, &atv, >=)) {
+ error = EWOULDBLOCK;
goto done;
+ }
ttv = atv;
timevalsub(&ttv, &rtv);
timo = tvtohz(&ttv);
OpenPOWER on IntegriCloud