diff options
author | jch <jch@FreeBSD.org> | 2016-10-09 21:35:12 +0000 |
---|---|---|
committer | jch <jch@FreeBSD.org> | 2016-10-09 21:35:12 +0000 |
commit | d8fc7ba5ea5f7d4b1f87a24e4b01ecc65d5836d9 (patch) | |
tree | dd4cf373e8c7b7998d618b9cbe67c8ddf2a7d467 | |
parent | 0bb8c90135493ffaef8eb820984b4f08603ba9ac (diff) | |
download | FreeBSD-src-d8fc7ba5ea5f7d4b1f87a24e4b01ecc65d5836d9.zip FreeBSD-src-d8fc7ba5ea5f7d4b1f87a24e4b01ecc65d5836d9.tar.gz |
MFC r306443:
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.
-rw-r--r-- | sys/netinet/tcp_syncache.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/netinet/tcp_syncache.c b/sys/netinet/tcp_syncache.c index f71d028..6d7ab69 100644 --- a/sys/netinet/tcp_syncache.c +++ b/sys/netinet/tcp_syncache.c @@ -922,7 +922,9 @@ syncache_socket(struct syncache *sc, struct socket *lso, struct mbuf *m) INP_WUNLOCK(inp); - soisconnected(so); + if ((so->so_options & SO_ACCEPTFILTER) == 0) { + soisconnected(so); + } TCPSTAT_INC(tcps_accepts); return (so); |