Fix an issue with accept_filter introduced with r261242:

As a side effect of r261242 when using accept_filter the
first call to soisconnected() is done earlier in tcp_input()
instead of tcp_do_segment() context.  Restore the expected behaviour.

Note:  This call to soisconnected() seems to be extraneous in all
cases (with or without accept_filter).  Will be addressed in a
separate commit.

PR:			212920
Reported by:		Alexey
Tested by:              Alexey, jch
Sponsored by:           Verisign, Inc.
MFC after:		1 week
This commit is contained in:
Julien Charbon 2016-09-29 11:18:48 +00:00
parent 92fa5c23d9
commit c1b19923a3
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=306443

View File

@ -918,7 +918,9 @@ syncache_socket(struct syncache *sc, struct socket *lso, struct mbuf *m)
tp->t_keepcnt = sototcpcb(lso)->t_keepcnt;
tcp_timer_activate(tp, TT_KEEP, TP_KEEPINIT(tp));
soisconnected(so);
if ((so->so_options & SO_ACCEPTFILTER) == 0) {
soisconnected(so);
}
TCPSTAT_INC(tcps_accepts);
return (so);