> On Thu, 17 Apr 2008 09:18:31 BST Charles Forsyth <[EMAIL PROTECTED]> wrote: >> > having said that, i now suspect that sending one byte into a zero-window is >> not the problem. >> >> because the one-byte probe can only be done if there is data to send, and i >> already knew that a plain connection (dial only) to that port also failed: > > Not setting the PSH bit on a pure ACK (== no data is being > sent) seems to fix this (see ip/tcp.c around line 2530). May > be it tickles a bug on the receiver (0 byte read?).
this does work for me. is there some subtile reason *to* set the psh bit on a pure ack? in certain circumstances? good call. from rfc793, p 42: [...] If the the user signals a push function then the data must be sent even if it is a small segment. minooka; 9diff ip/tcp.c /n/sources/plan9//sys/src/9/ip/tcp.c:2529,2535 - ip/tcp.c:2529,2535 } } - if(sent+dsize == sndcnt) + if(sent+dsize == sndcnt && dsize) seg.flags |= PSH; /* keep track of balance of resent data */ - erik