On Fri, Feb 28, 2003 at 09:28:03AM -0800, Bob Eby wrote: > Bah, I've signed up for the list, but don't seem to be getting the > emails (wonder if someone installed a spam-blocker I don't know about on > my mail server).
It could be - we've certainly seen non-spam blocked here at NetApp (even though the spam blocker lets a significant number of free mobile phone offers, greetings from lonely ladies with webcams, urgent business proposals, and the like get to my mailbox - I wonder how many spam blockers will block *this* message due to mentioning those items in the body of the message). > > So is the problem just that the PUSH bit isn't being set on some data > segments? > > It certainly appears to be the case. It looks like this only happens > when a segment of data larger than an ethernet frame size is sent out > via java.nio.channels.SocketChannel.write(). Basically I'm sending a > 3008 byte ByteBuffer and getting this behaviour. I suspect it's "a segment of data larger than the Ethernet maximum frame size minus about 54 bytes", as that's the amount of actual data you can put into a maximum-sized Ethernet frame containing an IPv4 TCP segment. ("54" is the minimum - it'd be bigger if you're using IPv6, or if there are any IP or TCP options being used, and possibly if you're on a VLAN, so the amount of data that fits in one frame would be smaller in those cases). > > that might just be a question of what the OS on which you're running > chooses to do in its TCP stack. > > I'm running Windows 2000 with a Sun 1.4.0 series VM (and my face is red > for not mentioning it earlier). Today I plan to try and reproduce this > with a small test implementation. It may just be that if you do a single socket send call with data that requires more than one TCP segment, the PUSH bit won't be set except on the last segment.