Commit cbb0ae4a authored by Georg Brandl's avatar Georg Brandl

#9354: Provide getsockopt() in asyncore file_wrapper(). Patch by Lukas Langa.

parent 8182b717
...@@ -607,6 +607,14 @@ if os.name == 'posix': ...@@ -607,6 +607,14 @@ if os.name == 'posix':
def send(self, *args): def send(self, *args):
return os.write(self.fd, *args) return os.write(self.fd, *args)
def getsockopt(self, level, optname, buflen=None):
if (level == socket.SOL_SOCKET and
optname == socket.SO_ERROR and
not buflen):
return 0
raise NotImplementedError("Only asyncore specific behaviour "
"implemented.")
read = recv read = recv
write = send write = send
......
...@@ -428,6 +428,19 @@ class FileWrapperTest(unittest.TestCase): ...@@ -428,6 +428,19 @@ class FileWrapperTest(unittest.TestCase):
w.close() w.close()
self.assertEqual(open(TESTFN, 'rb').read(), self.d + d1 + d2) self.assertEqual(open(TESTFN, 'rb').read(), self.d + d1 + d2)
@unittest.skipUnless(hasattr(asyncore, 'file_dispatcher'),
'asyncore.file_dispatcher required')
def test_dispatcher(self):
fd = os.open(TESTFN, os.O_RDONLY)
data = []
class FileDispatcher(asyncore.file_dispatcher):
def handle_read(self):
data.append(self.recv(29))
s = FileDispatcher(fd)
os.close(fd)
asyncore.loop(timeout=0.01, use_poll=True, count=2)
self.assertEqual(b"".join(data), self.d)
class BaseTestHandler(asyncore.dispatcher): class BaseTestHandler(asyncore.dispatcher):
......
...@@ -448,8 +448,8 @@ Andrew Kuchling ...@@ -448,8 +448,8 @@ Andrew Kuchling
Vladimir Kushnir Vladimir Kushnir
Cameron Laird Cameron Laird
Torsten Landschoff Torsten Landschoff
Tino Lange
Łukasz Langa Łukasz Langa
Tino Lange
Andrew Langmead Andrew Langmead
Detlef Lannert Detlef Lannert
Soren Larsen Soren Larsen
......
...@@ -475,6 +475,8 @@ C-API ...@@ -475,6 +475,8 @@ C-API
Library Library
------- -------
- Issue #9354: Provide getsockopt() in asyncore's file_wrapper.
- Issue #8966: ctypes: Remove implicit bytes-unicode conversion. - Issue #8966: ctypes: Remove implicit bytes-unicode conversion.
- Issue #9378: python -m pickle <pickle file> will now load and - Issue #9378: python -m pickle <pickle file> will now load and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment