On 2002-04-03 at 09:05 -0500, John Dalbec wrote:
> Red Hat claims that the RFCs do not require it to send a PUSH bit on the
> last packet of a write() to a socket.
Stevens tells us that the PSH flag is set if the packet being set
empties the send buffer.
TCP/IP Illustrated, Volume 2, Section 26.7.
As for standards, RFC 1122 "Requirements for Internet Hosts --
Communication Layers", part of STD 3. Section 4.2.2.2,
"Use of Push: RFC-793 Section 2.8":
-----------------------------< cut here >-------------------------------
A TCP MAY implement PUSH flags on SEND calls. If PUSH flags
are not implemented, then the sending TCP: (1) must not
buffer data indefinitely, and (2) MUST set the PSH bit in
the last buffered segment (i.e., when there is no more
queued data to be sent).
-----------------------------< cut here >-------------------------------
And then in "4.2.5 TCP REQUIREMENT SUMMARY"
SEND call can specify PUSH MAY
If cannot: sender buffer indefinitely MUST NOT
If cannot: PSH last segment MUST
BSD systems do not document a way for send(2) to set the PSH flag
explicitly. On a Debian box running Linux 2.4.10, the man page for
send(2) does not document such a method. I appear to not currently have
remote access to a RedHat box.
If RedHat have decided to be different, and have documented a method for
ensuring that PSH is sent, then perhaps they'd be so kind as to actively
promote this fact to developers. I for one have no intention of wasting
my time trying to navigate their site to useful information -- tried
that before. Gaah! If given an explicit URL, fine.
--
Anyone who cannot cope with mathematics is not fully human. At best he is a
tolerable subhuman who has learned to wear shoes, bathe, and not make messes
in the house -- Robert A Heinlein, Time Enough for Love.