Stephen Halter
d50c0c13b9
Measure the rate of all HTTP/2 output ( #3067 )
...
Prior to this, only the response body counted toward the HTTP/2 response data rate. This PR aligns the HTTP/2 logic closer to the HTTP/1.x logic and measures the rate for all HTTP/2 response data.
This PR also accounts for all response bytes written, not just those that immediately induced backpressure.
2018-10-31 15:34:17 -07:00
Stephen Halter
395b681348
Add HTTP/2 request body data rate limit ( #3051 )
2018-10-26 10:46:46 -07:00
Chris Ross (ASP.NET)
1d3090f056
Only reset the request body pipe for HTTP/1 #3006
2018-10-17 16:28:33 -07:00
John Luo
97acb95715
Set default protocol to HTTP/1.x
2018-10-17 11:11:02 -07:00
Stephen Halter
8bca6b3877
Add HTTP/2 keep-alive and request header timeouts ( #2992 )
2018-10-08 17:06:15 -07:00
George Drak
e9eea50966
Implement #2230 - Consume BindingAddress instead of ServerAddress ( #2975 )
...
* #2230 Mark ServerAddress as obsolete
* #2230 suppress CS0618 errors for obsoleted ServerAddress class
* #2230 Use BindingAddress instead of ServerAddress
2018-10-05 10:34:00 -07:00
Stephen Halter
f91ae20a3c
Improve RequestAborted token handling ( #2977 )
...
- Improve test reliability of tests verifying the RequestAborted token gets tripped
- Once the response body is completed, don't fire the token for that request even if it is accessed later on.
2018-10-04 16:48:50 -07:00
Simon Cropp
d4ab8b27a9
typos, inline outs, redundant usings ( #2965 )
2018-09-28 11:14:59 -07:00
Stephen Halter
e9c2acf4dc
Add HTTP/2 response draining timeout ( #2956 )
...
* Move drain timeout to Http1Connection
* Add TimeoutControl class
2018-09-27 17:59:12 -07:00
John Luo
f56b682b36
Impose integer decode limit in HPACK
2018-09-26 17:18:24 -07:00
John Luo
ceaa3c86fc
Add configurability for max header field size in HPACK
2018-09-24 10:53:15 -07:00
Stephen Halter
f3b6430aab
Initialize Heartbeat in KestrelServer.StartAsync ( #2939 )
...
Fixes #2850 again
2018-09-17 16:43:30 -07:00
Chris Ross (ASP.NET)
b8423b8530
Change how HTTP/2 frames are parsed and generated #2858
2018-09-17 14:48:43 -07:00
John Luo
69ff195f66
Enable hpack/4.2 - Maximum Table Size test
...
- Ensure dynamic tables size updates occur at the beginning of the header block
2018-09-17 12:46:51 -07:00
John Luo
025aca52df
Port long Huffman encoding bug fix
...
https://github.com/dotnet/corefx/pull/32043
2018-09-17 12:41:36 -07:00
Simon Cropp
d3d7c55198
fix some spelling ( #2888 )
2018-09-06 11:48:25 -07:00
David Fowler
edc1935475
Flow the cancellation tokens to ReadAsync and WriteAsync ( #2865 )
2018-09-06 09:04:39 -07:00
John Luo
153020ef8a
Allow UTF8 encoded header values
2018-08-30 16:21:34 -07:00
Stephen Halter
89f4850883
Avoid throwing the same exception instances in parallel ( #2859 )
2018-08-28 10:56:46 -07:00
Stephen Halter
f70ba53253
Fix race when SystemClock is accessed before first heartbeat ( #2851 )
2018-08-27 10:59:29 -07:00
John Luo
64127e6c76
Implement MaxFrameSize and HeaderTableSize for HTTP/2
2018-08-24 11:07:41 -07:00
David Fowler
68a0863524
General connection management ( #2834 )
...
This change makes the handling of graceful shutdown work for more than just http scenarios. This should allow us to move TLS further out and should also allow us to start moving things to connection middleware instead of connection adapters.
Summary of the things changed/added:
- Added IConnectionLifetimeNotificationFeature that represents an attempt to gracefully close the connection that isn't being aborted. This feels pretty awful but we may have to do it.
- Moved connection management to the ConnectionDispatcher and out of the HttpConnectionMiddleware
- Removed Http from the names of the ConnectionManager and Heartbeat
2018-08-22 20:35:28 -07:00
David Fowler
83488886e0
Clean up some remants of the past ( #2827 )
...
- Remove Application from HttpConnectionContext and Http*ConnectionContext (it's no longer required)
2018-08-15 23:41:32 -07:00
Stephen Halter
5becb72107
Improve test logs ( #2826 )
...
- Include hosting logs in some tests that where previously missing them
- Prevent duplicate logs from Mock CallBase an CompositeKestrelTrace
- Log ports used by transport functional tests
- Add file logging to HTTP/2 "unit" tests
2018-08-15 18:31:56 -07:00
Chris Ross (ASP.NET)
0c2923135b
Limit concurrent HTTP/2 Streams per connection #2815
2018-08-15 15:58:57 -07:00
Chris Ross (ASP.NET)
43398482a5
Implement MaxRequestBodySize for HTTP/2 #2810
2018-08-13 12:06:21 -07:00
Stephen Halter
cd6de2fa18
Improve HTTP/2 stream abort logic ( #2819 )
...
- Fix race where headers frame could be written after an abort was observed
- Fix Http2StreamTests to verify expected abort-related exceptions
2018-08-13 11:45:17 -07:00
John Luo
62a30a731d
Fix bug in graceful shutdown
2018-08-10 00:17:29 -07:00
Stephen Halter
bd3a8a3511
Small test fix to avoid potential flakiness
2018-08-09 12:12:24 -07:00
John Luo
7c9e234457
Gracefully wait for streams to complete when pipe completes
2018-08-09 11:59:47 -07:00
Stephen Halter
aaf0293ebc
Fix logging verification in tests ( #2795 )
2018-08-08 17:16:08 -07:00
Stephen Halter
c0557cfca7
Improve exception handling in Http2Connection.ProcessRequestsAsync ( #2787 )
2018-08-08 11:20:49 -07:00
Chris Ross (ASP.NET)
5378900e0c
Ack settings before window updates #2772
2018-08-08 11:19:23 -07:00
Stephen Halter
0e99235d59
Add in-memory functional test project ( #2780 )
...
- Run AddressRegistrationTests independently to avoid port conflicts
- Only run tests that verify transport behavior for each transport
2018-08-07 15:34:11 -07:00
John Luo
8a74cf3ed5
Gracefully shutdown HTTP/2 connections on server and client initiated shutdown
2018-08-07 10:59:29 -07:00
Chris Ross (ASP.NET)
ea7e53cab0
Send Resets for unhandled app exceptions #2733
2018-08-06 11:35:42 -07:00
Chris Ross (ASP.NET)
beca0259c2
Verify request Content-Length #2733
2018-08-02 13:23:57 -07:00
Stephen Halter
6d46410a76
Don't ACK ACKs ( #2767 )
2018-07-30 12:25:32 -07:00
Chris Ross (ASP.NET)
c7dd9ff68a
Enable Http/2 by default #2720
2018-07-27 12:51:12 -07:00
Stephen Halter
94cfc01fbf
Implement HTTP/2 input flow control ( #2740 )
2018-07-27 10:47:27 -07:00
Nate McMaster
1f3524787e
Merge branch 'release/2.1' into release/2.2
2018-07-24 11:43:13 -07:00
Chris Ross (ASP.NET)
612fcca729
Validate Http/2 pseudo headers #2205 #2263 #2659
2018-07-19 16:25:10 -07:00
David Fowler
b934e46161
Complete the transport pipes after connection middleware runs ( #2735 )
2018-07-19 11:49:46 -07:00
Stephen Halter
5f065b6670
Fix deadlock in GOAWAY_Received_RelievesConnectionBackpressure ( #2724 )
2018-07-16 10:55:09 -07:00
Chris Ross (ASP.NET)
429bcfe216
Sending and receiving RST frames. #2462
2018-07-16 09:13:11 -07:00
John Luo
6551eae321
Consolidate HTTP charset validation logic
2018-07-13 16:47:28 -07:00
Nate McMaster
d8c77335e8
Reorganize code so Kestrel now produces the Microsoft.Extensions.Buffers.Testing.Sources package
2018-07-12 13:17:28 -07:00
Stephen Halter
f179339a79
Combine BufferWriter and CountingBufferWriter
2018-07-12 11:58:49 -07:00
Stephen Halter
864cfeb2aa
Merge branch 'release/2.1' into release/2.2
2018-07-12 11:18:41 -07:00
Nate McMaster
128eefdef3
Remove usage of the Microsoft.Extensions.Buffers.Sources package, copy the source into Kestrel
...
This moves source code that used to be in aspnet/Common. It was only used here, so this simplifies the process of working with these internal-only APIs.
cref https://github.com/aspnet/Common/pull/386
2018-07-11 22:31:23 -07:00