Commit Graph

1253 Commits

Author SHA1 Message Date
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
Pavel Krymets 6f2f496c3d
React to splitting memory pool (#2521) 2018-04-24 14:11:47 -07:00
Stephen Halter b0e1fa5e30 Fix connection abort 2018-04-23 17:01:49 -07:00
Stephen Halter 6fd09af374
Improve logging of request drain timeout (#2480) 2018-04-16 11:53:10 -07:00
Andrew Stanton-Nurse 3a45136cc4
make IConnectionInherentKeepAliveFeature a boolean feature (#2496) 2018-04-16 11:34:06 -07:00
Ben Adams e30a02cee5 Less StringValue struct copies for header checks (#2488) 2018-04-13 18:21:50 -07:00
John Luo 2d51d23697 Add file logging to functional tests 2018-04-13 14:53:57 -07:00
Stephen Halter 10f3b6863e
Avoid nullref in KestrelEventSource (#2483)
* Avoid nullref in KestrelEventSource
* Improve HostNameIsReachableAttribute to speed up test discovery
2018-04-12 17:29:34 -07:00
Chris Ross (ASP.NET) ee12c4fcf2 Downgrade HTTPs handshake failures to debug #1853 2018-04-12 09:25:44 -07:00
Chris Ross (ASP.NET) c6fa9793eb Make Protocols internal 2018-04-12 08:53:27 -07:00
David Fowler ca44b4adfc
Moved kestrel specific features into transport abstractions (#2482) 2018-04-11 20:23:48 -07:00
David Fowler f6b2880369
Flow the ConnectionContext to the SNI callback (#2478) 2018-04-11 15:56:25 -07:00
Sébastien Ros e8bb88cb58
Fixing typo (#2477) 2018-04-11 14:27:53 -07:00
David Fowler b030ab7e49
Update Connections.Abstractions.csproj (#2473) 2018-04-09 17:55:14 -07:00
David Fowler 4760cce6aa
Remove IConnection (#2472) 2018-04-07 18:55:59 -07:00
Chris Ross (ASP.NET) 2ee0d6e337 Delay loading the dev cert #2422 2018-04-04 14:54:27 -07:00
Chris Ross (ASP.NET) 953496a970 Merge branch 'release/2.1' into dev 2018-04-04 13:44:56 -07:00
Chris Ross (ASP.NET) 9ea2c50068 Add SNI support #2357 2018-04-04 12:49:29 -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
Stephen Halter 623c27ab01
Dispose SocketAsyncEventArgs when we dispose the Socket (#2459) 2018-04-02 19:48:17 -07:00
Pavel Krymets ba2b883db0
Reaction to *Memory changes (#2446) 2018-04-02 16:44:13 -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
David Fowler a37fa83aee
Fixed a parser bug found when trying out the array pool (#2450)
- When using the array pool, we get terrible block density and as a result
the header parser was failing.
- This fixes the case where the parser needed to skip 2 blocks at the end
(which is unrealistic). Comparing the current index to the reader index is incorrect
since we may end up at the same index in another segment.
2018-04-01 00:04:02 -07:00
David Fowler 7382198356
Copy connection middleware when using ListenLocalHost (#2447)
- Connection middleware got removed during Clone when using ListenLocalhost
2018-03-31 07:29:35 -07:00
Andrew Stanton-Nurse 2c2a8dae01
Merge pull request #2445 from aspnet/release/2.1
Add IConnection to Connections.Abstractions (#2444)
2018-03-30 15:21:48 -07:00
David Fowler 67cb8a0e11 Add IConnection to Connections.Abstractions (#2444) 2018-03-30 15:20:31 -07:00
David Fowler 46ab09ca36 Merge branch 'release/2.1' into dev 2018-03-27 02:08:35 -07:00
David Fowler be04ccac6e
Move DuplexPipe into Kestrel.Core as internal (#2428) 2018-03-27 02:02:15 -07:00
Stephen Halter 68ff406862 Merge branch 'release/2.1' into dev 2018-03-26 14:51:21 -07:00
Stephen Halter a1de323ff4
Make LibuvTransport(Factory) pubternal (#2426) 2018-03-26 11:39:51 -07:00
David Fowler f0629dcbe4 Merge branch 'release/2.1' into dev 2018-03-24 03:14:59 -07:00
David Fowler 6701339835
Expose DefaultConnectionContext POCO (#2421)
- Made TransportConnecton derive from ConnectionContext
- Less objects, less opinions about what the ConnectionContext is. This diverges from what we do with HttpContext but it seems better overall.
- Made DefaultConnectionContext
 - Usable for unit testing
 - Usable for benchmarking
2018-03-24 03:12:53 -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
Nate McMaster 12abcd2f68
Merge branch 'release/2.1' into dev 2018-03-21 22:16:12 -07:00
Nate McMaster 54e538dcb5
Remove dotnet tool install from instructions on using dotnet-dev-certs 2018-03-21 22:10:48 -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
Ben Adams 2527face16 Query EndPoints once during reset (#2398) 2018-03-15 23:55:51 -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
David Fowler d31512528d
Items is now a first class property on ConnectionContext (#2395)
* Metadata is now a first class property on ConnectionContext
- Make IConnectionMetadata a manatory top level feature on ConnectionContext
- TransportConnection will lazily manifest ConnectionMetadata on first access.
This should avoid allocations since Kestrel isn't using this today.
2018-03-14 20:56:30 -07:00
Stephen Halter 9901f0f3e4
Default to the managed socket transport (#2392) 2018-03-14 11:50:10 -07:00
David Fowler 04eef791bc
Added transfer format to Protocol.Abstractions (#2391) 2018-03-14 08:16:38 -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
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
Ben Adams f6108928d8 Pass ReadOnlySequence via in (#2389)
* Pass ReadOnlySequence via in
2018-03-13 17:54:01 -07:00
Chris Ross (ASP.NET) bfdb48717f Host header format validation 2018-03-13 16:37:03 -07:00
David Fowler bcea8330c4
Clean up some left overs (#2385) 2018-03-13 14:10:06 -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
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
David Fowler e7d3b0c5f9
Remove KestrelThreadPool abstraction and replaced it with PipeScheduler (#2371) 2018-03-12 14:49:19 -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
Chris Ross (ASP.NET) 42fbba3520 More detailed request timeout exceptions #2245 2018-03-07 12:23:06 -08:00
Ben Adams 300453396a Pass StringValues via in (#2295) 2018-02-28 19:54:44 -08:00
Pavel Krymets 2c108d9ba1
React to pipes in corefx (#2337) 2018-02-28 12:41:51 -08:00
Justin Wyer 83bf2375b3 #2035 Do not await OnCompleted handlers before sending the Response (#2324) 2018-02-25 18:10:04 -07:00
Ben Adams de7e2a2573 Use enum for method rather than string compares (#2294) 2018-02-23 14:29:42 -08:00
Nikita Tsukanov 39951e892e Don't throw in HttpRequestStream.Flush (#2342)
Because read-only streams apparently can have Flush semantics and this behavior is expected by some of built-in stream wrappers (e. g. CryptoStream)

https://github.com/dotnet/corefx/pull/27327#pullrequestreview-98384813
https://github.com/aspnet/KestrelHttpServer/issues/2341
2018-02-23 09:51:09 -08:00
Ben Adams 6728e756b7 Sanitize and centralize exception throws (#2293)
* Sanitize and centralize exception throws
2018-02-23 09:24:20 -08:00
Ben Adams 6252ffd86a Flatten exception handling (#2313)
3 nested try blocks with 3 finallies in same function O_o
2018-02-22 16:46:18 -08:00
Ben Adams c57784447e Speed up TryGetAsciiString (#1973)
* Widen
* Remove TryGetAsciiStringVectorCheckShifts
* Add Span version to benchmarks
2018-02-22 16:45:31 -08:00
Ben Adams c0f88ebdc1 Faster IFeatureCollection.Get<TFeature> (#2290) 2018-02-22 16:44:38 -08:00
David Fowler 3fc69dc71f
Updated Streams to override Memory and Span overloads (#2333)
- Also plumbed Memory/Span through Kestrel over ArraySegment.
- Throw synchronously from the HttpRequestStream instead of async in some cases.
2018-02-21 00:00:46 -08:00
brightcr a72e5db797 Removed code to set response headers - connection and upgrade as it should be set by caller e.g. WebSockets Middleware (#2329) 2018-02-19 08:36:28 -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
Alessio Franceschelli 14332c5daf Allows Content-Length for 304 Not Modified response (#2321) 2018-02-14 16:01:07 -08:00
Alessio Franceschelli 9341f72b8d Consumes request before closing connection (#2314) 2018-02-14 11:46:13 -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
Joshua Clark 5dd590e75e Add clearer exception message to HttpResponseStream ODE (#2305) 2018-02-08 17:28:00 -08:00
Redouane Sobaihi 8f25c4e8ca Include limits default values in intellisense comments. (#2304) 2018-02-08 11:37:01 -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 8ea181f088
Use the OnWriterCompleted and OnReaderCompleted events directly. (#2280) 2018-01-29 14:27:47 -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
Javier Calvarro Nelson 8280c1b73f Update Kestrel HTTPS developer certificate error message 2018-01-26 12:55:15 -08:00
Chris Ross (ASP.NET) 4fd4fd9f41 Mark HTTP/2 as not supported with an AppContext switch override. 2018-01-24 15:29:59 -08:00
Stephen Halter 526dfdb332
Switch back to libuv as the default transport (#2257)
* Switch back to libuv as the default transport
2018-01-18 17:25:28 -08:00
Stephen Halter cf371a4e74
Disable heartbeat warning when debugger is attached (#2258) 2018-01-16 18:11:11 -08:00
Stephen Halter f4d27e67bb
Improve server shutdown logic (#2247)
Ensure connections abort when they don't close gracefully.
2018-01-16 16:43:45 -08:00
Javier Calvarro Nelson e6bb551018 Adds support for loading the developer certificate from a pfx file
* If we can't find a developer certificate on the certificate store
  we will look for a developer certificate on the file system if a
  password has been specified for the Development certificate.
* We will look at ${APPDATA}/ASP.NET/https/<<AppName>>.pfx for windows
  and fallback to ${HOME}/.aspnet/https/<<AppName>>.pfx
* In case the password wasn't specified through configuration, the file
  is not found on the file system or can't be loaded, we won't
  do anything.
2018-01-12 16:32:06 -08:00
Chris Ross (ASP.NET) 420500e2a9 #2102 Always start the response before draining the request. 2018-01-09 15:59:19 -08:00
Steffen Forkmann 9a8dd6ef12 Allow Content-Length 0 for Websocket-Connection (#2217) 2018-01-09 15:01:09 -08:00
Chris Ross (ASP.NET) ad2149f5f0 Change ApplicationProtocol to ReadOnlyMemory<byte> #2182 2018-01-05 09:25:30 -08:00
Stephen Halter 664055fa43 Revert "Change ApplicationProtocol to ReadOnlyMemory<byte> #2182"
This reverts commit 2d3a01d48d.
2018-01-04 16:17:36 -08:00
Chris Ross (ASP.NET) 2d3a01d48d Change ApplicationProtocol to ReadOnlyMemory<byte> #2182 2018-01-04 15:26:40 -08:00
Pavel Krymets 1fa001e7db
React to pipeline changes (#2234)
React to pipeline changes
2018-01-04 09:54:42 -08:00
Chris Ross (ASP.NET) dfaf37cbba Implement config support #1290 #1879 #2016 #2166 #2167 #2188 2017-12-21 09:12:32 -08:00
Pavel Krymets 3a0a133a02
Remove use of Dangerous* Span APIs and use MemoryMarshal instead (#2228) 2017-12-19 11:33:39 -08:00
Chris Ross (ASP.NET) d505d20ba7 Merge Kestrel.Https into Kestrel.Core. Fix sample. 2017-12-18 14:08:14 -08:00
BrennanConroy 95dc8824c3
Upgrade package references and react to corefx API changes (#2212) 2017-12-11 09:02:37 -08:00