Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: ECONNREFUSED no longer works



On Mon, Oct 31, 2022 at 6:12 AM Michael van Elst <mlelstv%serpens.de@localhost> wrote:
>
> tnn%NetBSD.org@localhost (Tobias Nygren) writes:
>
> >$ nc -n -v 127.0.0.1 1234
> ># hangs forever in connect(2) instead of exiting w/ connection refused.
>
> The logic in tcp_drop() got reversed:
>
> @@ -1042,17 +1017,12 @@ tcp_newtcpcb(int family, void *aux)
>  struct tcpcb *
>  tcp_drop(struct tcpcb *tp, int errno)
>  {
> -       struct socket *so = NULL;
> +       struct socket *so;
>
> -       KASSERT(!(tp->t_inpcb && tp->t_in6pcb));
> +       KASSERT(tp->t_inpcb != NULL);
>
> -       if (tp->t_inpcb)
> -               so = tp->t_inpcb->inp_socket;
> -#ifdef INET6
> -       if (tp->t_in6pcb)
> -               so = tp->t_in6pcb->in6p_socket;
> -#endif
> -       if (!so)
> +       so = tp->t_inpcb->inp_socket;
> +       if (so != NULL)                                    <-------------
>                 return NULL;
>
>         if (TCPS_HAVERCVDSYN(tp->t_state)) {
>

Thank you for pointing this out.  I've committed a fix.

  ozaki-r


Home | Main Index | Thread Index | Old Index