Brian Vandenberg <[email protected]> added the comment:
Christian, you did exactly what I needed. Thank you.
I don't have the means to do a git bisect to find where it broke. It wasn't a
problem around 3.3 timeframe and I'm not sure when this sendfile stuff was
implemented.
The man page for sendfile says "The sendfile() function does not modify the
current file pointer of in_fd, (...)". In other words the read pointer for the
input descriptor won't be advanced. They expect you to use it like this:
offset = 0;
do {
ret = sendfile(in, out, &offset, len);
} while( ret < 0 && (errno == EAGAIN || errno == EINTR) );
... though making that change in posixmodule.c would break this test severely
since the send & receive code is running on the same thread.
In posixmodule.c I don't see anything that attempts to return the number of
bytes successfully sent. Since the input file descriptor won't have its read
pointer advanced, the variable "offset" must be set to the correct offset
value, otherwise it just keeps reading the first 32k of the file that was
generated for the test.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue29269>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com