{"action":"created","comment":{"url":"https://api.github.com/repos/erlang/otp/pulls/comments/45078163","id":45078163,"diff_hunk":"@@ -336,8 +336,14 @@ handle_option([{user_passwords, _} = Opt | Rest], SocketOptions, SshOptions) ->\n     handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]);\n handle_option([{pwdfun, _} = Opt | Rest], SocketOptions, SshOptions) ->\n     handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]);\n-handle_option([{key_cb, _} = Opt | Rest], SocketOptions, SshOptions) ->\n-    handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]);\n+handle_option([{key_cb, {Module, Options}} | Rest], SocketOptions, SshOptions) ->\n+    io:format(\"KEYCB: ~p~n\", [{key_cb, Module, Options}]),\n+    handle_option(Rest, SocketOptions, [handle_ssh_option({key_cb, Module}),\n+                                        handle_ssh_priv_option({key_cb_private, Options}) |\n+                                        SshOptions]);\n+handle_option([{key_cb, Module} | Rest], SocketOptions, SshOptions) ->\n+    io:format(\"KEYCB: ~p~n\", [{key_cb, Module}]),","path":"lib/ssh/src/ssh.erl","position":12,"original_position":12,"commit_id":"62d308399bfb75f8a756abcba8a2d18fa4484edb","original_commit_id":"62d308399bfb75f8a756abcba8a2d18fa4484edb","user":{"login":"HansN","id":158885,"avatar_url":"https://avatars.githubusercontent.com/u/158885?v=3","gravatar_id":"","url":"https://api.github.com/users/HansN","html_url":"https://github.com/HansN","followers_url":"https://api.github.com/users/HansN/followers","following_url":"https://api.github.com/users/HansN/following{/other_user}","gists_url":"https://api.github.com/users/HansN/gists{/gist_id}","starred_url":"https://api.github.com/users/HansN/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HansN/subscriptions","organizations_url":"https://api.github.com/users/HansN/orgs","repos_url":"https://api.github.com/users/HansN/repos","events_url":"https://api.github.com/users/HansN/events{/privacy}","received_events_url":"https://api.github.com/users/HansN/received_events","type":"User","site_admin":false},"body":"Please remove the io:format - it will cause printouts when the option is used and some projects will complain...","created_at":"2015-11-17T16:03:08Z","updated_at":"2015-11-17T16:03:08Z","html_url":"https://github.com/erlang/otp/pull/892#discussion_r45078163","pull_request_url":"https://api.github.com/repos/erlang/otp/pulls/892","_links":{"self":{"href":"https://api.github.com/repos/erlang/otp/pulls/comments/45078163"},"html":{"href":"https://github.com/erlang/otp/pull/892#discussion_r45078163"},"pull_request":{"href":"https://api.github.com/repos/erlang/otp/pulls/892"}}},"pull_request":{"url":"https://api.github.com/repos/erlang/otp/pulls/892","id":50687524,"html_url":"https://github.com/erlang/otp/pull/892","diff_url":"https://github.com/erlang/otp/pull/892.diff","patch_url":"https://github.com/erlang/otp/pull/892.patch","issue_url":"https://api.github.com/repos/erlang/otp/issues/892","number":892,"state":"open","locked":false,"title":"Support SSH key callback module options","user":{"login":"swvist","id":227757,"avatar_url":"https://avatars.githubusercontent.com/u/227757?v=3","gravatar_id":"","url":"https://api.github.com/users/swvist","html_url":"https://github.com/swvist","followers_url":"https://api.github.com/users/swvist/followers","following_url":"https://api.github.com/users/swvist/following{/other_user}","gists_url":"https://api.github.com/users/swvist/gists{/gist_id}","starred_url":"https://api.github.com/users/swvist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swvist/subscriptions","organizations_url":"https://api.github.com/users/swvist/orgs","repos_url":"https://api.github.com/users/swvist/repos","events_url":"https://api.github.com/users/swvist/events{/privacy}","received_events_url":"https://api.github.com/users/swvist/received_events","type":"User","site_admin":false},"body":"This patch allows extra callback options to be passed to the module\r\nimplementing the SSH callback module behaviour.\r\n\r\nA module implementing the SSH key callback API is used to customize\r\nthe handling of public key. This patch allows extra callback options\r\nto be passed to the module implementing the SSH callback module\r\nbehaviour.\r\n\r\nThe key_cb option has been changed:\r\n\r\n  {key_cb, atom()} -> {key_cb, key_cb()}\r\n\r\n  Where:\r\n\tkey_cb() :: atom() | {atom(), list()}\r\n\r\nThe callback options, if specified, is made available to the callback\r\nmodule via the options passed to it under the key 'key_cb_private'.\r\n\r\nMore details and some backgorund is available here[1].\r\n\r\n[1]: http://erlang.org/pipermail/erlang-patches/2015-November/004800.html","created_at":"2015-11-13T20:25:33Z","updated_at":"2015-11-17T16:03:08Z","closed_at":null,"merged_at":null,"merge_commit_sha":"613ed41cd6e9a3309e49fc66484f155e84e5cf12","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/erlang/otp/pulls/892/commits","review_comments_url":"https://api.github.com/repos/erlang/otp/pulls/892/comments","review_comment_url":"https://api.github.com/repos/erlang/otp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/erlang/otp/issues/892/comments","statuses_url":"https://api.github.com/repos/erlang/otp/statuses/62d308399bfb75f8a756abcba8a2d18fa4484edb","head":{"label":"swvist:topic/ssh-key-callback-options","ref":"topic/ssh-key-callback-options","sha":"62d308399bfb75f8a756abcba8a2d18fa4484edb","user":{"login":"swvist","id":227757,"avatar_url":"https://avatars.githubusercontent.com/u/227757?v=3","gravatar_id":"","url":"https://api.github.com/users/swvist","html_url":"https://github.com/swvist","followers_url":"https://api.github.com/users/swvist/followers","following_url":"https://api.github.com/users/swvist/following{/other_user}","gists_url":"https://api.github.com/users/swvist/gists{/gist_id}","starred_url":"https://api.github.com/users/swvist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swvist/subscriptions","organizations_url":"https://api.github.com/users/swvist/orgs","repos_url":"https://api.github.com/users/swvist/repos","events_url":"https://api.github.com/users/swvist/events{/privacy}","received_events_url":"https://api.github.com/users/swvist/received_events","type":"User","site_admin":false},"repo":{"id":45094657,"name":"otp","full_name":"swvist/otp","owner":{"login":"swvist","id":227757,"avatar_url":"https://avatars.githubusercontent.com/u/227757?v=3","gravatar_id":"","url":"https://api.github.com/users/swvist","html_url":"https://github.com/swvist","followers_url":"https://api.github.com/users/swvist/followers","following_url":"https://api.github.com/users/swvist/following{/other_user}","gists_url":"https://api.github.com/users/swvist/gists{/gist_id}","starred_url":"https://api.github.com/users/swvist/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/swvist/subscriptions","organizations_url":"https://api.github.com/users/swvist/orgs","repos_url":"https://api.github.com/users/swvist/repos","events_url":"https://api.github.com/users/swvist/events{/privacy}","received_events_url":"https://api.github.com/users/swvist/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/swvist/otp","description":"Erlang/OTP","fork":true,"url":"https://api.github.com/repos/swvist/otp","forks_url":"https://api.github.com/repos/swvist/otp/forks","keys_url":"https://api.github.com/repos/swvist/otp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/swvist/otp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/swvist/otp/teams","hooks_url":"https://api.github.com/repos/swvist/otp/hooks","issue_events_url":"https://api.github.com/repos/swvist/otp/issues/events{/number}","events_url":"https://api.github.com/repos/swvist/otp/events","assignees_url":"https://api.github.com/repos/swvist/otp/assignees{/user}","branches_url":"https://api.github.com/repos/swvist/otp/branches{/branch}","tags_url":"https://api.github.com/repos/swvist/otp/tags","blobs_url":"https://api.github.com/repos/swvist/otp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/swvist/otp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/swvist/otp/git/refs{/sha}","trees_url":"https://api.github.com/repos/swvist/otp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/swvist/otp/statuses/{sha}","languages_url":"https://api.github.com/repos/swvist/otp/languages","stargazers_url":"https://api.github.com/repos/swvist/otp/stargazers","contributors_url":"https://api.github.com/repos/swvist/otp/contributors","subscribers_url":"https://api.github.com/repos/swvist/otp/subscribers","subscription_url":"https://api.github.com/repos/swvist/otp/subscription","commits_url":"https://api.github.com/repos/swvist/otp/commits{/sha}","git_commits_url":"https://api.github.com/repos/swvist/otp/git/commits{/sha}","comments_url":"https://api.github.com/repos/swvist/otp/comments{/number}","issue_comment_url":"https://api.github.com/repos/swvist/otp/issues/comments{/number}","contents_url":"https://api.github.com/repos/swvist/otp/contents/{+path}","compare_url":"https://api.github.com/repos/swvist/otp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/swvist/otp/merges","archive_url":"https://api.github.com/repos/swvist/otp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/swvist/otp/downloads","issues_url":"https://api.github.com/repos/swvist/otp/issues{/number}","pulls_url":"https://api.github.com/repos/swvist/otp/pulls{/number}","milestones_url":"https://api.github.com/repos/swvist/otp/milestones{/number}","notifications_url":"https://api.github.com/repos/swvist/otp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/swvist/otp/labels{/name}","releases_url":"https://api.github.com/repos/swvist/otp/releases{/id}","created_at":"2015-10-28T06:58:10Z","updated_at":"2015-10-28T06:58:55Z","pushed_at":"2015-11-13T20:20:07Z","git_url":"git://github.com/swvist/otp.git","ssh_url":"git@github.com:swvist/otp.git","clone_url":"https://github.com/swvist/otp.git","svn_url":"https://github.com/swvist/otp","homepage":"http://erlang.org","size":140694,"stargazers_count":0,"watchers_count":0,"language":"Erlang","has_issues":false,"has_downloads":false,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"maint"}},"base":{"label":"erlang:maint","ref":"maint","sha":"0db6272323fd662cb43f5bb4d24f01daa8a6647d","user":{"login":"erlang","id":153393,"avatar_url":"https://avatars.githubusercontent.com/u/153393?v=3","gravatar_id":"","url":"https://api.github.com/users/erlang","html_url":"https://github.com/erlang","followers_url":"https://api.github.com/users/erlang/followers","following_url":"https://api.github.com/users/erlang/following{/other_user}","gists_url":"https://api.github.com/users/erlang/gists{/gist_id}","starred_url":"https://api.github.com/users/erlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erlang/subscriptions","organizations_url":"https://api.github.com/users/erlang/orgs","repos_url":"https://api.github.com/users/erlang/repos","events_url":"https://api.github.com/users/erlang/events{/privacy}","received_events_url":"https://api.github.com/users/erlang/received_events","type":"Organization","site_admin":false},"repo":{"id":374927,"name":"otp","full_name":"erlang/otp","owner":{"login":"erlang","id":153393,"avatar_url":"https://avatars.githubusercontent.com/u/153393?v=3","gravatar_id":"","url":"https://api.github.com/users/erlang","html_url":"https://github.com/erlang","followers_url":"https://api.github.com/users/erlang/followers","following_url":"https://api.github.com/users/erlang/following{/other_user}","gists_url":"https://api.github.com/users/erlang/gists{/gist_id}","starred_url":"https://api.github.com/users/erlang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erlang/subscriptions","organizations_url":"https://api.github.com/users/erlang/orgs","repos_url":"https://api.github.com/users/erlang/repos","events_url":"https://api.github.com/users/erlang/events{/privacy}","received_events_url":"https://api.github.com/users/erlang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/erlang/otp","description":"Erlang/OTP","fork":false,"url":"https://api.github.com/repos/erlang/otp","forks_url":"https://api.github.com/repos/erlang/otp/forks","keys_url":"https://api.github.com/repos/erlang/otp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/erlang/otp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/erlang/otp/teams","hooks_url":"https://api.github.com/repos/erlang/otp/hooks","issue_events_url":"https://api.github.com/repos/erlang/otp/issues/events{/number}","events_url":"https://api.github.com/repos/erlang/otp/events","assignees_url":"https://api.github.com/repos/erlang/otp/assignees{/user}","branches_url":"https://api.github.com/repos/erlang/otp/branches{/branch}","tags_url":"https://api.github.com/repos/erlang/otp/tags","blobs_url":"https://api.github.com/repos/erlang/otp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/erlang/otp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/erlang/otp/git/refs{/sha}","trees_url":"https://api.github.com/repos/erlang/otp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/erlang/otp/statuses/{sha}","languages_url":"https://api.github.com/repos/erlang/otp/languages","stargazers_url":"https://api.github.com/repos/erlang/otp/stargazers","contributors_url":"https://api.github.com/repos/erlang/otp/contributors","subscribers_url":"https://api.github.com/repos/erlang/otp/subscribers","subscription_url":"https://api.github.com/repos/erlang/otp/subscription","commits_url":"https://api.github.com/repos/erlang/otp/commits{/sha}","git_commits_url":"https://api.github.com/repos/erlang/otp/git/commits{/sha}","comments_url":"https://api.github.com/repos/erlang/otp/comments{/number}","issue_comment_url":"https://api.github.com/repos/erlang/otp/issues/comments{/number}","contents_url":"https://api.github.com/repos/erlang/otp/contents/{+path}","compare_url":"https://api.github.com/repos/erlang/otp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/erlang/otp/merges","archive_url":"https://api.github.com/repos/erlang/otp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/erlang/otp/downloads","issues_url":"https://api.github.com/repos/erlang/otp/issues{/number}","pulls_url":"https://api.github.com/repos/erlang/otp/pulls{/number}","milestones_url":"https://api.github.com/repos/erlang/otp/milestones{/number}","notifications_url":"https://api.github.com/repos/erlang/otp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/erlang/otp/labels{/name}","releases_url":"https://api.github.com/repos/erlang/otp/releases{/id}","created_at":"2009-11-16T17:17:57Z","updated_at":"2015-11-17T15:11:14Z","pushed_at":"2015-11-17T14:18:44Z","git_url":"git://github.com/erlang/otp.git","ssh_url":"git@github.com:erlang/otp.git","clone_url":"https://github.com/erlang/otp.git","svn_url":"https://github.com/erlang/otp","homepage":"http://erlang.org","size":234195,"stargazers_count":3914,"watchers_count":3914,"language":"Erlang","has_issues":false,"has_downloads":false,"has_wiki":true,"has_pages":true,"forks_count":1187,"mirror_url":null,"open_issues_count":75,"forks":1187,"open_issues":75,"watchers":3914,"default_branch":"maint"}},"_links":{"self":{"href":"https://api.github.com/repos/erlang/otp/pulls/892"},"html":{"href":"https://github.com/erlang/otp/pull/892"},"issue":{"href":"https://api.github.com/repos/erlang/otp/issues/892"},"comments":{"href":"https://api.github.com/repos/erlang/otp/issues/892/comments"},"review_comments":{"href":"https://api.github.com/repos/erlang/otp/pulls/892/comments"},"review_comment":{"href":"https://api.github.com/repos/erlang/otp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/erlang/otp/pulls/892/commits"},"statuses":{"href":"https://api.github.com/repos/erlang/otp/statuses/62d308399bfb75f8a756abcba8a2d18fa4484edb"}}}}