{"action":"created","comment":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/comments/240802852","pull_request_review_id":183918783,"id":240802852,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0MDgwMjg1Mg==","diff_hunk":"@@ -560,6 +563,150 @@ private async ValueTask SendRstStreamAsync(int streamId, Http2ProtocolErrorCode\n                 (buffer.Slice(0, FrameHeader.MaxLength), buffer.Slice(FrameHeader.MaxLength)) :\n                 (buffer, Memory<byte>.Empty);\n \n+        private void WriteHeader(string name, string value)\n+        {\n+            // TODO: ISSUE 31307: Use static table for known headers\n+\n+            int bytesWritten;\n+            while (!HPackEncoder.EncodeHeader(name, value, _headerBuffer.AvailableSpan, out bytesWritten))\n+            {\n+                _headerBuffer.EnsureAvailableSpace(_headerBuffer.AvailableSpan.Length + 1);\n+            }\n+\n+            _headerBuffer.Commit(bytesWritten);\n+        }\n+\n+        private void WriteHeaders(HttpHeaders headers)\n+        {\n+            foreach (KeyValuePair<HeaderDescriptor, string[]> header in headers.GetHeaderDescriptorsAndValues())\n+            {\n+                if (header.Key.KnownHeader == KnownHeaders.Host)\n+                {\n+                    continue;\n+                }\n+\n+                Debug.Assert(header.Value.Length > 0, \"No values for header??\");\n+                for (int i = 0; i < header.Value.Length; i++)\n+                {\n+                    WriteHeader(header.Key.Name, header.Value[i]);\n+                }\n+            }\n+        }\n+\n+        private void WriteHeaders(HttpRequestMessage request)\n+        {\n+            Debug.Assert(_headerBuffer.ActiveMemory.Length == 0);\n+\n+            // HTTP2 does not support Transfer-Encoding: chunked or Connection: headers.\n+            // Simply clear these out so they won't be sent.\n+            request.Headers.TransferEncodingChunked = false;\n+            request.Headers.Connection.Clear();\n+\n+            HttpMethod normalizedMethod = HttpMethod.Normalize(request.Method);\n+\n+            // TODO: ISSUE 31307: Use static table for pseudo-headers\n+            WriteHeader(\":method\", normalizedMethod.Method);\n+            WriteHeader(\":scheme\", \"https\");\n+\n+            string authority;\n+            if (request.HasHeaders && request.Headers.Host != null)\n+            {\n+                authority = request.Headers.Host;\n+            }\n+            else\n+            {\n+                authority = request.RequestUri.IdnHost;\n+                if (!request.RequestUri.IsDefaultPort)\n+                {\n+                    // TODO: Avoid allocation here by caching this on the connection or pool\n+                    authority += \":\" + request.RequestUri.Port;\n+                }\n+            }\n+\n+            WriteHeader(\":authority\", authority);\n+            WriteHeader(\":path\", request.RequestUri.GetComponents(UriComponents.PathAndQuery | UriComponents.Fragment, UriFormat.UriEscaped));\n+\n+            if (request.HasHeaders)\n+            {\n+                WriteHeaders(request.Headers);\n+            }\n+\n+            // Determine cookies to send.\n+            if (_pool.Settings._useCookies)\n+            {\n+                string cookiesFromContainer = _pool.Settings._cookieContainer.GetCookieHeader(request.RequestUri);\n+                if (cookiesFromContainer != string.Empty)\n+                {\n+                    WriteHeader(HttpKnownHeaderNames.Cookie, cookiesFromContainer);\n+                }\n+            }\n+\n+            if (request.Content == null)\n+            {\n+                // Write out Content-Length: 0 header to indicate no body,\n+                // unless this is a method that never has a body.\n+                if (normalizedMethod.MustHaveRequestBody)\n+                {\n+                    // TODO: ISSUE 31307: Use static table for Content-Length\n+                    WriteHeader(\"Content-Length\", \"0\");\n+                }\n+            }\n+            else\n+            {\n+                WriteHeaders(request.Content.Headers);\n+            }\n+        }\n+\n+        private async ValueTask SendHeadersAsync(int streamId, HttpRequestMessage request)\n+        {\n+            // Note, HEADERS and CONTINUATION frames must be together, so hold the writer lock across sending all of them.\n+            // We also serialize usage of the header encoder and the header buffer this way.\n+            await _writerLock.WaitAsync().ConfigureAwait(false);\n+\n+            // Generate the entire header block, without framing, into the connection header buffer.\n+            WriteHeaders(request);\n+\n+            ReadOnlyMemory<byte> remaining = _headerBuffer.ActiveMemory;\n+            Debug.Assert(remaining.Length > 0);\n+\n+            // Split into frames and send.\n+            try\n+            {\n+                ReadOnlyMemory<byte> current;\n+                (current, remaining) = SplitBufferForFraming(remaining);\n+\n+                FrameFlags flags =\n+                    (remaining.Length == 0 ? FrameFlags.EndHeaders : FrameFlags.None) |\n+                    (request.Content == null ? FrameFlags.EndStream : FrameFlags.None);\n+\n+                _outgoingBuffer.EnsureAvailableSpace(FrameHeader.Size + current.Length);\n+                WriteFrameHeader(new FrameHeader(current.Length, FrameType.Headers, flags, streamId));","path":"src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Connection.cs","position":145,"original_position":145,"commit_id":"e579c0c538d1902e8552015bd974bc398f73cb5f","original_commit_id":"e579c0c538d1902e8552015bd974bc398f73cb5f","user":{"login":"rmkerr","id":4656175,"node_id":"MDQ6VXNlcjQ2NTYxNzU=","avatar_url":"https://avatars2.githubusercontent.com/u/4656175?v=4","gravatar_id":"","url":"https://api.github.com/users/rmkerr","html_url":"https://github.com/rmkerr","followers_url":"https://api.github.com/users/rmkerr/followers","following_url":"https://api.github.com/users/rmkerr/following{/other_user}","gists_url":"https://api.github.com/users/rmkerr/gists{/gist_id}","starred_url":"https://api.github.com/users/rmkerr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rmkerr/subscriptions","organizations_url":"https://api.github.com/users/rmkerr/orgs","repos_url":"https://api.github.com/users/rmkerr/repos","events_url":"https://api.github.com/users/rmkerr/events{/privacy}","received_events_url":"https://api.github.com/users/rmkerr/received_events","type":"User","site_admin":false},"body":"As @caesar1995 mentioned in your other PR, there is some duplication of work going on here. `WriteFrameHeader` already calls `EnsureAvailableSpace(FrameHeader.Size)`. Since most frames have additional data and have to call `EnsureAvailableSpace` either way, I think we should probably remove that the call `WriteFrameHeader`. This isn't a huge amount of duplicate work though, so I'm ok with keeping it if there is a compelling reason.","created_at":"2018-12-11T21:45:34Z","updated_at":"2018-12-11T21:45:34Z","html_url":"https://github.com/dotnet/corefx/pull/33990#discussion_r240802852","pull_request_url":"https://api.github.com/repos/dotnet/corefx/pulls/33990","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments/240802852"},"html":{"href":"https://github.com/dotnet/corefx/pull/33990#discussion_r240802852"},"pull_request":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/33990"}}},"pull_request":{"url":"https://api.github.com/repos/dotnet/corefx/pulls/33990","id":237829445,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM3ODI5NDQ1","html_url":"https://github.com/dotnet/corefx/pull/33990","diff_url":"https://github.com/dotnet/corefx/pull/33990.diff","patch_url":"https://github.com/dotnet/corefx/pull/33990.patch","issue_url":"https://api.github.com/repos/dotnet/corefx/issues/33990","number":33990,"state":"open","locked":false,"title":"HTTP2: rework SendHeader logic","user":{"login":"geoffkizer","id":12518809,"node_id":"MDQ6VXNlcjEyNTE4ODA5","avatar_url":"https://avatars2.githubusercontent.com/u/12518809?v=4","gravatar_id":"","url":"https://api.github.com/users/geoffkizer","html_url":"https://github.com/geoffkizer","followers_url":"https://api.github.com/users/geoffkizer/followers","following_url":"https://api.github.com/users/geoffkizer/following{/other_user}","gists_url":"https://api.github.com/users/geoffkizer/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffkizer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffkizer/subscriptions","organizations_url":"https://api.github.com/users/geoffkizer/orgs","repos_url":"https://api.github.com/users/geoffkizer/repos","events_url":"https://api.github.com/users/geoffkizer/events{/privacy}","received_events_url":"https://api.github.com/users/geoffkizer/received_events","type":"User","site_admin":false},"body":"Rework the SendHeader logic a bit to do a couple things: align better with other send logic, ensure correctness of encoded headers across multiple requests, move header buffer management to Http2Connection so there is only one header buffer, and generally simplify the logic a bit.\r\n\r\n@dotnet/ncl @stephentoub ","created_at":"2018-12-11T21:14:41Z","updated_at":"2018-12-11T21:45:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"38821eab5285ddeae6affde59620817fa45399c1","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":809472144,"node_id":"MDU6TGFiZWw4MDk0NzIxNDQ=","url":"https://api.github.com/repos/dotnet/corefx/labels/area-System.Net.Http.SocketsHttpHandler","name":"area-System.Net.Http.SocketsHttpHandler","color":"d4c5f9","default":false}],"milestone":{"url":"https://api.github.com/repos/dotnet/corefx/milestones/21","html_url":"https://github.com/dotnet/corefx/milestone/21","labels_url":"https://api.github.com/repos/dotnet/corefx/milestones/21/labels","id":3242632,"node_id":"MDk6TWlsZXN0b25lMzI0MjYzMg==","number":21,"title":"3.0","description":".NET Core 3.0, next major release after 2.1. See [official release dates](https://github.com/dotnet/core/blob/master/roadmap.md) for details.\r\n\r\nWe will move important issues from Future to 3.0 as the priorities and dates for next release become more clear.","creator":{"login":"karelz","id":5776068,"node_id":"MDQ6VXNlcjU3NzYwNjg=","avatar_url":"https://avatars2.githubusercontent.com/u/5776068?v=4","gravatar_id":"","url":"https://api.github.com/users/karelz","html_url":"https://github.com/karelz","followers_url":"https://api.github.com/users/karelz/followers","following_url":"https://api.github.com/users/karelz/following{/other_user}","gists_url":"https://api.github.com/users/karelz/gists{/gist_id}","starred_url":"https://api.github.com/users/karelz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karelz/subscriptions","organizations_url":"https://api.github.com/users/karelz/orgs","repos_url":"https://api.github.com/users/karelz/repos","events_url":"https://api.github.com/users/karelz/events{/privacy}","received_events_url":"https://api.github.com/users/karelz/received_events","type":"User","site_admin":false},"open_issues":349,"closed_issues":3597,"state":"open","created_at":"2018-04-04T16:40:10Z","updated_at":"2018-12-11T21:44:28Z","due_on":"2019-03-31T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/dotnet/corefx/pulls/33990/commits","review_comments_url":"https://api.github.com/repos/dotnet/corefx/pulls/33990/comments","review_comment_url":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}","comments_url":"https://api.github.com/repos/dotnet/corefx/issues/33990/comments","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/e579c0c538d1902e8552015bd974bc398f73cb5f","head":{"label":"geoffkizer:http2headerrework","ref":"http2headerrework","sha":"e579c0c538d1902e8552015bd974bc398f73cb5f","user":{"login":"geoffkizer","id":12518809,"node_id":"MDQ6VXNlcjEyNTE4ODA5","avatar_url":"https://avatars2.githubusercontent.com/u/12518809?v=4","gravatar_id":"","url":"https://api.github.com/users/geoffkizer","html_url":"https://github.com/geoffkizer","followers_url":"https://api.github.com/users/geoffkizer/followers","following_url":"https://api.github.com/users/geoffkizer/following{/other_user}","gists_url":"https://api.github.com/users/geoffkizer/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffkizer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffkizer/subscriptions","organizations_url":"https://api.github.com/users/geoffkizer/orgs","repos_url":"https://api.github.com/users/geoffkizer/repos","events_url":"https://api.github.com/users/geoffkizer/events{/privacy}","received_events_url":"https://api.github.com/users/geoffkizer/received_events","type":"User","site_admin":false},"repo":{"id":50082194,"node_id":"MDEwOlJlcG9zaXRvcnk1MDA4MjE5NA==","name":"corefx","full_name":"geoffkizer/corefx","private":false,"owner":{"login":"geoffkizer","id":12518809,"node_id":"MDQ6VXNlcjEyNTE4ODA5","avatar_url":"https://avatars2.githubusercontent.com/u/12518809?v=4","gravatar_id":"","url":"https://api.github.com/users/geoffkizer","html_url":"https://github.com/geoffkizer","followers_url":"https://api.github.com/users/geoffkizer/followers","following_url":"https://api.github.com/users/geoffkizer/following{/other_user}","gists_url":"https://api.github.com/users/geoffkizer/gists{/gist_id}","starred_url":"https://api.github.com/users/geoffkizer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoffkizer/subscriptions","organizations_url":"https://api.github.com/users/geoffkizer/orgs","repos_url":"https://api.github.com/users/geoffkizer/repos","events_url":"https://api.github.com/users/geoffkizer/events{/privacy}","received_events_url":"https://api.github.com/users/geoffkizer/received_events","type":"User","site_admin":false},"html_url":"https://github.com/geoffkizer/corefx","description":"This repo contains the .NET Core foundational libraries, called CoreFX. It includes classes for collections, file systems, console, XML, async and many others.","fork":true,"url":"https://api.github.com/repos/geoffkizer/corefx","forks_url":"https://api.github.com/repos/geoffkizer/corefx/forks","keys_url":"https://api.github.com/repos/geoffkizer/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/geoffkizer/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/geoffkizer/corefx/teams","hooks_url":"https://api.github.com/repos/geoffkizer/corefx/hooks","issue_events_url":"https://api.github.com/repos/geoffkizer/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/geoffkizer/corefx/events","assignees_url":"https://api.github.com/repos/geoffkizer/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/geoffkizer/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/geoffkizer/corefx/tags","blobs_url":"https://api.github.com/repos/geoffkizer/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/geoffkizer/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/geoffkizer/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/geoffkizer/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/geoffkizer/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/geoffkizer/corefx/languages","stargazers_url":"https://api.github.com/repos/geoffkizer/corefx/stargazers","contributors_url":"https://api.github.com/repos/geoffkizer/corefx/contributors","subscribers_url":"https://api.github.com/repos/geoffkizer/corefx/subscribers","subscription_url":"https://api.github.com/repos/geoffkizer/corefx/subscription","commits_url":"https://api.github.com/repos/geoffkizer/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/geoffkizer/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/geoffkizer/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/geoffkizer/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/geoffkizer/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/geoffkizer/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/geoffkizer/corefx/merges","archive_url":"https://api.github.com/repos/geoffkizer/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/geoffkizer/corefx/downloads","issues_url":"https://api.github.com/repos/geoffkizer/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/geoffkizer/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/geoffkizer/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/geoffkizer/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/geoffkizer/corefx/labels{/name}","releases_url":"https://api.github.com/repos/geoffkizer/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/geoffkizer/corefx/deployments","created_at":"2016-01-21T04:31:55Z","updated_at":"2018-06-25T16:13:06Z","pushed_at":"2018-12-11T21:11:24Z","git_url":"git://github.com/geoffkizer/corefx.git","ssh_url":"git@github.com:geoffkizer/corefx.git","clone_url":"https://github.com/geoffkizer/corefx.git","svn_url":"https://github.com/geoffkizer/corefx","homepage":"http://dotnet.github.io/","size":187771,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"dotnet:master","ref":"master","sha":"c30f2bc75066aeccd610f36c8ce84ae5aaff675a","user":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"repo":{"id":26295345,"node_id":"MDEwOlJlcG9zaXRvcnkyNjI5NTM0NQ==","name":"corefx","full_name":"dotnet/corefx","private":false,"owner":{"login":"dotnet","id":9141961,"node_id":"MDEyOk9yZ2FuaXphdGlvbjkxNDE5NjE=","avatar_url":"https://avatars0.githubusercontent.com/u/9141961?v=4","gravatar_id":"","url":"https://api.github.com/users/dotnet","html_url":"https://github.com/dotnet","followers_url":"https://api.github.com/users/dotnet/followers","following_url":"https://api.github.com/users/dotnet/following{/other_user}","gists_url":"https://api.github.com/users/dotnet/gists{/gist_id}","starred_url":"https://api.github.com/users/dotnet/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dotnet/subscriptions","organizations_url":"https://api.github.com/users/dotnet/orgs","repos_url":"https://api.github.com/users/dotnet/repos","events_url":"https://api.github.com/users/dotnet/events{/privacy}","received_events_url":"https://api.github.com/users/dotnet/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/dotnet/corefx","description":"CoreFX is the foundational class libraries for .NET Core. It includes types for collections, file systems, console, JSON, XML, async and many others.","fork":false,"url":"https://api.github.com/repos/dotnet/corefx","forks_url":"https://api.github.com/repos/dotnet/corefx/forks","keys_url":"https://api.github.com/repos/dotnet/corefx/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dotnet/corefx/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dotnet/corefx/teams","hooks_url":"https://api.github.com/repos/dotnet/corefx/hooks","issue_events_url":"https://api.github.com/repos/dotnet/corefx/issues/events{/number}","events_url":"https://api.github.com/repos/dotnet/corefx/events","assignees_url":"https://api.github.com/repos/dotnet/corefx/assignees{/user}","branches_url":"https://api.github.com/repos/dotnet/corefx/branches{/branch}","tags_url":"https://api.github.com/repos/dotnet/corefx/tags","blobs_url":"https://api.github.com/repos/dotnet/corefx/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dotnet/corefx/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dotnet/corefx/git/refs{/sha}","trees_url":"https://api.github.com/repos/dotnet/corefx/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dotnet/corefx/statuses/{sha}","languages_url":"https://api.github.com/repos/dotnet/corefx/languages","stargazers_url":"https://api.github.com/repos/dotnet/corefx/stargazers","contributors_url":"https://api.github.com/repos/dotnet/corefx/contributors","subscribers_url":"https://api.github.com/repos/dotnet/corefx/subscribers","subscription_url":"https://api.github.com/repos/dotnet/corefx/subscription","commits_url":"https://api.github.com/repos/dotnet/corefx/commits{/sha}","git_commits_url":"https://api.github.com/repos/dotnet/corefx/git/commits{/sha}","comments_url":"https://api.github.com/repos/dotnet/corefx/comments{/number}","issue_comment_url":"https://api.github.com/repos/dotnet/corefx/issues/comments{/number}","contents_url":"https://api.github.com/repos/dotnet/corefx/contents/{+path}","compare_url":"https://api.github.com/repos/dotnet/corefx/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dotnet/corefx/merges","archive_url":"https://api.github.com/repos/dotnet/corefx/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dotnet/corefx/downloads","issues_url":"https://api.github.com/repos/dotnet/corefx/issues{/number}","pulls_url":"https://api.github.com/repos/dotnet/corefx/pulls{/number}","milestones_url":"https://api.github.com/repos/dotnet/corefx/milestones{/number}","notifications_url":"https://api.github.com/repos/dotnet/corefx/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dotnet/corefx/labels{/name}","releases_url":"https://api.github.com/repos/dotnet/corefx/releases{/id}","deployments_url":"https://api.github.com/repos/dotnet/corefx/deployments","created_at":"2014-11-06T23:42:48Z","updated_at":"2018-12-11T21:05:51Z","pushed_at":"2018-12-11T21:21:56Z","git_url":"git://github.com/dotnet/corefx.git","ssh_url":"git@github.com:dotnet/corefx.git","clone_url":"https://github.com/dotnet/corefx.git","svn_url":"https://github.com/dotnet/corefx","homepage":"https://docs.microsoft.com/dotnet/core/","size":194738,"stargazers_count":15321,"watchers_count":15321,"language":"C#","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4566,"mirror_url":null,"archived":false,"open_issues_count":2692,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":4566,"open_issues":2692,"watchers":15321,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/33990"},"html":{"href":"https://github.com/dotnet/corefx/pull/33990"},"issue":{"href":"https://api.github.com/repos/dotnet/corefx/issues/33990"},"comments":{"href":"https://api.github.com/repos/dotnet/corefx/issues/33990/comments"},"review_comments":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/33990/comments"},"review_comment":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/dotnet/corefx/pulls/33990/commits"},"statuses":{"href":"https://api.github.com/repos/dotnet/corefx/statuses/e579c0c538d1902e8552015bd974bc398f73cb5f"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"rmkerr"}}