{"action":"created","comment":{"url":"https://api.github.com/repos/grpc/grpc-java/pulls/comments/218263305","pull_request_review_id":156162016,"id":218263305,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxODI2MzMwNQ==","diff_hunk":"@@ -334,16 +335,18 @@ protected ClientTransportFactory buildTransportFactory() {\n     TransportCreationParamsFilterFactory transportCreationParamsFilterFactory =\n         dynamicParamsFactory;\n     if (transportCreationParamsFilterFactory == null) {\n-      SslContext localSslContext = sslContext;\n-      if (negotiationType == NegotiationType.TLS && localSslContext == null) {\n-        try {\n-          localSslContext = GrpcSslContexts.forClient().build();\n-        } catch (SSLException ex) {\n-          throw new RuntimeException(ex);\n+      ProtocolNegotiator negotiator = this.protocolNegotiator;\n+      if (negotiator == null) {\n+        SslContext localSslContext = sslContext;\n+        if (negotiationType == NegotiationType.TLS && localSslContext == null) {\n+          try {\n+            localSslContext = GrpcSslContexts.forClient().build();\n+          } catch (SSLException ex) {\n+            throw new RuntimeException(ex);\n+          }\n         }\n+        negotiator = createProtocolNegotiatorByType(negotiationType, localSslContext);","path":"netty/src/main/java/io/grpc/netty/NettyChannelBuilder.java","position":28,"original_position":28,"commit_id":"cde3e0b8aa622d8b953e3c9d6194f2dbf9e8a881","original_commit_id":"cde3e0b8aa622d8b953e3c9d6194f2dbf9e8a881","user":{"login":"carl-mastrangelo","id":8943572,"node_id":"MDQ6VXNlcjg5NDM1NzI=","avatar_url":"https://avatars0.githubusercontent.com/u/8943572?v=4","gravatar_id":"","url":"https://api.github.com/users/carl-mastrangelo","html_url":"https://github.com/carl-mastrangelo","followers_url":"https://api.github.com/users/carl-mastrangelo/followers","following_url":"https://api.github.com/users/carl-mastrangelo/following{/other_user}","gists_url":"https://api.github.com/users/carl-mastrangelo/gists{/gist_id}","starred_url":"https://api.github.com/users/carl-mastrangelo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carl-mastrangelo/subscriptions","organizations_url":"https://api.github.com/users/carl-mastrangelo/orgs","repos_url":"https://api.github.com/users/carl-mastrangelo/repos","events_url":"https://api.github.com/users/carl-mastrangelo/events{/privacy}","received_events_url":"https://api.github.com/users/carl-mastrangelo/received_events","type":"User","site_admin":false},"body":"The thought had occurred; it does make things more complicated since construction would be deferred.   What would you expect?   A new one each time, or it to be reused?","created_at":"2018-09-17T23:55:05Z","updated_at":"2018-09-17T23:55:05Z","html_url":"https://github.com/grpc/grpc-java/pull/4855#discussion_r218263305","pull_request_url":"https://api.github.com/repos/grpc/grpc-java/pulls/4855","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/comments/218263305"},"html":{"href":"https://github.com/grpc/grpc-java/pull/4855#discussion_r218263305"},"pull_request":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/4855"}},"in_reply_to_id":217843064},"pull_request":{"url":"https://api.github.com/repos/grpc/grpc-java/pulls/4855","id":215424032,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1NDI0MDMy","html_url":"https://github.com/grpc/grpc-java/pull/4855","diff_url":"https://github.com/grpc/grpc-java/pull/4855.diff","patch_url":"https://github.com/grpc/grpc-java/pull/4855.patch","issue_url":"https://api.github.com/repos/grpc/grpc-java/issues/4855","number":4855,"state":"open","locked":false,"title":"netty: Allow specifying a ProtocolNegotatior directly to Channels","user":{"login":"ejona86","id":2811396,"node_id":"MDQ6VXNlcjI4MTEzOTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"body":"This will be the replacement for TransportCreationParamsFilterFactory\r\nand matches what used to be done and what is done on server-side.","created_at":"2018-09-13T21:39:42Z","updated_at":"2018-09-17T23:55:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7d462da382afaf0e7ba1f3124724491f3a588743","assignee":{"login":"carl-mastrangelo","id":8943572,"node_id":"MDQ6VXNlcjg5NDM1NzI=","avatar_url":"https://avatars0.githubusercontent.com/u/8943572?v=4","gravatar_id":"","url":"https://api.github.com/users/carl-mastrangelo","html_url":"https://github.com/carl-mastrangelo","followers_url":"https://api.github.com/users/carl-mastrangelo/followers","following_url":"https://api.github.com/users/carl-mastrangelo/following{/other_user}","gists_url":"https://api.github.com/users/carl-mastrangelo/gists{/gist_id}","starred_url":"https://api.github.com/users/carl-mastrangelo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carl-mastrangelo/subscriptions","organizations_url":"https://api.github.com/users/carl-mastrangelo/orgs","repos_url":"https://api.github.com/users/carl-mastrangelo/repos","events_url":"https://api.github.com/users/carl-mastrangelo/events{/privacy}","received_events_url":"https://api.github.com/users/carl-mastrangelo/received_events","type":"User","site_admin":false},"assignees":[{"login":"carl-mastrangelo","id":8943572,"node_id":"MDQ6VXNlcjg5NDM1NzI=","avatar_url":"https://avatars0.githubusercontent.com/u/8943572?v=4","gravatar_id":"","url":"https://api.github.com/users/carl-mastrangelo","html_url":"https://github.com/carl-mastrangelo","followers_url":"https://api.github.com/users/carl-mastrangelo/followers","following_url":"https://api.github.com/users/carl-mastrangelo/following{/other_user}","gists_url":"https://api.github.com/users/carl-mastrangelo/gists{/gist_id}","starred_url":"https://api.github.com/users/carl-mastrangelo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carl-mastrangelo/subscriptions","organizations_url":"https://api.github.com/users/carl-mastrangelo/orgs","repos_url":"https://api.github.com/users/carl-mastrangelo/repos","events_url":"https://api.github.com/users/carl-mastrangelo/events{/privacy}","received_events_url":"https://api.github.com/users/carl-mastrangelo/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/grpc/grpc-java/pulls/4855/commits","review_comments_url":"https://api.github.com/repos/grpc/grpc-java/pulls/4855/comments","review_comment_url":"https://api.github.com/repos/grpc/grpc-java/pulls/comments{/number}","comments_url":"https://api.github.com/repos/grpc/grpc-java/issues/4855/comments","statuses_url":"https://api.github.com/repos/grpc/grpc-java/statuses/cde3e0b8aa622d8b953e3c9d6194f2dbf9e8a881","head":{"label":"ejona86:netty-pass-protonego","ref":"netty-pass-protonego","sha":"cde3e0b8aa622d8b953e3c9d6194f2dbf9e8a881","user":{"login":"ejona86","id":2811396,"node_id":"MDQ6VXNlcjI4MTEzOTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"repo":{"id":31378968,"node_id":"MDEwOlJlcG9zaXRvcnkzMTM3ODk2OA==","name":"grpc-java","full_name":"ejona86/grpc-java","private":false,"owner":{"login":"ejona86","id":2811396,"node_id":"MDQ6VXNlcjI4MTEzOTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"html_url":"https://github.com/ejona86/grpc-java","description":"The Java gRPC implementation. HTTP/2 based RPC","fork":true,"url":"https://api.github.com/repos/ejona86/grpc-java","forks_url":"https://api.github.com/repos/ejona86/grpc-java/forks","keys_url":"https://api.github.com/repos/ejona86/grpc-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ejona86/grpc-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ejona86/grpc-java/teams","hooks_url":"https://api.github.com/repos/ejona86/grpc-java/hooks","issue_events_url":"https://api.github.com/repos/ejona86/grpc-java/issues/events{/number}","events_url":"https://api.github.com/repos/ejona86/grpc-java/events","assignees_url":"https://api.github.com/repos/ejona86/grpc-java/assignees{/user}","branches_url":"https://api.github.com/repos/ejona86/grpc-java/branches{/branch}","tags_url":"https://api.github.com/repos/ejona86/grpc-java/tags","blobs_url":"https://api.github.com/repos/ejona86/grpc-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ejona86/grpc-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ejona86/grpc-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/ejona86/grpc-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ejona86/grpc-java/statuses/{sha}","languages_url":"https://api.github.com/repos/ejona86/grpc-java/languages","stargazers_url":"https://api.github.com/repos/ejona86/grpc-java/stargazers","contributors_url":"https://api.github.com/repos/ejona86/grpc-java/contributors","subscribers_url":"https://api.github.com/repos/ejona86/grpc-java/subscribers","subscription_url":"https://api.github.com/repos/ejona86/grpc-java/subscription","commits_url":"https://api.github.com/repos/ejona86/grpc-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/ejona86/grpc-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/ejona86/grpc-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/ejona86/grpc-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/ejona86/grpc-java/contents/{+path}","compare_url":"https://api.github.com/repos/ejona86/grpc-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ejona86/grpc-java/merges","archive_url":"https://api.github.com/repos/ejona86/grpc-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ejona86/grpc-java/downloads","issues_url":"https://api.github.com/repos/ejona86/grpc-java/issues{/number}","pulls_url":"https://api.github.com/repos/ejona86/grpc-java/pulls{/number}","milestones_url":"https://api.github.com/repos/ejona86/grpc-java/milestones{/number}","notifications_url":"https://api.github.com/repos/ejona86/grpc-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ejona86/grpc-java/labels{/name}","releases_url":"https://api.github.com/repos/ejona86/grpc-java/releases{/id}","deployments_url":"https://api.github.com/repos/ejona86/grpc-java/deployments","created_at":"2015-02-26T17:23:03Z","updated_at":"2018-09-13T17:46:48Z","pushed_at":"2018-09-17T23:50:14Z","git_url":"git://github.com/ejona86/grpc-java.git","ssh_url":"git@github.com:ejona86/grpc-java.git","clone_url":"https://github.com/ejona86/grpc-java.git","svn_url":"https://github.com/ejona86/grpc-java","homepage":"","size":20350,"stargazers_count":3,"watchers_count":3,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":false,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":1,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2,"open_issues":1,"watchers":3,"default_branch":"master"}},"base":{"label":"grpc:master","ref":"master","sha":"6cf849a7ceb0b223a497dff02742b2f76e1cbaa7","user":{"login":"grpc","id":7802525,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MDI1MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/7802525?v=4","gravatar_id":"","url":"https://api.github.com/users/grpc","html_url":"https://github.com/grpc","followers_url":"https://api.github.com/users/grpc/followers","following_url":"https://api.github.com/users/grpc/following{/other_user}","gists_url":"https://api.github.com/users/grpc/gists{/gist_id}","starred_url":"https://api.github.com/users/grpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grpc/subscriptions","organizations_url":"https://api.github.com/users/grpc/orgs","repos_url":"https://api.github.com/users/grpc/repos","events_url":"https://api.github.com/users/grpc/events{/privacy}","received_events_url":"https://api.github.com/users/grpc/received_events","type":"Organization","site_admin":false},"repo":{"id":27729926,"node_id":"MDEwOlJlcG9zaXRvcnkyNzcyOTkyNg==","name":"grpc-java","full_name":"grpc/grpc-java","private":false,"owner":{"login":"grpc","id":7802525,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc4MDI1MjU=","avatar_url":"https://avatars1.githubusercontent.com/u/7802525?v=4","gravatar_id":"","url":"https://api.github.com/users/grpc","html_url":"https://github.com/grpc","followers_url":"https://api.github.com/users/grpc/followers","following_url":"https://api.github.com/users/grpc/following{/other_user}","gists_url":"https://api.github.com/users/grpc/gists{/gist_id}","starred_url":"https://api.github.com/users/grpc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grpc/subscriptions","organizations_url":"https://api.github.com/users/grpc/orgs","repos_url":"https://api.github.com/users/grpc/repos","events_url":"https://api.github.com/users/grpc/events{/privacy}","received_events_url":"https://api.github.com/users/grpc/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/grpc/grpc-java","description":"The Java gRPC implementation. HTTP/2 based RPC","fork":false,"url":"https://api.github.com/repos/grpc/grpc-java","forks_url":"https://api.github.com/repos/grpc/grpc-java/forks","keys_url":"https://api.github.com/repos/grpc/grpc-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/grpc/grpc-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/grpc/grpc-java/teams","hooks_url":"https://api.github.com/repos/grpc/grpc-java/hooks","issue_events_url":"https://api.github.com/repos/grpc/grpc-java/issues/events{/number}","events_url":"https://api.github.com/repos/grpc/grpc-java/events","assignees_url":"https://api.github.com/repos/grpc/grpc-java/assignees{/user}","branches_url":"https://api.github.com/repos/grpc/grpc-java/branches{/branch}","tags_url":"https://api.github.com/repos/grpc/grpc-java/tags","blobs_url":"https://api.github.com/repos/grpc/grpc-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/grpc/grpc-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/grpc/grpc-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/grpc/grpc-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/grpc/grpc-java/statuses/{sha}","languages_url":"https://api.github.com/repos/grpc/grpc-java/languages","stargazers_url":"https://api.github.com/repos/grpc/grpc-java/stargazers","contributors_url":"https://api.github.com/repos/grpc/grpc-java/contributors","subscribers_url":"https://api.github.com/repos/grpc/grpc-java/subscribers","subscription_url":"https://api.github.com/repos/grpc/grpc-java/subscription","commits_url":"https://api.github.com/repos/grpc/grpc-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/grpc/grpc-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/grpc/grpc-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/grpc/grpc-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/grpc/grpc-java/contents/{+path}","compare_url":"https://api.github.com/repos/grpc/grpc-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/grpc/grpc-java/merges","archive_url":"https://api.github.com/repos/grpc/grpc-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/grpc/grpc-java/downloads","issues_url":"https://api.github.com/repos/grpc/grpc-java/issues{/number}","pulls_url":"https://api.github.com/repos/grpc/grpc-java/pulls{/number}","milestones_url":"https://api.github.com/repos/grpc/grpc-java/milestones{/number}","notifications_url":"https://api.github.com/repos/grpc/grpc-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/grpc/grpc-java/labels{/name}","releases_url":"https://api.github.com/repos/grpc/grpc-java/releases{/id}","deployments_url":"https://api.github.com/repos/grpc/grpc-java/deployments","created_at":"2014-12-08T19:00:00Z","updated_at":"2018-09-17T23:50:11Z","pushed_at":"2018-09-17T23:49:57Z","git_url":"git://github.com/grpc/grpc-java.git","ssh_url":"git@github.com:grpc/grpc-java.git","clone_url":"https://github.com/grpc/grpc-java.git","svn_url":"https://github.com/grpc/grpc-java","homepage":"https://grpc.io","size":26739,"stargazers_count":4829,"watchers_count":4829,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":false,"has_pages":true,"forks_count":1559,"mirror_url":null,"archived":false,"open_issues_count":364,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":1559,"open_issues":364,"watchers":4829,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/4855"},"html":{"href":"https://github.com/grpc/grpc-java/pull/4855"},"issue":{"href":"https://api.github.com/repos/grpc/grpc-java/issues/4855"},"comments":{"href":"https://api.github.com/repos/grpc/grpc-java/issues/4855/comments"},"review_comments":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/4855/comments"},"review_comment":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/grpc/grpc-java/pulls/4855/commits"},"statuses":{"href":"https://api.github.com/repos/grpc/grpc-java/statuses/cde3e0b8aa622d8b953e3c9d6194f2dbf9e8a881"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"carl-mastrangelo"}}