From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@9fans.net From: Tim Wiess Date: Thu, 17 Apr 2008 13:59:31 -0700 In-Reply-To: <41b9f1bf163c2d3c41e182407477eb28@quanstro.net> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: Re: [9fans] telnet vs. godaddy whois Topicbox-Message-UUID: 90fbe5c0-ead3-11e9-9d60-3106f5b1d025 >> On Thu, 17 Apr 2008 09:18:31 BST Charles Forsyth 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 I noticed this some time ago when I was doing some work in the stack and thought it was very questionable. But I never got a chance to go back and do further research. Nevertheless I think it's the wrong behavior.