{"action":"created","issue":{"url":"https://api.github.com/repos/python/cpython/issues/1067","repository_url":"https://api.github.com/repos/python/cpython","labels_url":"https://api.github.com/repos/python/cpython/issues/1067/labels{/name}","comments_url":"https://api.github.com/repos/python/cpython/issues/1067/comments","events_url":"https://api.github.com/repos/python/cpython/issues/1067/events","html_url":"https://github.com/python/cpython/pull/1067","id":220501080,"node_id":"MDExOlB1bGxSZXF1ZXN0MTE1MDAzMTc1","number":1067,"title":"bpo-29883: Add UDP support to Windows Proactor Event Loop","user":{"login":"ameily","id":749571,"node_id":"MDQ6VXNlcjc0OTU3MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/749571?v=4","gravatar_id":"","url":"https://api.github.com/users/ameily","html_url":"https://github.com/ameily","followers_url":"https://api.github.com/users/ameily/followers","following_url":"https://api.github.com/users/ameily/following{/other_user}","gists_url":"https://api.github.com/users/ameily/gists{/gist_id}","starred_url":"https://api.github.com/users/ameily/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ameily/subscriptions","organizations_url":"https://api.github.com/users/ameily/orgs","repos_url":"https://api.github.com/users/ameily/repos","events_url":"https://api.github.com/users/ameily/events{/privacy}","received_events_url":"https://api.github.com/users/ameily/received_events","type":"User","site_admin":false},"labels":[{"id":536945472,"node_id":"MDU6TGFiZWw1MzY5NDU0NzI=","url":"https://api.github.com/repos/python/cpython/labels/CLA%20signed","name":"CLA signed","color":"0e8a16","default":false},{"id":666979922,"node_id":"MDU6TGFiZWw2NjY5Nzk5MjI=","url":"https://api.github.com/repos/python/cpython/labels/awaiting%20changes","name":"awaiting changes","color":"fbca04","default":false},{"id":557226369,"node_id":"MDU6TGFiZWw1NTcyMjYzNjk=","url":"https://api.github.com/repos/python/cpython/labels/expert-asyncio","name":"expert-asyncio","color":"c5def5","default":false}],"state":"open","locked":false,"assignee":{"login":"1st1","id":239003,"node_id":"MDQ6VXNlcjIzOTAwMw==","avatar_url":"https://avatars0.githubusercontent.com/u/239003?v=4","gravatar_id":"","url":"https://api.github.com/users/1st1","html_url":"https://github.com/1st1","followers_url":"https://api.github.com/users/1st1/followers","following_url":"https://api.github.com/users/1st1/following{/other_user}","gists_url":"https://api.github.com/users/1st1/gists{/gist_id}","starred_url":"https://api.github.com/users/1st1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1st1/subscriptions","organizations_url":"https://api.github.com/users/1st1/orgs","repos_url":"https://api.github.com/users/1st1/repos","events_url":"https://api.github.com/users/1st1/events{/privacy}","received_events_url":"https://api.github.com/users/1st1/received_events","type":"User","site_admin":false},"assignees":[{"login":"1st1","id":239003,"node_id":"MDQ6VXNlcjIzOTAwMw==","avatar_url":"https://avatars0.githubusercontent.com/u/239003?v=4","gravatar_id":"","url":"https://api.github.com/users/1st1","html_url":"https://github.com/1st1","followers_url":"https://api.github.com/users/1st1/followers","following_url":"https://api.github.com/users/1st1/following{/other_user}","gists_url":"https://api.github.com/users/1st1/gists{/gist_id}","starred_url":"https://api.github.com/users/1st1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1st1/subscriptions","organizations_url":"https://api.github.com/users/1st1/orgs","repos_url":"https://api.github.com/users/1st1/repos","events_url":"https://api.github.com/users/1st1/events{/privacy}","received_events_url":"https://api.github.com/users/1st1/received_events","type":"User","site_admin":false}],"milestone":null,"comments":19,"created_at":"2017-04-09T21:35:46Z","updated_at":"2018-09-28T15:56:31Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/python/cpython/pulls/1067","html_url":"https://github.com/python/cpython/pull/1067","diff_url":"https://github.com/python/cpython/pull/1067.diff","patch_url":"https://github.com/python/cpython/pull/1067.patch"},"body":"This PR adds UDP support to the Windows Proactor Event Loop. Several changes were performed:\r\n\r\n * Added wrappers around Winsock UDP functions:\r\n   * `WSAConnect` - ConnectEx doesn't support binding a UDP endpoint to a socket so I had to add this. WSAConnect completes immediately for UDP sockets.\r\n   * `WSARecvFrom`\r\n   * `WSASendTo`\r\n * Implement `_make_datagram_transport()` and the corresponding UDP transport class `_ProactorDatagramTransport`.\r\n   * Bound UDP endpoints can call `WSARecv` and `WSASend`. Unbound UDP endpoints require calls to `WSARecvFrom` and `WSASendTo`.\r\n * Several new unit tests exercising UDP proactor support.\r\n\r\nI've verified that the change can be cleanly applied to master, 3.5, and 3.6. So, back porting this feature will be straightforward, which I would like personally since I require this feature on a Python 3.5 project.\r\n\r\nOne of the SSL unit tests is failing and I've verified that the same test fails with the same error in `master`. \r\n\r\n```\r\ncpython\\lib\\asyncio\\sslproto.py:335: ResourceWarning: unclosed transport\r\n<asyncio.sslproto._SSLProtocolTransport object at 0x00000171EABA8A90>\r\n  source=self)\r\n```\n\n<!-- issue-number: bpo-29883 -->\nhttps://bugs.python.org/issue29883\n<!-- /issue-number -->\n"},"comment":{"url":"https://api.github.com/repos/python/cpython/issues/comments/425481938","html_url":"https://github.com/python/cpython/pull/1067#issuecomment-425481938","issue_url":"https://api.github.com/repos/python/cpython/issues/1067","id":425481938,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNTQ4MTkzOA==","user":{"login":"1st1","id":239003,"node_id":"MDQ6VXNlcjIzOTAwMw==","avatar_url":"https://avatars0.githubusercontent.com/u/239003?v=4","gravatar_id":"","url":"https://api.github.com/users/1st1","html_url":"https://github.com/1st1","followers_url":"https://api.github.com/users/1st1/followers","following_url":"https://api.github.com/users/1st1/following{/other_user}","gists_url":"https://api.github.com/users/1st1/gists{/gist_id}","starred_url":"https://api.github.com/users/1st1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/1st1/subscriptions","organizations_url":"https://api.github.com/users/1st1/orgs","repos_url":"https://api.github.com/users/1st1/repos","events_url":"https://api.github.com/users/1st1/events{/privacy}","received_events_url":"https://api.github.com/users/1st1/received_events","type":"User","site_admin":false},"created_at":"2018-09-28T15:56:31Z","updated_at":"2018-09-28T15:56:31Z","author_association":"MEMBER","body":"Adding to the point: I'm only asking to write tests for the new Windows-related code.  We'll do the work of backporting those tests to also test Linux implementations ourselves in other PRs.  But without proper functional tests it's hard to be sure that the new C code we're adding is actually correct."}}
{"actor":{"display_login":"1st1"}}