Thanks. Actually this is a follow up with my previous effort to fix this bug. I was busy on something else and then got lost in that old thread. Now I just checked some my local patch to see if they've merged to upstream and then found it out.
This is old thread about this: http://lists.nongnu.org/archive/html/qemu-devel/2017-04/msg05544.html On Thu, Nov 9, 2017 at 2:50 AM, Marc-André Lureau < marcandre.lur...@gmail.com> wrote: > Hi > > Adding Guillaume in CC, who wrote that line in commit 98c63057d2144 > > On Wed, Nov 8, 2017 at 11:53 PM, Tao Wu via Qemu-devel > <qemu-devel@nongnu.org> wrote: > > The current code looks buggy, we zero ti_i while we access > > ti_dst/ti_src later. > > Could you described the symptoms and why you fixed it that way? > > thanks > > > > > Signed-off-by: Tao Wu <lep...@google.com> > > --- > > slirp/tcp_subr.c | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/slirp/tcp_subr.c b/slirp/tcp_subr.c > > index dc8b4bbb50..da0d53743f 100644 > > --- a/slirp/tcp_subr.c > > +++ b/slirp/tcp_subr.c > > @@ -148,7 +148,16 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, > struct mbuf *m, > > m->m_data += IF_MAXLINKHDR; > > *mtod(m, struct tcpiphdr *) = *ti; > > ti = mtod(m, struct tcpiphdr *); > > - memset(&ti->ti, 0, sizeof(ti->ti)); > > + switch (af) { > > + case AF_INET: > > + ti->ti.ti_i4.ih_x1 = 0; > > + break; > > + case AF_INET6: > > + ti->ti.ti_i6.ih_x1 = 0; > > + break; > > + default: > > + g_assert_not_reached(); > > + } > > flags = TH_ACK; > > } else { > > /* > > -- > > 2.15.0.448.gf294e3d99a-goog > > > > > > > > -- > Marc-André Lureau >