[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?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]