svn commit: r368181 - in stable/12/sys/netinet: . tcp_stacks

Kyle Evans kevans at freebsd.org
Wed Jan 13 23:00:45 UTC 2021


On Wed, Jan 13, 2021 at 4:57 PM Michael Tuexen <tuexen at freebsd.org> wrote:
>
> > On 13. Jan 2021, at 16:33, Kyle Evans <kevans at FreeBSD.org> wrote:
> >
> > On Wed, Jan 13, 2021 at 9:31 AM Michael Tuexen <tuexen at freebsd.org> wrote:
> >>
> >>> On 13. Jan 2021, at 16:16, Kyle Evans <kevans at FreeBSD.org> wrote:
> >>>
> >>> On Wed, Jan 6, 2021 at 9:01 AM Kyle Evans <kevans at freebsd.org> wrote:
> >>>>
> >>>> On Mon, Nov 30, 2020 at 3:45 AM Michael Tuexen <tuexen at freebsd.org> wrote:
> >>>>>
> >>>>> Author: tuexen
> >>>>> Date: Mon Nov 30 09:45:44 2020
> >>>>> New Revision: 368181
> >>>>> URL: https://svnweb.freebsd.org/changeset/base/368181
> >>>>>
> >>>>> Log:
> >>>>> MFC r367530:
> >>>>> RFC 7323 specifies that:
> >>>>> * TCP segments without timestamps should be dropped when support for
> >>>>>   the timestamp option has been negotiated.
> >>>>> * TCP segments with timestamps should be processed normally if support
> >>>>>   for the timestamp option has not been negotiated.
> >>>>> This patch enforces the above.
> >>>>> Manually resolved merge conflicts.
> >>>>>
> >>>>> MFC 367891:
> >>>>> Fix an issue I introuced in r367530: tcp_twcheck() can be called
> >>>>> with to == NULL for SYN segments. So don't assume tp != NULL.
> >>>>> Thanks to jhb@ for reporting and suggesting a fix.
> >>>>>
> >>>>> MFC r367946:
> >>>>> Fix two occurences of a typo in a comment introduced in r367530.
> >>>>> Thanks to lstewart@ for reporting them.
> >>>>>
> >>>>
> >>>> Hi Michael,
> >>>>
> >>>> Dmitri (CC'd) spotted a regression in the golang test suite along
> >>>> stable/12 and bisected it back to this MFC (reported via
> >>>> efnet#bsdports). The test puts up a local HTTP server and attempts to
> >>>> close the read-side while the write-side is still going, hopefully
> >>>> observing a write failure on the write-side in the process (but it
> >>>> never does).
> >>>>
> >>>> I minimized it to this (rough) reproducer, which shows the write side
> >>>> hanging around in CLOSE_WAIT and successfully writing the msg
> >>>> repeatedly on recent -CURRENT while 12.2 observes an EPIPE almost
> >>>> immediately: https://people.freebsd.org/~kevans/tcpr.c
> >>>>
> >>>> root at viper:~/grep# sockstat -s | grep 8993
> >>>> root     a.out      80831 4  tcp4   127.0.0.1:8993        *:*
> >>>>                     LISTEN
> >>>> root     a.out      80831 5  tcp4   127.0.0.1:8993
> >>>> 127.0.0.1:40319                    CLOSE_WAIT
> >>>> root at viper:~/grep#
> >>>>
> >>>
> >>> Ping?
> >> Hi Kyle,
> >>
> >> thanks for pinging. I missed your original mail (not sure why it did not end up in the
> >> correct mailbox). Will look into it later today/tomorrow.
> >>
> >> Thanks for providing a reproducer. Just to get it crystal clear: You say that the
> >> programs runs fine on CURRENT but not on stable/12. Is that correct?
> >>
> >
> > Excellent, thanks! It runs fine on 12.2, but not on an up-to-date
> > -CURRENT or stable/12 after this MFC.
> The issue should be fixed by https://reviews.freebsd.org/D28143
>
> With that patch your reproducer terminates immediately, sometimes reporting
> tuexen at head:~ % ./tcpr
> waiting for server
> attempting to connect
> got client
> connected, closing
> waiting
> write fail (bad!): 54
>
> and sometimes reporting
>
> tuexen at head:~ % ./tcpr
> waiting for server
> attempting to connect
> connected, closing
> waiting
> got client
> pipe gone (good!)
>
> but that depends on the timing.
>

A-ha, thanks! I can't imagine why I slapped a huge "bad!" blanket
label on errors since ECONNRESET is exceedingly reasonable; thanks for
the speedy resolution! :-)


More information about the svn-src-all mailing list