> 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


Reply via email to