raise _GiveupOnSendfile(err) # not a regular file
try:
fsize = os.fstat(fileno).st_size
- except OSError:
+ except OSError as err:
raise _GiveupOnSendfile(err) # not a regular file
if not fsize:
return 0 # empty file
self.assertEqual(s.family, 42424)
self.assertEqual(s.type, 13331)
+ @unittest.skipUnless(hasattr(os, 'sendfile'), 'test needs os.sendfile()')
+ def test__sendfile_use_sendfile(self):
+ class File:
+ def __init__(self, fd):
+ self.fd = fd
+
+ def fileno(self):
+ return self.fd
+ with socket.socket() as sock:
+ fd = os.open(os.curdir, os.O_RDONLY)
+ os.close(fd)
+ with self.assertRaises(socket._GiveupOnSendfile):
+ sock._sendfile_use_sendfile(File(fd))
+ with self.assertRaises(OverflowError):
+ sock._sendfile_use_sendfile(File(2**1000))
+ with self.assertRaises(TypeError):
+ sock._sendfile_use_sendfile(File(None))
+
+
@unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.')
class BasicCANTest(unittest.TestCase):
Library
-------
+- Fix UnboundLocalError in socket._sendfile_use_sendfile.
+
- Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
os.stat(). Patch by Eryk Sun.