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