diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 639d865..d25cad0 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -2698,13 +2698,9 @@ sosetopt(struct socket *so, struct sockopt *sopt) sizeof tv); if (error) goto bad; - if (tv.tv_sec < 0 || tv.tv_usec < 0 || - tv.tv_usec >= 1000000) { - error = EDOM; + if ((error = itimerfix(&tv)) != 0) goto bad; - } val = tvtosbt(tv); - switch (sopt->sopt_name) { case SO_SNDTIMEO: so->so_snd.sb_timeo = val; @@ -2773,7 +2769,8 @@ sooptcopyout(struct sockopt *sopt, const void *buf, size_t len) int sogetopt(struct socket *so, struct sockopt *sopt) { - int error, optval; + uint64_t optval; + int error; struct linger l; struct timeval tv; #ifdef MAC