version 1.255, 2017/05/27 21:02:56 |
version 1.255.2.2, 2018/04/09 13:34:10 |
Line 1244 soreceive(struct socket *so, struct mbuf |
|
Line 1244 soreceive(struct socket *so, struct mbuf |
|
if (m != NULL) |
if (m != NULL) |
goto dontblock; |
goto dontblock; |
error = so->so_error; |
error = so->so_error; |
if ((flags & MSG_PEEK) == 0) |
so->so_error = 0; |
so->so_error = 0; |
|
goto release; |
goto release; |
} |
} |
if (so->so_state & SS_CANTRCVMORE) { |
if (so->so_state & SS_CANTRCVMORE) { |
Line 2109 sockopt_set(struct sockopt *sopt, const |
|
Line 2108 sockopt_set(struct sockopt *sopt, const |
|
return error; |
return error; |
} |
} |
|
|
KASSERT(sopt->sopt_size == len); |
if (sopt->sopt_size < len) |
|
return EINVAL; |
|
|
memcpy(sopt->sopt_data, buf, len); |
memcpy(sopt->sopt_data, buf, len); |
|
sopt->sopt_retsize = len; |
|
|
return 0; |
return 0; |
} |
} |
|
|
Line 2169 sockopt_setmbuf(struct sockopt *sopt, st |
|
Line 2172 sockopt_setmbuf(struct sockopt *sopt, st |
|
return error; |
return error; |
} |
} |
|
|
KASSERT(sopt->sopt_size == len); |
if (sopt->sopt_size < len) |
|
return EINVAL; |
|
|
m_copydata(m, 0, len, sopt->sopt_data); |
m_copydata(m, 0, len, sopt->sopt_data); |
m_freem(m); |
m_freem(m); |
|
sopt->sopt_retsize = len; |
|
|
return 0; |
return 0; |
} |
} |
Line 2244 filt_soread(struct knote *kn, long hint) |
|
Line 2250 filt_soread(struct knote *kn, long hint) |
|
kn->kn_flags |= EV_EOF; |
kn->kn_flags |= EV_EOF; |
kn->kn_fflags = so->so_error; |
kn->kn_fflags = so->so_error; |
rv = 1; |
rv = 1; |
} else if (so->so_error) /* temporary udp error */ |
} else if (so->so_error) |
rv = 1; |
rv = 1; |
else if (kn->kn_sfflags & NOTE_LOWAT) |
else if (kn->kn_sfflags & NOTE_LOWAT) |
rv = (kn->kn_data >= kn->kn_sdata); |
rv = (kn->kn_data >= kn->kn_sdata); |
Line 2283 filt_sowrite(struct knote *kn, long hint |
|
Line 2289 filt_sowrite(struct knote *kn, long hint |
|
kn->kn_flags |= EV_EOF; |
kn->kn_flags |= EV_EOF; |
kn->kn_fflags = so->so_error; |
kn->kn_fflags = so->so_error; |
rv = 1; |
rv = 1; |
} else if (so->so_error) /* temporary udp error */ |
} else if (so->so_error) |
rv = 1; |
rv = 1; |
else if (((so->so_state & SS_ISCONNECTED) == 0) && |
else if (((so->so_state & SS_ISCONNECTED) == 0) && |
(so->so_proto->pr_flags & PR_CONNREQUIRED)) |
(so->so_proto->pr_flags & PR_CONNREQUIRED)) |