sendfile() not detecting closed connections.
Ian FREISLICH
ianf at clue.co.za
Sun Nov 4 21:02:15 PST 2007
Robert Watson wrote:
> On Fri, 2 Nov 2007, Ian FREISLICH wrote:
> > sendfile() reports success for files less than about 64k in size,
> > but I haven't been able to figure out where the threshold is. It
> > erroneously reports that 41000 of the 64k were sent, but will say
> > the whole file was transferred up to about 64k. The connection
> > filedescriptor is blocking.
>
> Probably what is happening is that sendfile() is counting bytes
> successfully inserted into the send socket buffer, rather than bytes
> sent on the wire. This is consistent with what happens when you
> write a file to a TCP socket, though, as you only know the bytes made
> it into the buffer, not to the remote destination. I'd guess the
> threshold size you're seeing above is the size of the default send
> socket buffer.
The connection was closed long before the call to sendfile by the
remote side. Is there a way to determine how much actually made
it onto the wire? Presumably this is actually known somewhere in
the kernel.
Ian
--
Ian Freislich
More information about the freebsd-current
mailing list