On 11/12/15 01:15, Samuel Thibault wrote:
> From: Guillaume Subiron <maet...@subiron.org>
> 
> Before this patch, if sosendto fails, udp_input is executed as if the
> packet was sent, recording the packet for icmp errors, which does not
> makes sense since the packet was not actually sent, errors would be
> related to a previous packet.
> 
> This patch adds a goto bad to cut the execution of this function.
> 
> Signed-off-by: Guillaume Subiron <maet...@subiron.org>
> Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org>
> ---
>  slirp/debug.h | 2 +-
>  slirp/udp.c   | 1 +
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/slirp/debug.h b/slirp/debug.h
> index 6cfa61e..c60f967 100644
> --- a/slirp/debug.h
> +++ b/slirp/debug.h
> @@ -5,7 +5,7 @@
>   * terms and conditions of the copyright.
>   */
>  
> -//#define DEBUG 1
> +#define DEBUG 1

Please don't enable the debug code by default.

> diff --git a/slirp/udp.c b/slirp/udp.c
> index fee13b4..ce63414 100644
> --- a/slirp/udp.c
> +++ b/slirp/udp.c
> @@ -218,6 +218,7 @@ udp_input(register struct mbuf *m, int iphlen)
>         *ip=save_ip;
>         DEBUG_MISC((dfd,"udp tx errno = %d-%s\n",errno,strerror(errno)));
>         icmp_error(m, ICMP_UNREACH,ICMP_UNREACH_NET, 0,strerror(errno));
> +       goto bad;
>       }
>  
>       m_free(so->so_m);   /* used for ICMP if error on sorecvfrom */

That change looks sane to me.

 Thomas


Reply via email to