--- linux/net/ipv4/ip_output.c 2002/09/29 10:43:10 1.1 +++ linux/net/ipv4/ip_output.c 2002/09/29 10:43:10 @@ -603,8 +603,11 @@ err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, skb->dst->dev, output_maybe_reroute); if (err) { - if (err > 0) - err = sk->protinfo.af_inet.recverr ? net_xmit_errno(err) : 0; + if (err > 0) { + err = net_xmit_errno(err); + if (err && sk->protinfo.af_inet.recverr) + sk->protinfo.af_inet.recverr = err; + } if (err) goto error; } @@ -713,8 +716,11 @@ err = NF_HOOK(PF_INET, NF_IP_LOCAL_OUT, skb, NULL, rt->u.dst.dev, output_maybe_reroute); - if (err > 0) - err = sk->protinfo.af_inet.recverr ? net_xmit_errno(err) : 0; + if (err > 0) { + err = net_xmit_errno(err); + if (err && sk->protinfo.af_inet.recverr) + sk->protinfo.af_inet.recverr = err; + } if (err) goto error; out: