{"action":"closed","number":5939,"pull_request":{"url":"https://api.github.com/repos/netty/netty/pulls/5939","id":90662254,"html_url":"https://github.com/netty/netty/pull/5939","diff_url":"https://github.com/netty/netty/pull/5939.diff","patch_url":"https://github.com/netty/netty/pull/5939.patch","issue_url":"https://api.github.com/repos/netty/netty/issues/5939","number":5939,"state":"closed","locked":false,"title":"Read if needed on ProxyHandler's handshake","user":{"login":"vkostyukov","id":1098539,"avatar_url":"https://avatars.githubusercontent.com/u/1098539?v=3","gravatar_id":"","url":"https://api.github.com/users/vkostyukov","html_url":"https://github.com/vkostyukov","followers_url":"https://api.github.com/users/vkostyukov/followers","following_url":"https://api.github.com/users/vkostyukov/following{/other_user}","gists_url":"https://api.github.com/users/vkostyukov/gists{/gist_id}","starred_url":"https://api.github.com/users/vkostyukov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vkostyukov/subscriptions","organizations_url":"https://api.github.com/users/vkostyukov/orgs","repos_url":"https://api.github.com/users/vkostyukov/repos","events_url":"https://api.github.com/users/vkostyukov/events{/privacy}","received_events_url":"https://api.github.com/users/vkostyukov/received_events","type":"User","site_admin":false},"body":"Fixes #5933.\r\n\r\n## Motivation:\r\n\r\nWhen auto-read is disabled and no reads are issued by a user, `ProxyHandler` will stall the connection on the proxy handshake phase waiting for the first response from a server (that was never read).\r\n\r\n## Modifications:\r\n\r\nRead if needed when very first handshake message is send by `ProxyHandler`.\r\n\r\n## Result:\r\n\r\nProxy handshake now succeeds no matter if auto-read disabled or enabled. Without the fix, the new test is failing on master.\r\n\r\nNotes (on testing):\r\n\r\nGiven that `ProxyHandlerTest` is essentially an integration test I decided to slightly extend it and handle its cases with randomized auto-read settings. Basically, we randomly assign an auto-read setting to the channel in the test just to make sure the original test works regardless of what the auto-read value is.\r\n\r\nI know, this adds some \"randomness\"  to the test suite, but I think we should be fine here because \r\n\r\n a) \"the integration tests\" implies some reasonable level of randomness and\r\n b) we fully cover the space of generated values (our test is total on the input)\r\n","created_at":"2016-10-24T18:01:45Z","updated_at":"2016-10-30T07:28:32Z","closed_at":"2016-10-30T07:28:30Z","merged_at":null,"merge_commit_sha":"9674bdd730d2de6a1dfe6e553b2a11aa3cfdd90c","assignee":{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false},"assignees":[{"login":"normanmaurer","id":439362,"avatar_url":"https://avatars.githubusercontent.com/u/439362?v=3","gravatar_id":"","url":"https://api.github.com/users/normanmaurer","html_url":"https://github.com/normanmaurer","followers_url":"https://api.github.com/users/normanmaurer/followers","following_url":"https://api.github.com/users/normanmaurer/following{/other_user}","gists_url":"https://api.github.com/users/normanmaurer/gists{/gist_id}","starred_url":"https://api.github.com/users/normanmaurer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/normanmaurer/subscriptions","organizations_url":"https://api.github.com/users/normanmaurer/orgs","repos_url":"https://api.github.com/users/normanmaurer/repos","events_url":"https://api.github.com/users/normanmaurer/events{/privacy}","received_events_url":"https://api.github.com/users/normanmaurer/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/netty/netty/pulls/5939/commits","review_comments_url":"https://api.github.com/repos/netty/netty/pulls/5939/comments","review_comment_url":"https://api.github.com/repos/netty/netty/pulls/comments{/number}","comments_url":"https://api.github.com/repos/netty/netty/issues/5939/comments","statuses_url":"https://api.github.com/repos/netty/netty/statuses/cd267606af54bdf769caffd6827e26c74e6880f4","head":{"label":"vkostyukov:vk/read-if-needed-in-proxy-handler","ref":"vk/read-if-needed-in-proxy-handler","sha":"cd267606af54bdf769caffd6827e26c74e6880f4","user":{"login":"vkostyukov","id":1098539,"avatar_url":"https://avatars.githubusercontent.com/u/1098539?v=3","gravatar_id":"","url":"https://api.github.com/users/vkostyukov","html_url":"https://github.com/vkostyukov","followers_url":"https://api.github.com/users/vkostyukov/followers","following_url":"https://api.github.com/users/vkostyukov/following{/other_user}","gists_url":"https://api.github.com/users/vkostyukov/gists{/gist_id}","starred_url":"https://api.github.com/users/vkostyukov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vkostyukov/subscriptions","organizations_url":"https://api.github.com/users/vkostyukov/orgs","repos_url":"https://api.github.com/users/vkostyukov/repos","events_url":"https://api.github.com/users/vkostyukov/events{/privacy}","received_events_url":"https://api.github.com/users/vkostyukov/received_events","type":"User","site_admin":false},"repo":{"id":54681666,"name":"netty","full_name":"vkostyukov/netty","owner":{"login":"vkostyukov","id":1098539,"avatar_url":"https://avatars.githubusercontent.com/u/1098539?v=3","gravatar_id":"","url":"https://api.github.com/users/vkostyukov","html_url":"https://github.com/vkostyukov","followers_url":"https://api.github.com/users/vkostyukov/followers","following_url":"https://api.github.com/users/vkostyukov/following{/other_user}","gists_url":"https://api.github.com/users/vkostyukov/gists{/gist_id}","starred_url":"https://api.github.com/users/vkostyukov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vkostyukov/subscriptions","organizations_url":"https://api.github.com/users/vkostyukov/orgs","repos_url":"https://api.github.com/users/vkostyukov/repos","events_url":"https://api.github.com/users/vkostyukov/events{/privacy}","received_events_url":"https://api.github.com/users/vkostyukov/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vkostyukov/netty","description":"Netty project - an event-driven asynchronous network application framework","fork":true,"url":"https://api.github.com/repos/vkostyukov/netty","forks_url":"https://api.github.com/repos/vkostyukov/netty/forks","keys_url":"https://api.github.com/repos/vkostyukov/netty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vkostyukov/netty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vkostyukov/netty/teams","hooks_url":"https://api.github.com/repos/vkostyukov/netty/hooks","issue_events_url":"https://api.github.com/repos/vkostyukov/netty/issues/events{/number}","events_url":"https://api.github.com/repos/vkostyukov/netty/events","assignees_url":"https://api.github.com/repos/vkostyukov/netty/assignees{/user}","branches_url":"https://api.github.com/repos/vkostyukov/netty/branches{/branch}","tags_url":"https://api.github.com/repos/vkostyukov/netty/tags","blobs_url":"https://api.github.com/repos/vkostyukov/netty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vkostyukov/netty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vkostyukov/netty/git/refs{/sha}","trees_url":"https://api.github.com/repos/vkostyukov/netty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vkostyukov/netty/statuses/{sha}","languages_url":"https://api.github.com/repos/vkostyukov/netty/languages","stargazers_url":"https://api.github.com/repos/vkostyukov/netty/stargazers","contributors_url":"https://api.github.com/repos/vkostyukov/netty/contributors","subscribers_url":"https://api.github.com/repos/vkostyukov/netty/subscribers","subscription_url":"https://api.github.com/repos/vkostyukov/netty/subscription","commits_url":"https://api.github.com/repos/vkostyukov/netty/commits{/sha}","git_commits_url":"https://api.github.com/repos/vkostyukov/netty/git/commits{/sha}","comments_url":"https://api.github.com/repos/vkostyukov/netty/comments{/number}","issue_comment_url":"https://api.github.com/repos/vkostyukov/netty/issues/comments{/number}","contents_url":"https://api.github.com/repos/vkostyukov/netty/contents/{+path}","compare_url":"https://api.github.com/repos/vkostyukov/netty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vkostyukov/netty/merges","archive_url":"https://api.github.com/repos/vkostyukov/netty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vkostyukov/netty/downloads","issues_url":"https://api.github.com/repos/vkostyukov/netty/issues{/number}","pulls_url":"https://api.github.com/repos/vkostyukov/netty/pulls{/number}","milestones_url":"https://api.github.com/repos/vkostyukov/netty/milestones{/number}","notifications_url":"https://api.github.com/repos/vkostyukov/netty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vkostyukov/netty/labels{/name}","releases_url":"https://api.github.com/repos/vkostyukov/netty/releases{/id}","deployments_url":"https://api.github.com/repos/vkostyukov/netty/deployments","created_at":"2016-03-24T23:49:54Z","updated_at":"2016-03-24T23:50:04Z","pushed_at":"2016-10-25T03:25:30Z","git_url":"git://github.com/vkostyukov/netty.git","ssh_url":"git@github.com:vkostyukov/netty.git","clone_url":"https://github.com/vkostyukov/netty.git","svn_url":"https://github.com/vkostyukov/netty","homepage":"http://netty.io/","size":41379,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"4.1"}},"base":{"label":"netty:4.1","ref":"4.1","sha":"9cfa4675548e368f3c905c0df31d18912d43cf08","user":{"login":"netty","id":473791,"avatar_url":"https://avatars.githubusercontent.com/u/473791?v=3","gravatar_id":"","url":"https://api.github.com/users/netty","html_url":"https://github.com/netty","followers_url":"https://api.github.com/users/netty/followers","following_url":"https://api.github.com/users/netty/following{/other_user}","gists_url":"https://api.github.com/users/netty/gists{/gist_id}","starred_url":"https://api.github.com/users/netty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/netty/subscriptions","organizations_url":"https://api.github.com/users/netty/orgs","repos_url":"https://api.github.com/users/netty/repos","events_url":"https://api.github.com/users/netty/events{/privacy}","received_events_url":"https://api.github.com/users/netty/received_events","type":"Organization","site_admin":false},"repo":{"id":1064563,"name":"netty","full_name":"netty/netty","owner":{"login":"netty","id":473791,"avatar_url":"https://avatars.githubusercontent.com/u/473791?v=3","gravatar_id":"","url":"https://api.github.com/users/netty","html_url":"https://github.com/netty","followers_url":"https://api.github.com/users/netty/followers","following_url":"https://api.github.com/users/netty/following{/other_user}","gists_url":"https://api.github.com/users/netty/gists{/gist_id}","starred_url":"https://api.github.com/users/netty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/netty/subscriptions","organizations_url":"https://api.github.com/users/netty/orgs","repos_url":"https://api.github.com/users/netty/repos","events_url":"https://api.github.com/users/netty/events{/privacy}","received_events_url":"https://api.github.com/users/netty/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/netty/netty","description":"Netty project - an event-driven asynchronous network application framework","fork":false,"url":"https://api.github.com/repos/netty/netty","forks_url":"https://api.github.com/repos/netty/netty/forks","keys_url":"https://api.github.com/repos/netty/netty/keys{/key_id}","collaborators_url":"https://api.github.com/repos/netty/netty/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/netty/netty/teams","hooks_url":"https://api.github.com/repos/netty/netty/hooks","issue_events_url":"https://api.github.com/repos/netty/netty/issues/events{/number}","events_url":"https://api.github.com/repos/netty/netty/events","assignees_url":"https://api.github.com/repos/netty/netty/assignees{/user}","branches_url":"https://api.github.com/repos/netty/netty/branches{/branch}","tags_url":"https://api.github.com/repos/netty/netty/tags","blobs_url":"https://api.github.com/repos/netty/netty/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/netty/netty/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/netty/netty/git/refs{/sha}","trees_url":"https://api.github.com/repos/netty/netty/git/trees{/sha}","statuses_url":"https://api.github.com/repos/netty/netty/statuses/{sha}","languages_url":"https://api.github.com/repos/netty/netty/languages","stargazers_url":"https://api.github.com/repos/netty/netty/stargazers","contributors_url":"https://api.github.com/repos/netty/netty/contributors","subscribers_url":"https://api.github.com/repos/netty/netty/subscribers","subscription_url":"https://api.github.com/repos/netty/netty/subscription","commits_url":"https://api.github.com/repos/netty/netty/commits{/sha}","git_commits_url":"https://api.github.com/repos/netty/netty/git/commits{/sha}","comments_url":"https://api.github.com/repos/netty/netty/comments{/number}","issue_comment_url":"https://api.github.com/repos/netty/netty/issues/comments{/number}","contents_url":"https://api.github.com/repos/netty/netty/contents/{+path}","compare_url":"https://api.github.com/repos/netty/netty/compare/{base}...{head}","merges_url":"https://api.github.com/repos/netty/netty/merges","archive_url":"https://api.github.com/repos/netty/netty/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/netty/netty/downloads","issues_url":"https://api.github.com/repos/netty/netty/issues{/number}","pulls_url":"https://api.github.com/repos/netty/netty/pulls{/number}","milestones_url":"https://api.github.com/repos/netty/netty/milestones{/number}","notifications_url":"https://api.github.com/repos/netty/netty/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/netty/netty/labels{/name}","releases_url":"https://api.github.com/repos/netty/netty/releases{/id}","deployments_url":"https://api.github.com/repos/netty/netty/deployments","created_at":"2010-11-09T09:22:21Z","updated_at":"2016-10-30T00:25:40Z","pushed_at":"2016-10-30T07:27:22Z","git_url":"git://github.com/netty/netty.git","ssh_url":"git@github.com:netty/netty.git","clone_url":"https://github.com/netty/netty.git","svn_url":"https://github.com/netty/netty","homepage":"http://netty.io/","size":72850,"stargazers_count":8140,"watchers_count":8140,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4108,"mirror_url":null,"open_issues_count":346,"forks":4108,"open_issues":346,"watchers":8140,"default_branch":"4.1"}},"_links":{"self":{"href":"https://api.github.com/repos/netty/netty/pulls/5939"},"html":{"href":"https://github.com/netty/netty/pull/5939"},"issue":{"href":"https://api.github.com/repos/netty/netty/issues/5939"},"comments":{"href":"https://api.github.com/repos/netty/netty/issues/5939/comments"},"review_comments":{"href":"https://api.github.com/repos/netty/netty/pulls/5939/comments"},"review_comment":{"href":"https://api.github.com/repos/netty/netty/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/netty/netty/pulls/5939/commits"},"statuses":{"href":"https://api.github.com/repos/netty/netty/statuses/cd267606af54bdf769caffd6827e26c74e6880f4"}},"merged":false,"mergeable":true,"mergeable_state":"clean","merged_by":null,"comments":2,"review_comments":2,"commits":2,"additions":21,"deletions":3,"changed_files":2}}
{"actor":{"display_login":"normanmaurer"}}