mirror of
https://github.com/python/cpython.git
synced 2025-08-23 10:16:01 +00:00
Merged revisions 74426 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r74426 | gregory.p.smith | 2009-08-13 14:54:50 -0400 (Thu, 13 Aug 2009) | 4 lines Fix issue1628205: Socket file objects returned by socket.socket.makefile() now properly handles EINTR within the read, readline, write & flush methods. The socket.sendall() method now properly handles interrupted system calls. ........
This commit is contained in:
parent
add85daa87
commit
c28d554db8
4 changed files with 146 additions and 14 deletions
|
@ -2723,8 +2723,21 @@ sock_sendall(PySocketSockObject *s, PyObject *args)
|
|||
#else
|
||||
n = send(s->sock_fd, buf, len, flags);
|
||||
#endif
|
||||
if (n < 0)
|
||||
if (n < 0) {
|
||||
#ifdef EINTR
|
||||
/* We must handle EINTR here as there is no way for
|
||||
* the caller to know how much was sent otherwise. */
|
||||
if (errno == EINTR) {
|
||||
/* Run signal handlers. If an exception was
|
||||
* raised, abort and leave this socket in
|
||||
* an unknown state. */
|
||||
if (PyErr_CheckSignals())
|
||||
return NULL;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
buf += n;
|
||||
len -= n;
|
||||
} while (len > 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue