Commit Graph

944 Commits

Author SHA1 Message Date
Chris Ross (ASP.NET) 991cfa8bd8 Remove limits on SETTINGS_HEADER_TABLE_SIZE #2874 2018-09-04 12:01:13 -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
David Fowler 6dc55a0462
Don't preserve the ExecutionContext when dispatching callbacks (#2861)
* Don't preserve the ExecutionContext when dispatching callbacks
- The layers up stack already preserve and restore the ExecutionContext, there's no need to capture and run for the scheduler callback and cancellation token callback
2018-08-28 09:32:33 -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 f6cc980b2c Revert "Remove default port tests"
This reverts commit 74f4387807.
2018-08-24 13:55:15 -07:00
John Luo 64127e6c76 Implement MaxFrameSize and HeaderTableSize for HTTP/2 2018-08-24 11:07:41 -07:00
Stephen Halter e5a1101239
Improve exception handling in SocketConnection (#2844)
- Avoid race where a connection reset observed by both DoSend() and DoReceive()
  resulted in a ConnectionAbortedException being thrown from the input Pipe
  instead of a ConnectionResetException.
2018-08-23 16:59:02 -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
John Luo 74f4387807 Remove default port tests 2018-08-20 15:54:41 -07:00
Chris Ross (ASP.NET) aa9dde2457 Extract bitshift helper code, Frame cleanup #2773 2018-08-17 15:48:16 -07:00
Chris Ross (ASP.NET) ff52525134 Skip ContentLength_Received_MultipleDataFramesOverSize_Reset 2018-08-17 15:44:19 -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
Chris Ross (ASP.NET) c73d513289 Add Http2 frame logging 2018-08-08 09:46:42 -07:00
John Luo 0a28806c17 Fix flaky graceful shutdown tests 2018-08-07 15:40:38 -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 b494e50353 Fixup shutdown functional tests 2018-08-07 11:50:09 -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 3cdb73440e
Disable memory pool late return validation in H2SpecTests (#2768)
- We should reenable once HTTP/2 graceful shutdown is implemented
2018-07-30 14:33:45 -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
Chris Ross (ASP.NET) 6fde01a825 Replace PortSupportedCondition #2706 2018-07-11 13:47:16 -07:00
Stephen Halter a826f478ad Implement HTTP/2 output flow control (#2690) 2018-07-10 14:11:59 -07:00
Nate McMaster 181e521b40
Fix compiler error as a result of merging 2.1.2 into release/2.1 2018-07-10 12:37:07 -07:00
Nate McMaster 1d9db7c25f
Merge 2.1.2 into release/2.1 2018-07-10 10:34:35 -07:00
Stephen Halter 2ab22ac55a Merge branch 'release/2.1' into dev 2018-06-28 11:27:11 -07:00
Stephen Halter ac31e5ab30
[2.1.3] Consistently handle connection aborts (#2619)
* Decouple connection objects from the server (#2535)

- Making progress towards being able to use the connection objects on the client side.

* Wait for input writer to complete before calling OnConnectionClosed (#2566)

* Wait for the ConnectionClosed token to stop tracking connections (#2574)

- The prior strategy of waiting for the pipe completed callbacks doesn't work
  because blocks are returned to the memory pool after the callbacks are fired.

* Consistently handle connection resets (#2547)

* Provide better connection abort exceptions and logs

* void IConnectionDispatcher.OnConnection
2018-06-28 10:51:22 -07:00