On Mon, Aug 22, 2022 at 05:55:48PM +0300, Vitaliy Makkoveev wrote:
> +/*
> + * Mark the connection as being incapable of further output.
> + */
> +int
> +tcp_shutdown(struct socket *so)
> +{
> + struct inpcb *inp;
> + struct tcpcb *tp, *otp = NULL;
> + int error;
> + short ostate;
> +
> + soassertlocked(so);
> +
> + if ((error = tcp_sogetpcb(so, &inp, &tp)))
> + return (error);
> +
> + if (so->so_options & SO_DEBUG) {
> + otp = tp;
> + ostate = tp->t_state;
> + }
> +
> + if (so->so_state & SS_CANTSENDMORE)
> + goto out;
> +
> + socantsendmore(so);
> + tp = tcp_usrclosed(tp);
> + if (tp)
> + error = tcp_output(tp);
> +
> +out:
> + if (otp)
> + tcp_trace(TA_USER, ostate, tp, otp, NULL, PRU_SHUTDOWN, 0);
> return (0);
This must be return (error).
> }