Commit Graph

69 Commits

Author SHA1 Message Date
Gert Driesen 1e2c330d50 Remove workaround for dotnet/corefx#24562 (#2863)
This issue caused a bind to a recently used endpoint to fail on macOS and Linux.

Addresses #2820
2018-08-28 15:56:18 -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 fc3c2eef5e
Handle SocketError.ProtocolType as a connection reset on macOS (#2845)
* Handle SocketError.ProtocolType as a connection reset on macOS
* Make IsConnectionResetError and IsConnectionAbortError stricter
2018-08-23 19:16:44 -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
David Fowler 0b471f2b2f Sockets: do 0 byte reads to avoid allocating memory for idle connections
- Do not do 0 byte reads on OSX due to potential sockets bug
2018-08-21 18:07:15 -07:00
Günther Foidl c8418c6de8 Derive SocketAwaitable from SocketAsyncEventArgs (#2592)
* SocketSenderReceiverBase as baseclass for SocketSender and SocketReceiver
* Made SocketAwaitable.GetResult inlineable
* SocketAwaitable renamed to SocketAwaitableEventArgs and inherited from SocketAsyncEventArgs

Thus saving an extra object (`SocketAwaitable`) and two int-fields, so less allocations.
2018-08-09 11:24:06 -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
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
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
Chris Ross (ASP.NET) 00827e38bb Harden TFM checks #2624 2018-06-07 14:56:23 -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 aa9b9ca724 Merge branch 'release/2.1' into dev 2018-05-31 16:29:14 -07:00
Stephen Halter e4d290b601
Fix Json regression in Socket Transport (#2578) 2018-05-31 16:28:25 -07:00
Stephen Halter d1416e679b
[2.1.1] Provide clearer exception message for breaking change (#2623)
- In 2.1, the default transport (Sockets) can no longer bind to certain
  endpoint types (Unix domain sockets and open socket handles).
- The new message recommends manually selecting the libuv transport
  to work around this issue.
2018-05-31 15:45:26 -07:00
Stephen Halter a9d6cf13eb
Consistently handle connection resets (#2547) 2018-05-22 16:38:21 -07:00
Pavel Krymets 27799b5acb
Enable pubternability analyzer (#2560) 2018-05-16 13:42:56 -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 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 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
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 2f2a0047a1
React to pool cleanup (#2526) 2018-04-30 08:37:15 -07:00
Stephen Halter b0e1fa5e30 Fix connection abort 2018-04-23 17:01:49 -07:00
Andrei Amialchenia 70ce044778 Corrects spelling of some comments (#2461) 2018-04-03 15:55:17 -07:00
Pavel Krymets ba06c58bcb
Merge release/2.1 into dev (#2460) 2018-04-03 10:45:31 -07:00
David Fowler 6b183c5ac0
Use 4K as the minimum segment size (#2452)
- This normalizes the behavior for kestrel no matter what memory pool implementation is used. The transports should behave the same (ask for 1/2 full blocks) across pool implementations.
- Declare the minimum segment size in KestrelMemoryPool
- Updated the AdaptedPipeline to use MinimumSegmentSize / 2
2018-04-02 16:14:40 -07:00
John Luo 2dc1858f90 Merge branch 'release/2.1' into dev 2018-03-23 16:02:42 -07:00
John Luo 63fd1e1a4d Re-enable api check
- Disable api check for Transport.Libuv due to breaking change
- Add empty baseline files for unreleased packages
2018-03-23 12:55:06 -07:00
David Fowler 0753f4b4f4 Merged release/2.1 2018-03-22 21:56:29 -07:00
David Fowler abdcb47b8f
Renames from API review (#2413)
* Renames from API review
- Rename Microsoft.AspNetCore.Protocols.Abstractions to Microsoft.AspNetCore.Connections.Abstractions.
- Renamed IConnectionHandler to IConnectionDispatcher (and related properties and types)
- Added ConnectionHandler and UseConnectionHandler extension method to Connections.Abstractions.
-  Use ActivatorUtilties to create the ConnectionHandler
2018-03-22 21:38:14 -07:00
Stephen Halter 5fa658c800
Never run continuation inline in SocketAwaitable.OnCompleted (#2407) 2018-03-19 17:29:49 -07:00
Ryan Brandenburg 3584e5f2ab Set 2.0 baselines 2018-03-16 10:50:05 -07:00
Javier Calvarro Nelson acf7584d13 Reenable API Check 2018-03-15 21:44:34 -07:00
David Fowler 181dc0de24 React to pipelines changes 2018-03-15 16:58:53 -07:00
Ben Adams e65e58daf3 Reduce Sockets mainloop Send/Receive statemachine size (#2376)
* Use Completion to Advance in Error

* Drop ReadResult from statemachine
2018-03-13 23:04:12 -07:00
Stephen Halter 2a7bbeb8d7 Revert "React to pipelines changes (#2378)"
This reverts commit 2421df85d6.
2018-03-13 00:32:52 -07:00
David Fowler 2421df85d6 React to pipelines changes (#2378) 2018-03-12 23:59:04 -07:00
Stephen Halter 71bff00c0d
Use LibuvThread inspired IO Queue in Socket transport (#2368) 2018-03-09 15:04:20 -08:00
Pavel Krymets fc80c15a65
Update to new corefx (#2369) 2018-03-08 14:23:07 -08:00
Pavel Krymets 2c108d9ba1
React to pipes in corefx (#2337) 2018-02-28 12:41:51 -08:00
Ben Adams 1f8591184e Use ReferenceEquals not MulticastDelegate.equals (#2330)
It never inlines because its such a chunky method
2018-02-17 08:13:15 -08:00
Mike Harder 4afaa386db
Remove unnecessary usings (#2326) 2018-02-16 14:04:16 -08:00
Pavel Krymets 261b5836c1 Merge release/2.1 2018-01-30 09:39:33 -08:00
Pavel Krymets a84095e5c3
React to pipelines changes (#2275) 2018-01-29 14:34:48 -08:00
David Fowler 50b396cec6
Fixed race in sockets transport (#2279)
- Based on the changes you made earlier (f4d27e6), we trigger OnConnectionClosed before the socket is disposed in the SocketTransport. This moves the call to Output.Complete to happen after and thus fixes the race.
2018-01-29 12:41:45 -08:00
Pavel Krymets 1fa001e7db
React to pipeline changes (#2234)
React to pipeline changes
2018-01-04 09:54:42 -08:00
BrennanConroy 95dc8824c3
Upgrade package references and react to corefx API changes (#2212) 2017-12-11 09:02:37 -08:00