Commit Graph

51 Commits

Author SHA1 Message Date
Stephen Halter b3f9f38ac6 Test LibuvConstants.IsConnectionReset 2018-10-04 15:40:09 -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
David Fowler edc1935475
Flow the cancellation tokens to ReadAsync and WriteAsync (#2865) 2018-09-06 09:04:39 -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 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
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 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 a9d6cf13eb
Consistently handle connection resets (#2547) 2018-05-22 16:38:21 -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 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 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
Stephen Halter b0e1fa5e30 Fix connection abort 2018-04-23 17:01:49 -07:00
Stephen Halter a1de323ff4
Make LibuvTransport(Factory) pubternal (#2426) 2018-03-26 11:39:51 -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
David Fowler 572627e88c
Handle posting to the libuv thread after StopAsync (#2388)
- Check if the post handle is disposed and noop if it is.
We also catch an ObjectDisposedException because it's an inherent race condition.
2018-03-13 19:37:39 -07:00
David Fowler 2d8f3d95fe
Feature/clean up proto abstractions (#2383)
- This change aims to clean up the feature interfaces
 used by kestrel and exposed by protocol absractions. It splits out the
 IConnectionTransportFeature into smaller features that may or may
 not be implemented on the connection.
- Added all of the features from Socket.Abstractions
in an attempt to make it go away completely. As a result
the helper methods and extensions have all been added here.
- Change IConnectionHandler to take TransportConnection. This cleans up the interface and makes it more explicit what features are required by Kestrel
2018-03-13 10:27:04 -07:00
David Fowler fa3229b489
Revert "Clean up protocol abstractions (#2381)" (#2382)
This reverts commit ddd0b4c260.
2018-03-13 02:04:42 -07:00
David Fowler ddd0b4c260
Clean up protocol abstractions (#2381)
- This change aims to clean up the feature interfaces
 used by kestrel and exposed by protocol absractions. It splits out the
 IConnectionTransportFeature into smaller features that may or may
 not be implemented on the connection.
- Added all of the features from Socket.Abstractions
in an attempt to make it go away completely. As a result
the helper methods and extensions have all been added here.
- Change IConnectionHandler to take TransportConnection. This cleans up the interface and makes it more explicit what features are required by Kestrel
2018-03-13 01:43:49 -07:00
David Fowler e7d3b0c5f9
Remove KestrelThreadPool abstraction and replaced it with PipeScheduler (#2371) 2018-03-12 14:49:19 -07:00
Pavel Krymets fc80c15a65
Update to new corefx (#2369) 2018-03-08 14:23:07 -08:00
David Fowler c88f949c39
Be explicit about PipeScheduler.Inline (#2367) 2018-03-06 09:58:14 -08:00
Pavel Krymets 2c108d9ba1
React to pipes in corefx (#2337) 2018-02-28 12:41:51 -08:00
Mike Harder 4afaa386db
Remove unnecessary usings (#2326) 2018-02-16 14:04:16 -08:00
David Fowler 2156030460
Clean up some of protocol abstractions (#2311)
* Clean up some of protocol abstractions
- Renamed PipeConnection to DuplexPipe
- Removed MemoryPool from ConnectionContext
- Work around value tuple issue on net471
2018-02-10 10:39:21 -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
Stephen Halter 30a68dec49
Fix flakiness in address-in-use test (#2267)
* Increase test timeouts
* Use constant for default test timeout.
2018-01-24 17:42:49 -08:00
Stephen Halter 040ea2e6b4
Fix MockLibuv.OnPostTask (#2260)
Prevents UvWriteReq leaks in LibuvOutputConsumerTests
2018-01-18 15:53:46 -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
Stephen Halter 668f8e3b4b
Lazily allocate protocol-specific connection objects (#2190)
* Refactor Http[12]?Connection
2017-12-04 15:59:12 -08:00
David Fowler b8a1c04ffb
Make the HttpParser a singleton (#2203)
- It's completely stateless so make it a singleton
- Fixed tests
2017-12-03 13:27:36 -08:00
Chris Ross (ASP.NET) 89d1862f21 #2139 Add ListenLocalhost and ListenAnyIP 2017-11-16 16:14:17 -08:00
Pranav K 186e9806cd Update samples and tests to target netcoreapp2.1 2017-11-16 14:43:15 -08:00
JanEggers 5b6db93383 fixed minor copy and paste error in mockconnection handler (#2163) 2017-11-15 11:30:35 -08:00
Pavel Krymets 73a37363e1
Migrate to new pipe APIs (#2124) 2017-11-13 15:04:54 -08:00
Nate McMaster 6c82f78c65 Pin tool and package versions to make builds more repeatable
Part of aspnet/Universe#575
2017-11-01 15:18:49 -07:00
Stephen Halter fdb4184dbf Sockets transport (#2100)
* Make Sockets the default transport
* Create separate Libuv and Sockets functional test projects
* Fix functional tests that fail with Sockets
* Moved OneToTenThreads test to Kestrel.Transport.Libuv.Tests
* Fix systemd activation tests to use libuv transport
* Dispose Sockets PipeFactory
* Improve Socket's server-side abort handling
* Add explicit rebinding test
2017-10-11 15:14:35 -07:00
Cesar Blum Silveira 551c1ebc0b Configure enabled protocols per endpoint and add HTTP/2 w/ prior knowledge support (#2067). 2017-09-27 10:14:39 -07:00
Cesar Blum Silveira a31d1e024c Merge code paths duplicated between HTTP/1.x and HTTP/2 implementations (#2017).
- Most of the shared code is in the HttpProtocol class (former Frame)
- Virtual calls handle protocol-specific things
- Move the ProcessRequestsAsync loop to HttpProtocol
- Implement HTTP/1.x request processing in Http1Connection and HTTP/2
  in Http2Stream, with Http1Connection<T> and Http2Stream<T> subclassing
  those classes in order to handle the generic HttpContext parameter
- Split MessageBody into Http1MessageBody and Http2MessageBody,
  with MessageBody containing shared member variables and methods
2017-09-14 17:35:57 -07:00
Stephen Halter 284367db9f Improve ConnectionLimitMiddleware and connection pipeline building (#2010)
* Improve ConnectionLimitMiddleware and connection pipeline building
* Add IDecrementConcurrentConnectionCountFeature
* Flow connection features from connection middleware
2017-08-30 11:30:20 -07:00
David Fowler 7854c0604a Remove the events on ConnectionContext (#2023)
- Use the pipe events and removed the Tasks from ConnectionContext
- Remove OnConnectionClosed from FrameConnection. Since the `FrameConnetion` is a single middleware, not the entire pipeline, we shouldn't need to wait on the connection close there.
- It seems like the callbacks are rooted on the pipe even after they fire. This needs to be investigated in pipelines.
2017-08-26 20:19:55 -07:00
David Fowler 2e6687031d Added initial connection middleware pipeline (#2003)
* Added initial connection middleware pipeline
- Implemented IConnectionBuilder on ListenOptions. Kept IConnectionAdapter for now.
- Delay the configure callback for ListenOptions until the server has started.
- Added ConnectionLimitMiddleware and HttpConnectionMiddleware
- Expose ConnectionAborted and ConnectionClosed on ConnectionContext and
IConnectionTransportFeature
- Updated the tests
- Removed IConnectionApplicationFeature
- Moved Application to IConnectionTransportFeature
2017-08-21 12:11:27 -07:00
Nate McMaster 26f1d4baa3 Use PackageLineup
PackageLineup is a way to manage PackageReference versions across large projects. It removes the version information from the repository and instead pulls the information from an external "lineup" file.
2017-08-16 14:10:43 -07:00
David Fowler 5c775073a4 Initial bedrock refactoring (#1995)
- Added Protocols.Abstractions
 - IConnectionHandler.OnConnection takes an IFeatureCollection instead of
 IConnectionInfo
 - Removed IConnectionContext and IConnectionInformation replaced with
 IConnectionTransportFeature
 - Updated FrameConnectionContext and FrameContext to have the relevant
 state instead of flowing the ConnectionInformation.
 - Updated tests
2017-08-16 00:02:48 -07:00
Pavel Krymets 659fa967a1 Consume corefxlab packages and private build of C# compiler (#1976) 2017-08-07 13:58:19 -07:00