Commit Graph

989 Commits

Author SHA1 Message Date
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
John Luo 423d5432be Add test for ensuring HPACK lowercase header names
- ensure lowercase mask only applied to uppercase letters
2018-06-26 10:44:21 -07:00
Chris Ross (ASP.NET) 61e16e2b31 Automation for h2spec functional tests #2640 2018-06-21 11:17:16 -07:00
Chris Ross (ASP.NET) 324565772c Prevent app code from blocking the connection loop #2657 2018-06-20 11:06:49 -07:00
Chris Ross (ASP.NET) 2b269e0433 Set Min OS version for ALPN tests at Win 8.1. 2018-06-19 13:58:34 -07:00
Chris Ross (ASP.NET) c498f03cb4 Expose Tls details as a feature. #2661
Limit Http/2 to TLS 1.2 #2251
Bootstrap functional tests #2238
2018-06-18 16:25:18 -07:00
Mike Harder 35d9590f3c
Prevent double-close race condition in ListenHandleTests.CanListenToOpenTcpSocketHandle() (#2666) 2018-06-14 12:50:03 -07:00
John Luo 13663e1e15 Convert to using definitions from HeaderNames 2018-06-13 11:24:24 -07:00
Nate McMaster ff3f0e905d
Merge branch 'release/2.1' into release/2.1.2 2018-06-12 14:16:29 -07:00
Stephen Halter ee86e97b6b
React to aspnet/BuildTools#684 (#2660)
* Update KoreBuild
* Minimize blocking threads to increase travis reliability
2018-06-11 16:43:33 -07:00
Chris Ross (ASP.NET) a217206f1f Enforce max frame size #2651 2018-06-11 14:20:43 -07:00
Chris Ross (ASP.NET) 810a302e66 Disable AllowRenegotiation for HTTP/2 2018-06-11 13:51:23 -07:00
Chris Ross (ASP.NET) 00827e38bb Harden TFM checks #2624 2018-06-07 14:56:23 -07:00
Chris Ross (ASP.NET) bac99ad086 React to Uri scope break 2018-06-04 20:10:40 -07:00
Stephen Halter 0aff4a0440
Handle client and server aborts differently from eachhother (#2612)
* Trace when app aborts connection
* Improve exception messages
* Always abort connection with ConnectionAbortedException
* Add ConnectionContext.Abort(Exception)
2018-06-01 14:42:30 -07:00
Stephen Halter 28dad2b2b1
Unskip and fix race in ConnectionClosedEvenIfAppSwallowsException (#2632) 2018-05-31 15:39:25 -07:00
Stephen Halter 9e15b2bca4
Fix PipeReader consumption pattern [2.1] 2018-05-31 11:27:38 -07:00
Stephen Halter f80091a328 Merge branch 'release/2.1' into dev 2018-05-29 16:37:16 -07:00
Stephen Halter 5ec7bacdfe
Lower severity of AuthenticationException logs from SslStream handshake (#2614) 2018-05-29 16:27:16 -07:00
Stephen Halter b08163d3b7
[2.1.1] Use TaskCreationOptions.RunContinuationsAsynchronously a lot (#2618) 2018-05-29 16:07:41 -07:00
Stephen Halter f70088c2d9
Don't block so many threads in HeartbeatTests (#2610) 2018-05-23 15:58:33 -07:00
Chris Ross (ASP.NET) cf684a1e8f Re-enable IPv6 test 2018-05-23 09:11:10 -07:00
Stephen Halter a9d6cf13eb
Consistently handle connection resets (#2547) 2018-05-22 16:38:21 -07:00
Mike Harder 99a661edd6
Improve reliability of RequestTimesOutWhenRequestBodyNotReceivedAtSpecifiedMinimumRate (#2589)
- Fix race condition in test code
- Addresses https://github.com/aspnet/KestrelHttpServer/issues/2539
2018-05-18 16:25:01 -07:00
Mike Harder 1951ddf6ea
Improve reliability of MaxRequestBufferSizeTests.LargeUpload (#2586)
- Increase _dataLength from 20MB to 40MB to improve test reliability when using Sockets transport on Windows
- Addresses https://github.com/aspnet/KestrelHttpServer/issues/2225
2018-05-17 16:53:52 -07:00
Stephen Halter a13339dd5c
Re-enable ConnectionCountingReturnsToZero on non-macOS machines (#2585) 2018-05-17 11:54:58 -07:00
John Luo 336fe6ed90 Dispose base 2018-05-17 10:45:50 -07:00
John Luo ca25a4a63e React to Logging changes 2018-05-16 18:09:27 -07:00
John Luo 8da5f55832 React to logging changes 2018-05-15 17:16:49 -07:00
Stephen Halter f8f6f39f55
Wait off the ConnectionClosed token to stop tracking ConnectionCallback (#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.
2018-05-15 12:38:35 -07:00
Stephen Halter c683316253
Generate repetitive TransportConnection FeatureCollection code (#2548) 2018-05-14 17:20:48 -07:00
Stephen Halter 514917b9a8
Wait for input writer to complete before calling OnConnectionClosed (#2566) 2018-05-14 11:51:49 -07:00
Stephen Halter b64c0105b8
Use correct TaskCompletionSource ctor (#2567) 2018-05-11 14:57:20 -07:00
Stephen Halter b040e33b1b Merge branch 'release/2.1' into dev 2018-05-10 23:47:51 -07:00
Stephen Halter da21fc89cf
Handle exception in SocketConnection.Shutdown() (#2562) 2018-05-10 23:39:06 -07:00
Stephen Halter e6a88c1b9c
Relieve response backpressure immediately when closing socket (#2557)
* Relieve response backpressure immediately when closing socket
2018-05-10 17:13:57 -07:00
Stephen Halter f04118fca1 Merge branch 'halter73/merge-2.1-dev' into dev 2018-05-09 17:27:47 -07:00
Pranav K 80fa1d699d Upgrade to netcoreapp2.2
This reverts commit fe9da3c57b.
2018-05-09 16:43:15 -07:00
Ryan Brandenburg fe9da3c57b Revert "Don't touch product repos"
This reverts commit 8e9f05b902.
2018-05-08 16:52:48 -07:00
Ryan Brandenburg 350310aa96 Handle netcoreapp cases 2018-05-08 15:38:20 -07:00
Ryan Brandenburg 7db465dfc2 Upgrade to netcoreapp22 2018-05-08 15:38:20 -07:00
Stephen Halter c8d374af64 Merge branch 'release/2.1' into dev
# Conflicts:
#	build/dependencies.props
#	korebuild-lock.txt
#	src/Kestrel.Transport.Libuv/Internal/LibuvConnectionContext.cs
2018-05-07 15:47:20 -07:00
Stephen Halter 1a313715c8 Merge fixup 2018-05-07 15:00:57 -07:00
Nate McMaster 05d68efbae
Merge branch 'release/2.1.0-rc1' into release/2.1 2018-05-07 14:35:41 -07:00
Stephen Halter 5c17bff55d
Don't throw on FIN from upgraded connections (#2533)
* Allow app to drain request buffer after FIN
2018-05-04 16:21:07 -07:00
Stephen Halter 8b1fbad10e
Don't complete KestrelServer.StopAsync task inline (#2534) 2018-05-03 17:01:36 -07:00
Chris Ross (ASP.NET) b85ab0a7d2 Fix Sending100ContinueDoesNotStartResponse #2507 2018-05-02 09:29:36 -07:00
Chris Ross (ASP.NET) 9798508108 Merge branch 'release/2.1' into dev 2018-05-02 09:22:19 -07:00
Chris Ross (ASP.NET) 74d19cd4e4 Remove netcoreapp2.0 test coverage 2018-05-02 08:54:57 -07:00
David Fowler b23d9b7679
Decouple connection objects from the server (#2535)
- Making progress towards being able to use the connection objects on the client side.
2018-05-01 12:01:24 -07:00
Pavel Krymets de98f8c962
Use TaskCreationOptions.RunContinuationsAsynchronously a lot 2018-04-30 12:56:55 -07:00
Pavel Krymets 2f2a0047a1
React to pool cleanup (#2526) 2018-04-30 08:37:15 -07:00
Mike Harder cc29a503e6
Revert "Enable xUnit diagnostic messages (#2505)" (#2522)
- xUnit diagnostic messages were enabled in #2505 to help identify hung tests
- However, this also enables log messages for non-serializable theory data (https://github.com/aspnet/KestrelHttpServer/issues/2509), which adds noise to logs
- It doesn't seem possible to disable the "non-serializable data" messages but keep the "long-running test" messages
- Converting all tests to serializable theory data is expensive and complicates test code
- The best solution for now is to revert xUnit diagnostic messages to disabled, and re-enable when needed to identify hung tests
2018-04-24 17:24:43 -07:00
Mike Harder cc38a8d1fa
Remove unused theory data (#2519) 2018-04-24 14:47:39 -07:00
Chris Ross (ASP.NET) 075453b180 Fix Sending100ContinueDoesNotStartResponse #2507 2018-04-24 09:07:20 -07:00
Stephen Halter b0e1fa5e30 Fix connection abort 2018-04-23 17:01:49 -07:00