Date: Wed, 13 Mar 2013 21:11:49 -0400 From: Matt Miller <matt@matthewjmiller.net> To: Chuck Swiger <cswiger@mac.com> Cc: freebsd-net@freebsd.org Subject: Re: ip_output() Error Handling in tcp_output() Message-ID: <CAFc6gu9k6GWbH01drtDit0ONjZ9FtyujcLRHbi0offXEUOJRnQ@mail.gmail.com> In-Reply-To: <8D29B9DE-A59B-483D-92AD-30B794BD5417@mac.com> References: <CAFc6gu-1X68%2Bd=-Fq5%2BoDbHM6VHqqRi5WNw_L==WT2AbJ5sTOg@mail.gmail.com> <8D29B9DE-A59B-483D-92AD-30B794BD5417@mac.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Mar 13, 2013 at 3:35 PM, Chuck Swiger <cswiger@mac.com> wrote:
> Hi--
>
> On Mar 13, 2013, at 8:21 AM, Matt Miller wrote:
>> If we have a connection that has received a SYN and ip_output()
>> returns, say, EHOSTUNREACH, is there anything that guarantees the
>> connection would always eventually be dropped if the condition
>> persists?
>
> If the local TCP stack is unable to reply with a SYN-ACK, then it hasn't established a connection yet because it cannot proceed through the 3WHS to ESTAB. It will stay in LISTEN state.
>
Sorry, I should have been more specific: say the connection has
already progressed to at least ESTABLISHED or beyond when the
ip_output() error occurs. So, we'll hit the TCPS_HAVERCVDSYN if block
below:
case EHOSTDOWN:
case EHOSTUNREACH:
case ENETDOWN:
case ENETUNREACH:
if (TCPS_HAVERCVDSYN(tp->t_state)) {
tp->t_softerror = error;
return (0);
}
Thanks,
Matt
> Regards,
> --
> -Chuck
>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFc6gu9k6GWbH01drtDit0ONjZ9FtyujcLRHbi0offXEUOJRnQ>
