[issue27822] Fail to create _SelectorTransport with unbound socket
Paul McGuire added the comment: Patch file attached. -- keywords: +patch Added file: http://bugs.python.org/file44182/ptm_27822.patch ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27822> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27746] ResourceWarnings in test_asyncio
Paul McGuire added the comment: Ok, I will submit as a separate issue. -- ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27746> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27822] Fail to create _SelectorTransport with unbound socket
Paul McGuire added the comment: (issue applies to both 3.5.2 and 3.6) -- versions: +Python 3.5 ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27822> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27746] ResourceWarnings in test_asyncio
Paul McGuire added the comment: I was about to report this same issue - I get the error message even though I explicitly call transport.close(): C:\Python35\lib\asyncio\selector_events.py:582: ResourceWarning: unclosed transport <_SelectorDatagramTransport closing fd=232> It looks like the _sock attribute of the Transport subclasses must be set to None in their close() methods. (The presence of a non-None _sock is used elsewhere as an indicator of whether the transport has been closed or not. -- nosy: +Paul McGuire ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27746> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27822] Fail to create _SelectorTransport with unbound socket
Paul McGuire added the comment: To clarify how I'm using a socket without a bound address, I am specifying the destination address in the call to transport.sendto(), so there is no address on the socket itself, hence getsockname() fails. -- ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27822> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue27822] Fail to create _SelectorTransport with unbound socket
New submission from Paul McGuire: In writing a simple UDP client using asyncio, I tripped over a call to getsockname() in the _SelectorTransport class in asyncio/selector_events.py. def __init__(self, loop, sock, protocol, extra=None, server=None): super().__init__(extra, loop) self._extra['socket'] = sock self._extra['sockname'] = sock.getsockname() Since this is a sending-only client, the socket does not get bound to an address. On Linux, this is not a problem; getsockname() will return ('0.0.0.0', 0) for IPV4, ('::', 0, 0, 0) for IPV6, and so on. But on Windows, a socket that is not bound to an address will raise this error when getsockname() is called: OSError: [WinError 10022] An invalid argument was supplied This forces me to write a wrapper for the socket to intercept getsockname() and return None. In asyncio/proactor_events.py, this is guarded against, with this code in the _ProactorSocketTransport class: try: self._extra['sockname'] = sock.getsockname() except (socket.error, AttributeError): if self._loop.get_debug(): logger.warning("getsockname() failed on %r", sock, exc_info=True) Please add similar guarding code to the _SelectorTransport class in asyncio/selector_events.py. -- components: asyncio messages: 273290 nosy: Paul McGuire, gvanrossum, haypo, yselivanov priority: normal severity: normal status: open title: Fail to create _SelectorTransport with unbound socket type: behavior versions: Python 3.6 ___ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue27822> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com