{"action":"closed","number":496,"pull_request":{"url":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496","id":61659707,"html_url":"https://github.com/sabnzbd/sabnzbd/pull/496","diff_url":"https://github.com/sabnzbd/sabnzbd/pull/496.diff","patch_url":"https://github.com/sabnzbd/sabnzbd/pull/496.patch","issue_url":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/496","number":496,"state":"closed","locked":false,"title":"Handle 1/n-1 splitting","user":{"login":"Tremax","id":1895837,"avatar_url":"https://avatars.githubusercontent.com/u/1895837?v=3","gravatar_id":"","url":"https://api.github.com/users/Tremax","html_url":"https://github.com/Tremax","followers_url":"https://api.github.com/users/Tremax/followers","following_url":"https://api.github.com/users/Tremax/following{/other_user}","gists_url":"https://api.github.com/users/Tremax/gists{/gist_id}","starred_url":"https://api.github.com/users/Tremax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tremax/subscriptions","organizations_url":"https://api.github.com/users/Tremax/orgs","repos_url":"https://api.github.com/users/Tremax/repos","events_url":"https://api.github.com/users/Tremax/events{/privacy}","received_events_url":"https://api.github.com/users/Tremax/received_events","type":"User","site_admin":false},"body":"Some custom ssl library realization to prevent Rizzo/Duong-Beast attack encode whole data in separate chunks: in first chunk small amount of data(mostly 1 first byte) and append all other data in next chunk. In this case servertests don't work correctly, because **recv_chunk** function receive only first byte, and another chunk still in recv buffer. This situation could also happen in plain tcp when server will make some delay between sending chunks and when Nagle algorithm switched off -- but nobody will do it, so mostly ssl related.\r\n\r\nExample:\r\nErlang ssl library split data into 2 chunk before send operation, for example: \"200 welcome\", would be sent like: \"2\" + \"00 welcome\", so in sabnzbd side(servertests.py) we receive first chunk: \"2\", and stop trying to receive more and servertests fails with **IndexError**(Server quit during login sequence)\r\n\r\nNote:\r\nIt is related only to servertests part of functionality, while in downloading part reading from socket occur in infinity loop with select.","created_at":"2016-03-04T02:43:27Z","updated_at":"2016-04-12T19:25:07Z","closed_at":"2016-04-12T19:25:07Z","merged_at":"2016-04-12T19:25:07Z","merge_commit_sha":"4f3cd2fc50905acb7a07ccc8f29dbb47da490b9f","assignee":{"login":"shypike","id":851163,"avatar_url":"https://avatars.githubusercontent.com/u/851163?v=3","gravatar_id":"","url":"https://api.github.com/users/shypike","html_url":"https://github.com/shypike","followers_url":"https://api.github.com/users/shypike/followers","following_url":"https://api.github.com/users/shypike/following{/other_user}","gists_url":"https://api.github.com/users/shypike/gists{/gist_id}","starred_url":"https://api.github.com/users/shypike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shypike/subscriptions","organizations_url":"https://api.github.com/users/shypike/orgs","repos_url":"https://api.github.com/users/shypike/repos","events_url":"https://api.github.com/users/shypike/events{/privacy}","received_events_url":"https://api.github.com/users/shypike/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/sabnzbd/sabnzbd/milestones/7","html_url":"https://github.com/sabnzbd/sabnzbd/milestones/1.1.0","labels_url":"https://api.github.com/repos/sabnzbd/sabnzbd/milestones/7/labels","id":1515062,"number":7,"title":"1.1.0","description":"New features.\r\n- Proper login screen\r\n- Multipar/phpar support\r\n","creator":{"login":"shypike","id":851163,"avatar_url":"https://avatars.githubusercontent.com/u/851163?v=3","gravatar_id":"","url":"https://api.github.com/users/shypike","html_url":"https://github.com/shypike","followers_url":"https://api.github.com/users/shypike/followers","following_url":"https://api.github.com/users/shypike/following{/other_user}","gists_url":"https://api.github.com/users/shypike/gists{/gist_id}","starred_url":"https://api.github.com/users/shypike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shypike/subscriptions","organizations_url":"https://api.github.com/users/shypike/orgs","repos_url":"https://api.github.com/users/shypike/repos","events_url":"https://api.github.com/users/shypike/events{/privacy}","received_events_url":"https://api.github.com/users/shypike/received_events","type":"User","site_admin":false},"open_issues":24,"closed_issues":21,"state":"open","created_at":"2016-01-19T12:31:45Z","updated_at":"2016-04-12T19:25:07Z","due_on":"2016-05-30T22:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496/commits","review_comments_url":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496/comments","review_comment_url":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/496/comments","statuses_url":"https://api.github.com/repos/sabnzbd/sabnzbd/statuses/25a54fb59310663ac138ecabf86742e3b5bacb2b","head":{"label":"Tremax:handle-ssl-beast","ref":"handle-ssl-beast","sha":"25a54fb59310663ac138ecabf86742e3b5bacb2b","user":{"login":"Tremax","id":1895837,"avatar_url":"https://avatars.githubusercontent.com/u/1895837?v=3","gravatar_id":"","url":"https://api.github.com/users/Tremax","html_url":"https://github.com/Tremax","followers_url":"https://api.github.com/users/Tremax/followers","following_url":"https://api.github.com/users/Tremax/following{/other_user}","gists_url":"https://api.github.com/users/Tremax/gists{/gist_id}","starred_url":"https://api.github.com/users/Tremax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tremax/subscriptions","organizations_url":"https://api.github.com/users/Tremax/orgs","repos_url":"https://api.github.com/users/Tremax/repos","events_url":"https://api.github.com/users/Tremax/events{/privacy}","received_events_url":"https://api.github.com/users/Tremax/received_events","type":"User","site_admin":false},"repo":{"id":53099011,"name":"sabnzbd","full_name":"Tremax/sabnzbd","owner":{"login":"Tremax","id":1895837,"avatar_url":"https://avatars.githubusercontent.com/u/1895837?v=3","gravatar_id":"","url":"https://api.github.com/users/Tremax","html_url":"https://github.com/Tremax","followers_url":"https://api.github.com/users/Tremax/followers","following_url":"https://api.github.com/users/Tremax/following{/other_user}","gists_url":"https://api.github.com/users/Tremax/gists{/gist_id}","starred_url":"https://api.github.com/users/Tremax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tremax/subscriptions","organizations_url":"https://api.github.com/users/Tremax/orgs","repos_url":"https://api.github.com/users/Tremax/repos","events_url":"https://api.github.com/users/Tremax/events{/privacy}","received_events_url":"https://api.github.com/users/Tremax/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Tremax/sabnzbd","description":"SABnzbd - The automated Usenet download tool","fork":true,"url":"https://api.github.com/repos/Tremax/sabnzbd","forks_url":"https://api.github.com/repos/Tremax/sabnzbd/forks","keys_url":"https://api.github.com/repos/Tremax/sabnzbd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Tremax/sabnzbd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Tremax/sabnzbd/teams","hooks_url":"https://api.github.com/repos/Tremax/sabnzbd/hooks","issue_events_url":"https://api.github.com/repos/Tremax/sabnzbd/issues/events{/number}","events_url":"https://api.github.com/repos/Tremax/sabnzbd/events","assignees_url":"https://api.github.com/repos/Tremax/sabnzbd/assignees{/user}","branches_url":"https://api.github.com/repos/Tremax/sabnzbd/branches{/branch}","tags_url":"https://api.github.com/repos/Tremax/sabnzbd/tags","blobs_url":"https://api.github.com/repos/Tremax/sabnzbd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Tremax/sabnzbd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Tremax/sabnzbd/git/refs{/sha}","trees_url":"https://api.github.com/repos/Tremax/sabnzbd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Tremax/sabnzbd/statuses/{sha}","languages_url":"https://api.github.com/repos/Tremax/sabnzbd/languages","stargazers_url":"https://api.github.com/repos/Tremax/sabnzbd/stargazers","contributors_url":"https://api.github.com/repos/Tremax/sabnzbd/contributors","subscribers_url":"https://api.github.com/repos/Tremax/sabnzbd/subscribers","subscription_url":"https://api.github.com/repos/Tremax/sabnzbd/subscription","commits_url":"https://api.github.com/repos/Tremax/sabnzbd/commits{/sha}","git_commits_url":"https://api.github.com/repos/Tremax/sabnzbd/git/commits{/sha}","comments_url":"https://api.github.com/repos/Tremax/sabnzbd/comments{/number}","issue_comment_url":"https://api.github.com/repos/Tremax/sabnzbd/issues/comments{/number}","contents_url":"https://api.github.com/repos/Tremax/sabnzbd/contents/{+path}","compare_url":"https://api.github.com/repos/Tremax/sabnzbd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Tremax/sabnzbd/merges","archive_url":"https://api.github.com/repos/Tremax/sabnzbd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Tremax/sabnzbd/downloads","issues_url":"https://api.github.com/repos/Tremax/sabnzbd/issues{/number}","pulls_url":"https://api.github.com/repos/Tremax/sabnzbd/pulls{/number}","milestones_url":"https://api.github.com/repos/Tremax/sabnzbd/milestones{/number}","notifications_url":"https://api.github.com/repos/Tremax/sabnzbd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Tremax/sabnzbd/labels{/name}","releases_url":"https://api.github.com/repos/Tremax/sabnzbd/releases{/id}","deployments_url":"https://api.github.com/repos/Tremax/sabnzbd/deployments","created_at":"2016-03-04T01:54:17Z","updated_at":"2016-03-04T01:54:19Z","pushed_at":"2016-03-04T02:23:45Z","git_url":"git://github.com/Tremax/sabnzbd.git","ssh_url":"git@github.com:Tremax/sabnzbd.git","clone_url":"https://github.com/Tremax/sabnzbd.git","svn_url":"https://github.com/Tremax/sabnzbd","homepage":"http://sabnzbd.org","size":96864,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"sabnzbd:develop","ref":"develop","sha":"64b182ca9abf555015b182dc202aab537631bdb3","user":{"login":"sabnzbd","id":960698,"avatar_url":"https://avatars.githubusercontent.com/u/960698?v=3","gravatar_id":"","url":"https://api.github.com/users/sabnzbd","html_url":"https://github.com/sabnzbd","followers_url":"https://api.github.com/users/sabnzbd/followers","following_url":"https://api.github.com/users/sabnzbd/following{/other_user}","gists_url":"https://api.github.com/users/sabnzbd/gists{/gist_id}","starred_url":"https://api.github.com/users/sabnzbd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sabnzbd/subscriptions","organizations_url":"https://api.github.com/users/sabnzbd/orgs","repos_url":"https://api.github.com/users/sabnzbd/repos","events_url":"https://api.github.com/users/sabnzbd/events{/privacy}","received_events_url":"https://api.github.com/users/sabnzbd/received_events","type":"Organization","site_admin":false},"repo":{"id":2187448,"name":"sabnzbd","full_name":"sabnzbd/sabnzbd","owner":{"login":"sabnzbd","id":960698,"avatar_url":"https://avatars.githubusercontent.com/u/960698?v=3","gravatar_id":"","url":"https://api.github.com/users/sabnzbd","html_url":"https://github.com/sabnzbd","followers_url":"https://api.github.com/users/sabnzbd/followers","following_url":"https://api.github.com/users/sabnzbd/following{/other_user}","gists_url":"https://api.github.com/users/sabnzbd/gists{/gist_id}","starred_url":"https://api.github.com/users/sabnzbd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sabnzbd/subscriptions","organizations_url":"https://api.github.com/users/sabnzbd/orgs","repos_url":"https://api.github.com/users/sabnzbd/repos","events_url":"https://api.github.com/users/sabnzbd/events{/privacy}","received_events_url":"https://api.github.com/users/sabnzbd/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sabnzbd/sabnzbd","description":"SABnzbd - The automated Usenet download tool","fork":false,"url":"https://api.github.com/repos/sabnzbd/sabnzbd","forks_url":"https://api.github.com/repos/sabnzbd/sabnzbd/forks","keys_url":"https://api.github.com/repos/sabnzbd/sabnzbd/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sabnzbd/sabnzbd/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sabnzbd/sabnzbd/teams","hooks_url":"https://api.github.com/repos/sabnzbd/sabnzbd/hooks","issue_events_url":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/events{/number}","events_url":"https://api.github.com/repos/sabnzbd/sabnzbd/events","assignees_url":"https://api.github.com/repos/sabnzbd/sabnzbd/assignees{/user}","branches_url":"https://api.github.com/repos/sabnzbd/sabnzbd/branches{/branch}","tags_url":"https://api.github.com/repos/sabnzbd/sabnzbd/tags","blobs_url":"https://api.github.com/repos/sabnzbd/sabnzbd/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sabnzbd/sabnzbd/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sabnzbd/sabnzbd/git/refs{/sha}","trees_url":"https://api.github.com/repos/sabnzbd/sabnzbd/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sabnzbd/sabnzbd/statuses/{sha}","languages_url":"https://api.github.com/repos/sabnzbd/sabnzbd/languages","stargazers_url":"https://api.github.com/repos/sabnzbd/sabnzbd/stargazers","contributors_url":"https://api.github.com/repos/sabnzbd/sabnzbd/contributors","subscribers_url":"https://api.github.com/repos/sabnzbd/sabnzbd/subscribers","subscription_url":"https://api.github.com/repos/sabnzbd/sabnzbd/subscription","commits_url":"https://api.github.com/repos/sabnzbd/sabnzbd/commits{/sha}","git_commits_url":"https://api.github.com/repos/sabnzbd/sabnzbd/git/commits{/sha}","comments_url":"https://api.github.com/repos/sabnzbd/sabnzbd/comments{/number}","issue_comment_url":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/comments{/number}","contents_url":"https://api.github.com/repos/sabnzbd/sabnzbd/contents/{+path}","compare_url":"https://api.github.com/repos/sabnzbd/sabnzbd/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sabnzbd/sabnzbd/merges","archive_url":"https://api.github.com/repos/sabnzbd/sabnzbd/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sabnzbd/sabnzbd/downloads","issues_url":"https://api.github.com/repos/sabnzbd/sabnzbd/issues{/number}","pulls_url":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls{/number}","milestones_url":"https://api.github.com/repos/sabnzbd/sabnzbd/milestones{/number}","notifications_url":"https://api.github.com/repos/sabnzbd/sabnzbd/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sabnzbd/sabnzbd/labels{/name}","releases_url":"https://api.github.com/repos/sabnzbd/sabnzbd/releases{/id}","deployments_url":"https://api.github.com/repos/sabnzbd/sabnzbd/deployments","created_at":"2011-08-10T20:28:06Z","updated_at":"2016-04-12T18:56:26Z","pushed_at":"2016-04-12T19:25:08Z","git_url":"git://github.com/sabnzbd/sabnzbd.git","ssh_url":"git@github.com:sabnzbd/sabnzbd.git","clone_url":"https://github.com/sabnzbd/sabnzbd.git","svn_url":"https://github.com/sabnzbd/sabnzbd","homepage":"http://sabnzbd.org","size":98913,"stargazers_count":781,"watchers_count":781,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":194,"mirror_url":null,"open_issues_count":67,"forks":194,"open_issues":67,"watchers":781,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496"},"html":{"href":"https://github.com/sabnzbd/sabnzbd/pull/496"},"issue":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/496"},"comments":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/issues/496/comments"},"review_comments":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496/comments"},"review_comment":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/pulls/496/commits"},"statuses":{"href":"https://api.github.com/repos/sabnzbd/sabnzbd/statuses/25a54fb59310663ac138ecabf86742e3b5bacb2b"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"shypike","id":851163,"avatar_url":"https://avatars.githubusercontent.com/u/851163?v=3","gravatar_id":"","url":"https://api.github.com/users/shypike","html_url":"https://github.com/shypike","followers_url":"https://api.github.com/users/shypike/followers","following_url":"https://api.github.com/users/shypike/following{/other_user}","gists_url":"https://api.github.com/users/shypike/gists{/gist_id}","starred_url":"https://api.github.com/users/shypike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shypike/subscriptions","organizations_url":"https://api.github.com/users/shypike/orgs","repos_url":"https://api.github.com/users/shypike/repos","events_url":"https://api.github.com/users/shypike/events{/privacy}","received_events_url":"https://api.github.com/users/shypike/received_events","type":"User","site_admin":false},"comments":4,"review_comments":0,"commits":1,"additions":5,"deletions":0,"changed_files":1}}