[issue29269] test_socket failing in solaris

Brian Vandenberg report at bugs.python.org
Mon Aug 3 23:19:24 EDT 2020


Brian Vandenberg <phantall at gmail.com> 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 <report at bugs.python.org>
<https://bugs.python.org/issue29269>
_______________________________________


More information about the Python-bugs-list mailing list