lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] keep-alive not work


From: Kieran Mansley
Subject: Re: [lwip-users] keep-alive not work
Date: Wed, 18 Feb 2009 11:23:57 +0000

On Wed, 2009-02-18 at 10:37 +0000, Bandu wrote:
> Sorry Kieran. Its turn out that I didn't subscribe to lwip-devel. I
> posted it there wrong. sorry for that.
> 
> I attached the wireshark trace. (its packet 117).
> I used lwip 1.3.0.

There was a problem reported for a zero-window probes (which are very
similar to the keep alive probes) where because we don't set the ACK
flag windows hosts do not reply.  The trace you provide shows that the
keep alive probe doesn't have the ACK flag set, so I'd guess you've got
the same problem.  Could you try replacing, in
src/core/tcp_out.c:tcp_keepalive():

  tcphdr->ackno = htonl(pcb->rcv_nxt);
  TCPH_FLAGS_SET(tcphdr, 0);
  tcphdr->wnd = htons(pcb->rcv_ann_wnd);
  tcphdr->urgp = 0;

with:

  tcphdr->ackno = htonl(pcb->rcv_nxt);
  TCPH_FLAGS_SET(tcphdr, TCP_ACK);
  tcphdr->wnd = htons(pcb->rcv_ann_wnd) + 1;
  tcphdr->urgp = 0;

(I've also fixed the window in the packet with that change to not shrink
what we advertise by one octet).

If that works, please open a bug and this code should get checked in.
We should really make the same change to the tcp_zero_window_probe()
function below it which has the same block of code.

Thanks

Kieran





reply via email to

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