Commit Graph

973 Commits

Author SHA1 Message Date
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
Pavel Krymets 7b3491e11e
Prepare to 0 byte flush change (#2442) 2018-03-29 20:27:54 -07:00
Ryan Brandenburg cc8c140cca Skip flaky test 2018-03-29 08:48:40 -07:00
Stephen Halter a1de323ff4
Make LibuvTransport(Factory) pubternal (#2426) 2018-03-26 11:39:51 -07:00
Stephen Halter 408700698c React to aspnet/BuildTools#611 (#2409) 2018-03-23 12:49:16 -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 9901f0f3e4
Default to the managed socket transport (#2392) 2018-03-14 11:50:10 -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
Chris Ross (ASP.NET) bfdb48717f Host header format validation 2018-03-13 16:37:03 -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 f52771d0e9 Fix MicrosoftExtensionsBuffersTestingSources package version variable 2018-03-08 15:24:20 -08: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
Stephen Halter b86df651af
Fix Http2ConnectionTests flakiness (#2364)
- The default PipeScheduler got switched from Inline to ThreadPool.
- This switches the Http2ConnectionTests PipeSchedulers back to ThreadPool.
2018-03-05 16:28:35 -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
Stephen Halter 06945ba81e Include exceptions when displaying test logs (#2346) 2018-02-24 16:51:57 -08:00
Stephen Halter 0134e56909 Include exceptions when displaying test logs (#2344) 2018-02-23 22:22:00 -08: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 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
Pavel Krymets d996f6b7fc
Drop Pipelines.Testing dependency that we don't use (#2343) 2018-02-22 10:27:47 -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
David Fowler da6325251e Revert "Remove check for above debug logs"
This reverts commit 38a4560e1c.
2018-02-17 09:40:42 -08:00
David Fowler 38a4560e1c Remove check for above debug logs 2018-02-17 09:39:59 -08:00
Mike Harder 07026cf6db
Re-enable test ParseRequestLineSplitBufferWithoutNewLineDoesNotUpdateConsumed (#2328)
- Addresses #2243
2018-02-16 17:11:27 -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
Ryan Brandenburg 93b10d9060 Shorten logger to prevent longpath 2018-02-02 16:03:01 -08:00
Ryan Brandenburg 9c2158fd37 Skip flaky test 2018-01-31 14:23:14 -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
Chris Ross a57bc4b3bb
Merge pull request #2272 from aspnet/release/2.1
Mark HTTP/2 as not supported with an AppContext switch override.
2018-01-24 15:34:57 -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
Ryan Brandenburg 1c0cf15b11 Add messages to Asserts (#2259) 2018-01-23 16:25:03 -08:00
Stephen Halter ee1c5c440c
Fix HeartbeatTests flakiness (#2268) 2018-01-23 10:58:22 -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 040ea2e6b4
Fix MockLibuv.OnPostTask (#2260)
Prevents UvWriteReq leaks in LibuvOutputConsumerTests
2018-01-18 15:53:46 -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
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
Chris Ross (ASP.NET) d505d20ba7 Merge Kestrel.Https into Kestrel.Core. Fix sample. 2017-12-18 14:08:14 -08:00
Stephen Halter 9f02935074
Call Listen after Bind in tests (#2221) 2017-12-15 12:45:32 -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
Tornhoof 5e9e3a8574 Make sure to add whitespace after the status code even if the reasonphrase is empty (#2184) 2017-11-29 12:30:27 -08:00
Pranav K 76de77746d Eclipse CoreFx package versions to prevent package downgrade warnings 2017-11-22 19:02:22 -08:00
Chris Ross 8e1da5d1f6
Expose WebHostBuilderContext in UseKestrel #1334 (#2177) 2017-11-22 10:19:17 -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
Stephen Halter 53b4697269
Show cause of connection failure in test (#2155) 2017-11-09 16:56:08 -08:00
Nate McMaster 7d712f58aa Put Libuv.FunctionalTests into a separate test group 2017-11-08 14:01:23 -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
Cesar Blum Silveira 8c4bdbcf6b Add "zero config" HTTPS support using local development certificate. (#2093) 2017-10-25 13:59:09 -07:00
Andrew Stanton-Nurse 1678c54291 Add some tracing and increase timeout for flaky test (#2130) 2017-10-25 11:56:43 -07:00
Andrew Stanton-Nurse 7d205d1093 add event names to Logging messages (#2132) 2017-10-25 11:27:05 -07:00
Cesar Blum Silveira 3fbfba63f8 HTTP/2: implement 100-continue (#2106) 2017-10-18 16:31:50 -07:00
Cesar Blum Silveira d4f263acce Fix typos in project names. 2017-10-16 14:13:05 -07:00
Cesar Blum Silveira 9dfffd14bb HTTP/2: support trailers. 2017-10-12 17:26:20 -07:00
Stephen Halter 66a3c9496a Set SO_REUSEADDR on managed listen sockets on Unix (#2111)
- https://github.com/dotnet/corefx/issues/24562
2017-10-12 12:26:52 -07:00
Cesar Blum Silveira deed6c9780 HTTP/2: add exception error messages and log them. 2017-10-12 11:23:57 -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 d46d2ce193 HTTP/2: validate request headers prior to starting new stream. 2017-10-10 13:12:34 -07:00
Nate McMaster e2c22b91af Minor test code changes to resolve xUnit2013 build warning 2017-10-06 08:50:58 -07:00
Cesar Blum Silveira 11ce1395e5 HPACK fixes and improvements. 2017-10-04 12:59:41 -07:00
Stephen Halter 83e2084368 Fix flaky MaxRequestBodySizeTest (#2092)
- Don't attempt to send any data after the request might already be rejected.
2017-10-03 14:34:14 -07:00
Cesar Blum Silveira 1b1137b880 HTTP/2: connection error when receiving frames disallowed by stream states. 2017-10-02 10:24:57 -07:00
Cesar Blum Silveira bb9840a552 HTTP/2: do not ACK PING frames received with ACK set. 2017-09-29 16:40:01 -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 343ce0f01b HTTP/2: close connection with PROTOCOL_ERROR when a stream depends on itself. 2017-09-22 16:35:12 -07:00
Cesar Blum Silveira e3533885a8 HTTP/2: close connection with PROTOCOL_ERROR when receiving a frame with an even stream ID. 2017-09-21 12:26:09 -07:00
Cesar Blum Silveira a4887f4caf HTTP/2: close connection with PROTOCOL_ERROR when receiving GOAWAY frame with non-zero stream ID. 2017-09-21 11:57:31 -07:00
Cesar Blum Silveira fc56552b2a HTTP/2: close connection on PING frame with non-zero stream ID. 2017-09-21 11:23:15 -07:00
Cesar Blum Silveira 555a881cb7 HTTP/2: close connection with PROTOCOL_ERROR when an unknown frame type is interleaved with headers. 2017-09-21 11:20:52 -07:00
Cesar Blum Silveira e2af346733 HTTP/2: close the connection with PROTOCOL_ERROR when a PUSH_PROMISE frame is received. 2017-09-21 11:20:33 -07:00
Cesar Blum Silveira 9944c0fd43 Fix reading DATA frames with maximum length. 2017-09-20 11:15:31 -07:00
Cesar Blum Silveira 91eb4cd54c Fix flakiness in KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests (#1684). 2017-09-18 15:12:13 -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
Cesar Blum Silveira d28b413390 Add tracing to KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests to investigate test failures. 2017-09-14 16:55:44 -07:00
Cesar Blum Silveira da7bc24eec Add request parsing regression tests. 2017-09-13 14:49:45 -07:00
Stephen Halter 1e465e9643 Improve timeout logic 2017-09-08 12:50:01 -07:00
Cesar Blum Silveira 66d8e8198d Re-enable TestKeepAliveTimeout. 2017-09-07 17:24:33 -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
Damir Ainullin 5bf7d3b28a Fix typo in FrameTests (#2033) 2017-08-27 20:11:00 -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
Cesar Blum Silveira a145734d43 Fix flakiness in ConnectionClosedWhenResponseDoesNotSatisfyMinimumDataRate (#1955). 2017-08-24 10:17:05 -07:00
David Fowler dc9ed60465 Create the connection logging scope in ConnectionHandler (#2013)
- Instead of doing it on the FrameConnection only. This will
make sure all middleware logs get the connection id as part of their scope.
2017-08-22 14:32:58 -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
Ben Adams 442ee80039 Less awaits for Reponse Write(Async) 2017-08-17 15:51:22 -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
Cesar Blum Silveira 0fafd19ec9 Initial HTTP/2 support.
What works:

- HTTP/2 over TLS1.2 with ALPN
- Request and response flow
  - Headers are compressed and decompressed with HPACK
  - Request body can be read by streams (if present)
  - MVC template app with individual auth works fine
- PRIORITY frames are validated
- RST_STREAM frames are validated and abort streams
- SETTINGS frames are validated and ACKed
- PING frames are validated and ACKed
- GOAWAY frames stop connections
- WINDOW_UPDATE frames are validated
- CONTINUATION frames are sent for large header blocks

What doesn't work yet:

- Flow control in either direction
- It's not possible to encode a single header across more than one frame
  - Affects only a very large header (name and value combined ~16KB long)
- Request trailers
- Response trailers
- Limits and timeouts in `KestrelServerLimits` are not enforced on HTTP/2
- HPACK use is very limited on the send side
  - Literals are not Huffman-encoded
  - Common headers (e.g. "server: Kestrel") are never indexed
- Honoring client settings
- Some error checking is still missing (e.g. validating incoming frame size)
2017-08-16 10:04:44 -07:00
Nate McMaster c10ac85cf2 Add fixes for problems discovered by xunit.analyzers (#1999)
* Add fixes to tests for problems discovered by xunit.analyzers 0.6.1

* PR feedback. Add comments about why we have a #pragma
2017-08-16 09:37:49 -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
Nate McMaster d3cf0494e7 Upgrade to xunit 2.3.0-beta3 2017-08-11 17:22:40 -07:00
Stephen Halter 02028b65c7 Stop using ConcurrentBag in tests for complex types (#1990)
dotnet/corefx#23068
2017-08-11 16:30:03 -07:00
Nate McMaster d3fb5e76f1 Remove dependency on a custom task to detect when compiling on macOS (#1987)
MSBuild.IsOSPlatform is new to MSBuild 15.3 and can be used to determine when we are building on macOS.
2017-08-09 16:48:02 -07:00
Pavel Krymets 659fa967a1 Consume corefxlab packages and private build of C# compiler (#1976) 2017-08-07 13:58:19 -07:00
Cesar Blum Silveira d68f8165e1 Disable test ConnectionClosedWhenResponseDoesNotSatisfyMinimumDataRate on Linux. 2017-08-04 17:45:07 -07:00
Nate McMaster 6584a8b5fd Shorten folder names
Remove the Microsoft.AspNetCore.Server prefix from csproj and their folders. This is required to help us avoid max path issues on Windows.
2017-07-28 11:11:55 -07:00
Pavel Krymets fd6617d101 React to pipeline changes (#1969) 2017-07-26 15:51:06 -07:00
Stephen Halter ecb26d9bbc Reenable a connection adapter test on TeamCity (#1961)
- Add more tracing to help diagnose failures if they pop up again
2017-07-19 15:26:29 -07:00
Stephen Halter 09c92d61d0 Merge branch 'rel/2.0.0' into dev 2017-07-17 14:58:16 -07:00
Stephen Halter f0e572075b Fix FlushAsync when a ConnectionAdapter is configured (#1957)
* Also remove async void everywhere
2017-07-17 14:57:26 -07:00
David Fowler 7ebbdad974 Add support for connection scopes if logging is enabled (#1953)
* Add support for connection scopes if logging is enabled
- Don't create a scope if logging isn't on
- Copied the pattern we use in Hosting
2017-07-12 11:45:08 -07:00
Cesar Blum Silveira fd1758fdfc Make StopAsync multi-thread safe (#1666). 2017-07-11 14:29:50 -07:00
Cesar Blum Silveira b0dc76a6ae Fix flakiness in RejectsRequestWithContentLengthAndUpgrade (#1742). 2017-07-11 12:59:29 -07:00
Cesar Blum Silveira 6e70b1bcca Fix flakiness in MaxRequestBufferSizeTests.LargeUpload (#1850). 2017-07-10 15:12:01 -07:00
Cesar Blum Silveira eca4bfe6c3 Add response minimum data rate feature. 2017-07-07 22:37:25 -07:00
Nate McMaster ec72c255f6 Make HttpsConnectionAdapter pubternal 2017-07-07 14:23:34 -07:00
Nate McMaster a3c157cb61 Validate certificate EKU when it is provided 2017-07-07 11:31:06 -07:00
Nate McMaster eea0c6490e Fix flaky test: ConnectionResetMidRequestIsLoggedAsDebug (#1933) 2017-07-03 11:37:23 -07:00
Aristarkh Zagorodnikov 00d17dea79 Domain socket handles (#1922)
* UvPipeHandle.Open(IntPtr) and underlying interop
* LibuvConstants.ENOTSUP
* IEndpointInformation.HandleType along with ListenOptions extra ctor and handle type re-specification
* Exception-based auto-detection of socket type in Listener, accept socket creation support for detected handle types in ListenerContext
* Added systemd Unix socket activation tests
2017-07-03 11:11:23 -07:00
Stephen Halter e9ffcdb414 Add feature to optionally disallow synchronous IO (#1919)
* Allow synchronous IO by default
2017-07-03 11:07:17 -07:00
Aristarkh Zagorodnikov 6e45de2205 Improved systemd activation tests (#1930)
* Added BASE_PORT envvar for SampleApp to allow for multiple instances to coexist

* Moved to systemd-socket-activate for activation tests

* Style fixes
2017-07-02 21:06:13 -07:00
Cesar Blum Silveira 81c2b57dda Increase default request min rate to 240 bytes/second (#1929). 2017-06-30 14:58:44 -07:00
Cesar Blum Silveira f2061ed716 Rename request body min rate APIs (#1901). 2017-06-29 17:16:34 -07:00
Stephen Halter 3ba8c2d3f0 Add ListenHandleTests (#1923) 2017-06-29 11:50:21 -07:00
Aristarkh Zagorodnikov a247a3d8e6 Attempting to fix systemd activation with minimal changes (#1925) 2017-06-29 11:01:03 -07:00
Nate McMaster 9b4be69e9d Do not enforce timeouts when the debugger is attached 2017-06-27 16:56:27 -07:00
Cesar Blum Silveira 3084227314 React to Testing#280. 2017-06-23 16:47:50 -07:00
Stephen Halter ea2f1033d3 Make Transport.Abstractions pubternal (#1911)
* Remove Sockets transport dependency from primary package
* Use deprecated travis images to keep systemd tests running

https://blog.travis-ci.com/2017-06-21-trusty-updates-2017-Q2-launch
2017-06-21 14:58:57 -07:00
Stephen Halter e1e7c9b810 Wait until the writer is complete to reset RequestBodyPipe (#1902) 2017-06-20 10:56:23 -07:00
Cesar Blum Silveira 892de7d4b8 Merge branch 'rel/2.0.0-preview2' into dev 2017-06-19 16:39:00 -07:00
Cesar Blum Silveira 7afd279a6d Don't pause and resume read timing on upgrade requests (#1904). 2017-06-19 16:37:47 -07:00
Stephen Halter d879518a18 Always complete RequestBodyPipe.Reader (#1893)
* Disable test that leaks blocks in debug builds
* Move some test helpers
2017-06-12 11:11:40 -07:00
Cesar Blum Silveira 48638cb1cd Merge branch 'rel/2.0.0-preview2' into dev 2017-06-08 15:01:34 -07:00
Cesar Blum Silveira fcc04f8c3d Add request body minimum data rate feature (#1874). 2017-06-08 14:36:03 -07:00
Pranav K 3f771ef0bc Remove usage of TaskCache (#1889)
* Remove usage of TaskCache
2017-06-08 13:47:01 -07:00
Stephen Halter f96c48c08d Add a request body size limit (#1877)
- Implement IHttpMaxRequestBodySizeFeature
2017-06-07 11:48:56 -07:00
Hao Kung 0390779084 Revert " #1875 Add Configuration support and tests."
This reverts commit c6e228d176.
2017-06-05 13:48:38 -07:00
Chris R c6e228d176 #1875 Add Configuration support and tests. 2017-06-02 12:30:12 -07:00
Pavel Krymets 3c731ceb13 React to logging in DI changes (#1873) 2017-06-02 08:34:22 -07:00
Nate McMaster a334e88597 Decrease connections used in ConnectionCountingReturnsToZero for slow test agents (#1872) 2017-05-30 14:16:07 -07:00
Nate McMaster c343628926 Implement max connection limits
- Added new options to allow configuring the maximum number of concurrent connections and upgraded connections.
- `KestrelServerLimits.MaxConcurrentConnections` defaults unlimited.
- `KestrelServerLimits.MaxConcurrentUpgradedConnections` defaults to unlimited.
- Calls to IHttpUpgradeFeature.UpgradeAsync() will throw when the MaxConcurrentUpgradedConnections limit has been reached.
- Kestrel will close new connections without response when MaxConcurrentConnections is reached.
2017-05-26 12:27:48 -07:00
Cesar Blum Silveira 009759c7f6 Fix broken microbenchmarks (#1861). 2017-05-25 16:01:17 -07:00
Stephen Halter 6c0af445e5 Fix flaky test and improve TestServer (#1859) 2017-05-24 15:45:54 -07:00
Cesar Blum Silveira 197eb43d8a Read request body concurrent to app execution. 2017-05-22 12:23:02 -07:00
Nate McMaster 390582dcf1 Target .NET Standard 2.0 (#1849) 2017-05-20 10:37:35 -07:00
Pavel Krymets 34ab089e7b React to scheduler changes (#1846) 2017-05-18 14:49:48 -07:00
Cesar Blum Silveira f8a6433cd5 Fix flaky ResponseTests.FailedWritesResultInAbortedRequest. 2017-05-17 17:01:34 -07:00
Nate McMaster 7f0319f5dd Throw InvalidOperationException from IHttpUpgradeFeature.UpgradeAsync when request is not upgradable 2017-05-17 11:38:42 -07:00
Cesar Blum Silveira 10f88aeafc Fix duplicate ID test warning. 2017-05-17 10:57:39 -07:00
Nate McMaster 643a43c3d6 Update test framework versions and fix issues with tests (#1834) 2017-05-17 09:36:40 -07:00
Pavel Krymets d22f689fd2 Add support to use System.Memory as a package instead of internilized source (#1821) 2017-05-16 16:54:03 -07:00
David Fowler cf16d601d6 Remove synchronous Write APIs (#1838) 2017-05-15 19:04:04 -07:00
Stephen Halter 41f1922502 Simplify LibuvConnection.OnRead() (#1828)
* Simplify LibuvConnection.OnRead()

- Fix a null reference that sometimes occurs given an EOF status
2017-05-15 11:02:16 -07:00
Kiran Challa 01b8d5fad1 Skip flaky temporarily to unblock the mirror 2017-05-13 20:41:10 -07:00
Stephen Halter e149852d62 Skip flaky tests on TeamCity agents (#1832) 2017-05-12 14:36:47 -07:00
Cesar Blum Silveira 37f15bdd85 Create Frame in FrameConnection. 2017-05-10 16:48:37 -07:00
David Fowler b9518e3684 Invert the dependency between connection adapters and Frame (#1822)
* Invert the dependency between connection adapters and Frame
- Removed PrepareRequest from IAdaptedConnection and instead added
a feature collection to the ConnectionAdapterContext. This allows features to be set
once by the adapter instead of per request. It's the Frame's job to copy features
from the connection level feature collection into the per request feature collection.
- Set the scheme to "https" based on the presence of ITlsConnectionFeature.
- Always set ITlsConnection feature if the HttpsAdaptedConnection doesn't throw during
the handshake
2017-05-10 15:29:43 -07:00
David Fowler c8b6a2be56 More FrameConnection refactoring (#1820)
* More FrameConnection refactoring
- This change reverts the change to complete the writer with an
exception on abort because of the number of first chance exceptions
that get thrown.
- This change also moves connection logging into FrameConnection instead
of being split between the ConnectionHandler and FrameConnection.
- Fixed issues with LibuvOutputConsumerTests that leak WriteReq since
cancelled writes no longer end the connection.
2017-05-09 17:40:25 -07:00
David Fowler c48113ad80 Refactoring and of FrameConnection and Frame (#1816)
* Refactoring and of FrameConnection and Frame
- Building on top of the last refactoring of FrameConnection, this change aims to clean up
the communication between the Frame and FrameConnection by removing some concepts and
being consistent about the communication between Frame and FrameConnection with or without
connection adapters. Changes include:
- Removing ConnectionLifetimeControl, ISocketOutput, StreamSocketOutput
- Moving more initialization of the frame to FrameConnection after the pipes
are setup
- OutputProducer communicates cancellation via the IPipeWriter instead of the output's IPipeReader.
- Frame always communicates via the pipes and that communications flows through the layers to the transport.
This means that each 1/2 of the adapted pipeline handles closing the right side of the transport at the
right time, propagating exceptions as necessary.
- This is how the flow looks now:
            ->                        ->
[transport]     [connection adapters]     [frame]
            <-                        <-
- Transports need to handle a ConnectionAbortedException on the output as a signal to stop
writing and end the connection. This will no longer try to drain the output but will just stop
writing and end the response immediately.
- Remove frame.Abort when cancellation on Write fails.
- Unify the connection shutdown logic
- Dispose 1/2 initialized connection adapters

#1815
2017-05-08 20:44:13 -07:00
Stephen Halter 6e2fdda162 Simplify connection lifetime control flow (#1776)
* Also make IAdaptedConnection disposable
2017-05-05 16:11:01 -07:00
Pavel Krymets 28b479c99a Merge branch 'rel/2.0.0-preview1' into dev 2017-05-05 14:35:41 -07:00
Pavel Krymets a9c165e666 netcoreapp2.0 (#1810) 2017-05-05 14:31:34 -07:00
David Fowler cd1568d7f4 Remove uv_shutdown because FIN is already sent during uv_close (#1811)
* Remove uv_shutdown because FIN is already sent during uv_close

#1808
2017-05-05 12:52:10 -07:00
Stephen Halter 557cf29e4a arespr/knownmethods-optimizations cleanup 2017-05-04 12:27:22 -07:00
Stephen Halter f464760bf8 Merge branch 'arespr/knownmethods-optimizations' into dev 2017-05-04 11:44:54 -07:00
David Fowler b21f84543a Use WebHostBuilder as an implementation detail of TestServer (#1804)
- This will make tests run more similarly so we can swap out the
transport more easily.
2017-05-03 19:35:09 -07:00
Stephen Halter 0afb874555 Fix flaky tests that bind to discovered IP addresses (#1795) 2017-05-01 12:20:53 -07:00
Stephen Halter 6a3d6d4273 Fix flaky tests that bind to discovered IP addresses (#1795) 2017-05-01 11:41:10 -07:00
Nate McMaster 4dc7946cd8 Implement new request trace identifier format
The format:
The trace identifier begins with connection ID and ends with a number that increments with each request per connection.

Example:
Connection ID = xyz
Request 1 = "xyz:00000001"
Request 2 = "xyz:00000002"
...
Request 15 = "xyz:0000000F"
Request 16 = "xyz:00000010"
2017-05-01 09:50:47 -07:00
Stephen Halter 7122b6c4aa Fix flaky heartbeat test (#1794) 2017-04-29 00:42:27 -07:00
David Fowler 749e282102 Prepare for OnReader/WriterCallbacks changes (#1791)
- This change does a few things:

1. It adds the events we will replace with
pipe events to IConnectionContext and IConnectionInformation to get out of
band notifications about pipe completions.

2. It also implements those callbacks
and exposing slight changes we'll need to make once we have them. The idea is
that we can delete/replace these methods once we have the new pipe API and things
will keep working.
2017-04-29 00:41:48 -07:00
Cesar Blum Silveira 3b2d0a52f3 Merge branch 'rel/2.0.0-preview1' into dev 2017-04-28 10:00:17 -07:00
Cesar Blum Silveira 9185deecda Avoid port conflicts in AddressRegistrationTests (#1721). 2017-04-28 09:56:29 -07:00
David Fowler 5b62024fc8 * Properly handle FINs and resets in the SocketConnection (#1782)
- FIN from the client shouldn't throw
- Forced close from the server should throw
- Properly wrap connection reset exceptions and other exceptions
in IO exceptions
- This gives kestrel control over when the output closes
- Fixed one test that assumed libuv
- Dispose the connection to yield the reader

Fixes #1774
2017-04-27 17:55:35 -07:00
Stephen Halter 79ea2bb9b3 Quick fix for SslStream ODEs in HttpsAdaptedConnection.PrepareRequest (#1786) 2017-04-27 16:56:07 -07:00
David Fowler 0755495ce5 Remove Logging dependency from the http parser (#1780)
* Remove Logging dependency from the http parser
2017-04-27 08:46:08 -07:00
Nate McMaster c2f15fcac3 Move user-facing strings into resource files 2017-04-26 17:22:55 -07:00
Nate McMaster 9464003bda Add wait in ListenerPrimaryTests to avoid race condition with List.Add 2017-04-26 11:03:28 -07:00
Nate McMaster eb1301f28d Skip HostName binding test when network is unreachable 2017-04-25 14:33:06 -07:00
Pranav K 5b976a9fa3 Use Bundled NETStandard.Library \ NETCoreApp versions instead of explicitly specifying one 2017-04-25 12:51:48 -07:00
Stephen Halter a4def946a6 Fix flaky 400 response tests (#1758) 2017-04-24 23:48:47 -07:00
Pavel Krymets e3e78bc461 Fix LibuvOutputConsumerTests (#1757)
* Fix LibuvOutputConsumerTests
2017-04-24 17:37:30 -07:00
David Fowler 9e80fb65bd Removed the wrote after disconnect log (#1747)
- It's not very useful
2017-04-24 17:34:56 -07:00
Stephen Halter f26c31c116 Fix scope id test failures on mac and linux (#1754) 2017-04-24 17:15:41 -07:00
Nate McMaster 39047638cc Add debug logging in address binding when IPv6Any fails 2017-04-24 17:14:43 -07:00
Nate McMaster 089ff49643 Put hostname address registration into separate test 2017-04-24 17:14:43 -07:00
David Fowler a98581670e Schedule connection adapter reads on configured thread pool (#1741)
* Schedule connection adapter reads on configured thread pool
- This should speed up connection adapters as we don't block
new reads. It *might* also help some of the test flakiness
2017-04-24 12:19:22 -07:00
Pavel Krymets df9e48b1f0 Add cancellation support for write async (#1736) 2017-04-24 11:58:08 -07:00
David Fowler a749939be4 Clean up libuv connection (#1726)
* Clean up libuv connection
- Cancel all pending flushes on the input writer before
disposing the stream handle.
- Complete the pipe before disposing the socket
- Added logging for connection pause/resume.
- Added test
2017-04-21 13:13:05 -07:00
David Fowler dcea15dba7 Skipped newly failing AddressRegistration tests failing tests on OSX and Linux (#1732)
* Unblock CI
2017-04-21 01:54:44 -07:00
Stephen Halter a14eabce9a RequestTests and ResponseTests cleanup (#1723) 2017-04-20 16:33:05 -07:00
Nate McMaster ee9feedc27 Improve implementation of IHttpUpgradeFeature
After upgrade has been accepted by the server:
 - Reads to HttpRequest.Body always return 0
 - Writes to HttpResponse.Body always throw
 - The only valid way to communicate is to use the stream returned by IHttpUpgradeFeature.UpgradeAsync()

Also, Kestrel returns HTTP 400 if requests attempt to send a request body along with Connection: Upgrade
2017-04-20 12:42:58 -07:00