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