[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [lwip-devel] TCP FIN problem.
From: |
Kieran Mansley |
Subject: |
Re: [lwip-devel] TCP FIN problem. |
Date: |
Fri, 03 Oct 2008 14:12:02 +0100 |
On Fri, 2008-10-03 at 14:08 +0100, Kieran Mansley wrote:
> On Fri, 2008-10-03 at 14:02 +0100, David Woodhouse wrote:
> > On Fri, 2008-10-03 at 13:43 +0100, Kieran Mansley wrote:
> > > On Fri, 2008-10-03 at 13:30 +0100, David Woodhouse wrote:
> > > > When I have the default 'outgoing connections only' firewall enabled on
> > > > Fedora, and I telnet into the simhost and then type 'quit', the
> > > > connection doesn't seem to get closed.
> > >
> > > Can you get a pcap file for this that I can load into wireshark to have
> > > a closer look?
> >
> > Looks like pcb->rcv_nxt is being cleared to zero, in tcp_accept().
> > Slightly confused, debugging further...
>
> I'd bet that there's a difference between "struct tcp_pcb" and "struct
> tcp_pcb_listen" on a 64 bit build that means casting between them isn't
> valid. This is deliberately OK on a 32 bit build, but perhaps the
> structure fields get a different layout with padding on a 64 bit build,
> and so when the accept field in the pcb is referenced (after the cast in
> tcp_accept() to struct tcp_pcb_listen) it's writing to the rcv_nxt
> field.
Yeah, there's a bug here - the tcp_accept field isn't in the
TCP_PCB_COMMON stuff, and so accessing it via a cast is wrong. I'm not
sure why we need it at all in the case of a connected PCB to be honest.
Could you file a bug report on savannah?
Thanks
Kieran