Issue #26384: Fix UnboundLocalError in socket._sendfile_use_sendfile
This commit is contained in:
parent
9a1c91a10d
commit
bcfb35f80d
|
@ -258,7 +258,7 @@ class socket(_socket.socket):
|
||||||
raise _GiveupOnSendfile(err) # not a regular file
|
raise _GiveupOnSendfile(err) # not a regular file
|
||||||
try:
|
try:
|
||||||
fsize = os.fstat(fileno).st_size
|
fsize = os.fstat(fileno).st_size
|
||||||
except OSError:
|
except OSError as err:
|
||||||
raise _GiveupOnSendfile(err) # not a regular file
|
raise _GiveupOnSendfile(err) # not a regular file
|
||||||
if not fsize:
|
if not fsize:
|
||||||
return 0 # empty file
|
return 0 # empty file
|
||||||
|
|
|
@ -1447,6 +1447,25 @@ class GeneralModuleTests(unittest.TestCase):
|
||||||
self.assertEqual(s.family, 42424)
|
self.assertEqual(s.family, 42424)
|
||||||
self.assertEqual(s.type, 13331)
|
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.')
|
@unittest.skipUnless(HAVE_SOCKET_CAN, 'SocketCan required for this test.')
|
||||||
class BasicCANTest(unittest.TestCase):
|
class BasicCANTest(unittest.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Fix UnboundLocalError in socket._sendfile_use_sendfile.
|
||||||
|
|
||||||
- Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
|
- Issue #28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
|
||||||
os.stat(). Patch by Eryk Sun.
|
os.stat(). Patch by Eryk Sun.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue