From 86edb140570f0e1761e6444d78d2a027d58dd240 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 1 Aug 2010 21:58:18 +0000 Subject: Merged revisions 83461 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/release27-maint ................ r83461 | georg.brandl | 2010-08-01 23:18:52 +0200 (So, 01 Aug 2010) | 9 lines Merged revisions 83201 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r83201 | georg.brandl | 2010-07-28 10:19:35 +0200 (Mi, 28 Jul 2010) | 1 line #9354: Provide getsockopt() in asyncore file_wrapper(). Patch by Lukas Langa. ........ ................ --- Lib/asyncore.py | 8 ++++++++ Lib/test/test_asyncore.py | 11 +++++++++++ Misc/ACKS | 1 + Misc/NEWS | 2 ++ 4 files changed, 22 insertions(+) diff --git a/Lib/asyncore.py b/Lib/asyncore.py index ee0a049..d3301b0 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -594,6 +594,14 @@ if os.name == 'posix': def send(self, *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 write = send diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py index ebc2adb..56f1939 100644 --- a/Lib/test/test_asyncore.py +++ b/Lib/test/test_asyncore.py @@ -412,6 +412,17 @@ if hasattr(asyncore, 'file_wrapper'): w.close() self.assertEqual(file(TESTFN).read(), self.d + d1 + d2) + 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("".join(data), self.d) + def test_main(): tests = [HelperFunctionTests, DispatcherTests, DispatcherWithSendTests, diff --git a/Misc/ACKS b/Misc/ACKS index 2f6055e..dd86e5c 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -407,6 +407,7 @@ Ivan Krstić Andrew Kuchling Vladimir Kushnir Cameron Laird +Łukasz Langa Tino Lange Andrew Langmead Detlef Lannert diff --git a/Misc/NEWS b/Misc/NEWS index 2f25dcb..b0e66a3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -35,6 +35,8 @@ Core and Builtins when turned into an exception: in this case the exception simply gets ignored. +- Issue #9354: Provide getsockopt() in asyncore's file_wrapper. + - In the unicode/str.format(), raise a ValueError when indexes to arguments are too large. -- cgit v0.12