Giampaolo Rodola' <[email protected]> added the comment:
Please note that on FreeBSD things work a little bit differently for
non-blocking sockets:
http://www.freebsd.org/cgi/man.cgi?query=sendfile&sektion=2
In details I'm talking about:
> When using a socket marked for non-blocking I/O, sendfile() may send
> fewer bytes than requested. In this case, the number of bytes
> success-fully written is returned in *sbytes (if specified), and the
> error EAGAIN is returned.
...and the similar note about EBUSY, later in the page.
Something like this should work:
ret = sendfile(in, out, offset, &sbytes, &sf, flags);
...
if (ret == -1) {
if ((errno == EAGAIN) || (errno == EBUSY)) {
return Py_BuildValue("ll", sbytes, offset + sbytes);
}
return posix_error();
}
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue10882>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com