MFC r279821:
In TCP, connect() can return incorrect error code EINVAL instead of EADDRINUSE or ECONNREFUSED PR: 196035 Differential Revision: https://reviews.freebsd.org/D1982 Reported by: Mark Nunberg <mnunberg@haskalah.org> Submitted by: Harrison Grundy <harrison.grundy@astrodoggroup.com> Reviewed by: adrian, jch, glebius, gnn Approved by: jhb
This commit is contained in:
parent
c3c407f451
commit
47cc02d0cc
@ -475,8 +475,12 @@ tcp_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
|
||||
inp = sotoinpcb(so);
|
||||
KASSERT(inp != NULL, ("tcp_usr_connect: inp == NULL"));
|
||||
INP_WLOCK(inp);
|
||||
if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) {
|
||||
error = EINVAL;
|
||||
if (inp->inp_flags & INP_TIMEWAIT) {
|
||||
error = EADDRINUSE;
|
||||
goto out;
|
||||
}
|
||||
if (inp->inp_flags & INP_DROPPED) {
|
||||
error = ECONNREFUSED;
|
||||
goto out;
|
||||
}
|
||||
tp = intotcpcb(inp);
|
||||
@ -522,8 +526,12 @@ tcp6_usr_connect(struct socket *so, struct sockaddr *nam, struct thread *td)
|
||||
inp = sotoinpcb(so);
|
||||
KASSERT(inp != NULL, ("tcp6_usr_connect: inp == NULL"));
|
||||
INP_WLOCK(inp);
|
||||
if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) {
|
||||
error = EINVAL;
|
||||
if (inp->inp_flags & INP_TIMEWAIT) {
|
||||
error = EADDRINUSE;
|
||||
goto out;
|
||||
}
|
||||
if (inp->inp_flags & INP_DROPPED) {
|
||||
error = ECONNREFUSED;
|
||||
goto out;
|
||||
}
|
||||
tp = intotcpcb(inp);
|
||||
|
Loading…
x
Reference in New Issue
Block a user