Commit Graph

514 Commits

Author SHA1 Message Date
Cesar Blum Silveira 6d7ddc45ef Fix deadlock in SocketOutput (#1278). 2017-01-06 20:33:35 -08:00
Stephen Halter 2351c1b558 Create a direct way to configure Kestrel endpoints
- Replace endpoint configuration via .UseUrls() or --server.urls with Listen*
  methods on KestrelSerrverOptions.
- Replace IConnectionFilter with IConnectionAdapter which no longer exposes
  ServerAddress via a context.
- Simplify libuv Listener classes
- Support systemd socket activation
- Add docker-based test for systemd socket activation to be run on Travis
2017-01-06 17:37:58 -08:00
Pranav K c72605f43a Fix NuGet downgrade warning
Works around warning where a P2P reference is explicitly listed in the project. For e.g.

warn :  SampleApp (>= 1.1.0) -> Microsoft.AspNetCore.Server.Kestrel.Https (>= 1.2.0) -> Microsoft.AspNetCore.Server.Kestrel
warn :  SampleApp (>= 1.1.0) -> Microsoft.AspNetCore.Server.Kestrel (>= 1.2.0)
2016-12-28 09:44:21 -08:00
Cesar Blum Silveira 81a8ba0347 Skip tests commentd out in 973b705. 2016-12-23 17:38:54 -08:00
Cesar Blum Silveira 973b705cdb Disable tests that hang on SslStream.WriteAsync after update to CoreFx 4.4. 2016-12-22 18:37:14 -08:00
Ben Adams 4c0413c804 Implement Stream Flush+FlushAsync fully
Streams should pass through the flush and not assume the underlying
Stream's Flush behaviour
2016-12-22 13:40:40 +00:00
Pranav K 5b8f7c2b2b Updating to 4.4 CoreFx packages 2016-12-21 22:22:13 -08:00
Cesar Blum Silveira 461caa85f4 Test RequestHeadersTimeout in KestrelServerLimitsTests.RequestHeadersTimeoutValid (#1268). 2016-12-21 13:22:20 -08:00
Cesar Blum Silveira b41c4078bd Abort connections not closed during shutdown (#1112). 2016-12-20 14:44:34 -08:00
Cesar Blum Silveira 4485bfec39 Fix test races caused by cedbe76. 2016-12-13 13:57:26 -08:00
Cesar Blum Silveira cedbe76f52 Abort request on client FIN (#1139). 2016-12-13 12:03:33 -08:00
Cesar Blum Silveira 51ecbd7949 Add benchmarks for Frame writes. 2016-12-13 11:33:56 -08:00
Cesar Blum Silveira defcbdb907 Revert "Add MaxRequestBodySize limit (#478)."
This reverts commit e53a87be9c.
2016-12-09 16:30:12 -08:00
Cesar Blum Silveira e53a87be9c Add MaxRequestBodySize limit (#478). 2016-12-05 17:06:57 -08:00
Stephen Halter 02b84d7ae1 Make ListenerPrimaryTests more reliable
- The Task from ListenerSecondary.StartAsync() may complete before the
  PrimaryListener adds the pipe connection to its dispatch pipe list.
2016-11-28 14:37:25 -08:00
N. Taylor Mullen fd7232616a Pin global.json SDK to 1.0.0-preview2-1-003177. 2016-11-23 15:59:21 -08:00
Pavel Krymets e55c62444b Refactor FrameTests and rename SocketInput SocketOutput properties (#1229) 2016-11-22 16:36:36 -08:00
Stephen Halter b2d45c3dd0 Make TestApplicationErrorLogger thread-safe 2016-11-21 16:31:27 -08:00
Ben Adams 2eba4017c1 MemoryPoolIterator feedback 2016-11-21 22:48:58 +00:00
Ben Adams 9ec4d88fbe Improve Skip coverage 2016-11-21 22:48:58 +00:00
Ben Adams ba0b7cc553 Add 100% coverage Take tests 2016-11-21 22:48:58 +00:00
Ben Adams dc90dd1649 Add GetArraySegment test 2016-11-21 22:48:58 +00:00
Ben Adams ef5ad3deea defaullt(MemoryPoolIterator) test coverage 2016-11-21 22:48:58 +00:00
Ben Adams 8ce47fb8b6 Move perf, share code 2016-11-21 22:48:57 +00:00
Ben Adams 12e2f30577 MemoryPoolIterator byref structs 2016-11-21 22:48:57 +00:00
Ben Adams 8bcbfb9971 Only LocateFirstFoundByte once 2016-11-21 22:48:57 +00:00
Ben Adams 97d4406614 Use Vector<byte>.ctor workaround 2016-11-21 22:48:57 +00:00
Ben Adams 4f7977d440 Use PowerOfTwoToHighByte for FindFirstEqualByte 2016-11-21 22:48:57 +00:00
Stephen Halter 0c26fc9f41 Merge branch 'rel/1.1.0' into dev 2016-11-11 15:16:48 -08:00
Stephen Halter f1d0fafaa4 Better filter clients connecting to Kestrel's dispatch pipes 2016-11-11 14:57:17 -08:00
Stephen Halter 4a1db74568 Merge branch 'rel/1.1.0' into dev 2016-11-09 14:29:31 -08:00
Stephen Halter ec89197ecb Add ListenerPrimaryTests 2016-11-09 14:26:47 -08:00
Pranav K 9d081d17e5 Updating versions to 1.2.0-* 2016-11-09 14:18:16 -08:00
Stephen Halter 5043f9b17a Make ConnectionFilterTests more reliable 2016-11-09 14:02:51 -08:00
Stephen Halter 757952d4d3 Always flush headers on first response write (#1202). 2016-11-09 14:02:50 -08:00
Stephen Halter 3c7e7d1f6c Make ConnectionFilterTests more reliable 2016-11-09 13:59:12 -08:00
Stephen Halter c0e75dcbf8 Always flush headers on first response write (#1202). 2016-11-09 13:59:12 -08:00
Stephen Halter 194059a198 Implement Begin/End Read/Write methods in LoggingStream
- This allows the reads and writes from SslStream to be logged on desktop .NET
2016-11-04 21:38:57 -07:00
Stephen Halter 0d559468f1 Make connection reset logs less scary
- Particularly between requests, connection resets aren't that abnormal.
2016-11-04 21:36:51 -07:00
Cesar Blum Silveira a83bbcfba7 Prevent block leak when socket is closed before connection filter is applied. 2016-11-04 20:56:01 -07:00
Cesar Blum Silveira a1c598733b Reject POST and PUT requests with no Content-Length or Transfer-Encoding (#1130). 2016-11-04 18:04:27 -07:00
Cesar Blum Silveira 5b65117b64 Add functional regression test for 'Connection: keep-alive, upgrade' request header. 2016-11-04 17:54:22 -07:00
Stephen Halter 8591900849 Fix more test failures caused by connection resets
- Avoid sending data that won't be processed.
2016-11-04 16:05:11 -07:00
Stephen Halter b3aca0413c Avoid zero-length writes to flush connection filter stream
- This works around a zero-length write bug in SslStream.
- We already assume connection filter streams auto flush.

#1195
2016-11-04 15:43:35 -07:00
Cesar Blum Silveira 29408956f9 Handle tokens in Transfer-Encoding header (#1181). 2016-10-31 13:57:34 -07:00
Cesar Blum Silveira cc05e36dc6 Fix test failures caused by connection resets (#1167). 2016-10-31 10:21:28 -07:00
Stephen Halter d475d41f71 Fix boundary cases in MemoryPoolIterator.(Try)PeekLong()
- Fix edge case where the iterator is at the very end of a block.
- Fix edge case where one bits where improperly filled in on a right shift.
- Don't use -1 to represent failure. Use bool and an out parameter instead.
2016-10-28 14:51:47 -07:00
Cesar Blum Silveira 1ffad5ca38 Handle multiple tokens in Connection header (#1170). 2016-10-27 12:19:43 -07:00
Nathan Anderson 610601cc6e test fixes and whitespace changes to generated code 2016-10-20 15:23:03 -07:00
Cesar Blum Silveira fff0adeaaf Faster response Content-Length parsing. 2016-10-18 15:57:40 -07:00
Cesar Blum Silveira 78584799a4 Separate request rejection from bad request state setting. 2016-10-17 15:16:50 -07:00
Mike Harder f1071dea50 Set StatusCode before disposing HttpContext (#876) 2016-10-17 15:16:43 -07:00
Pranav K 2876f82521 Updating to netcoreapp1.1 2016-10-13 11:19:16 -07:00
Pranav K e2f11ebd38 Revert "Updating to netcoreapp1.1"
This reverts commit dd23f24241.
2016-10-12 16:08:56 -07:00
Pranav K dd23f24241 Updating to netcoreapp1.1 2016-10-12 13:45:43 -07:00
Cesar Blum Silveira bf94f8526a Remove TCP Loopback Fast Path code (#1147). 2016-10-12 11:41:57 -07:00
Cesar Blum Silveira ffc3eb3afd HEAD response can include Content-Length header. 2016-10-12 11:38:18 -07:00
Cesar Blum Silveira 7ee13875b1 Reduce delay variability in KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests() (#1157). 2016-10-11 16:22:59 -07:00
Cesar Blum Silveira a15b1e2805 Update cached Content-Length when setting raw header. 2016-10-11 13:55:05 -07:00
Cesar Blum Silveira f8813a600d Handle response content length mismatches (#175). 2016-10-11 13:25:22 -07:00
Pranav K 8c103f0f23 Revert "Revert to Microsoft.NETCore.App to 1.0.0"
This reverts commit f1f66448f4.
2016-10-10 19:23:37 -07:00
Cesar Blum Silveira 3177ba0aae Wait for frame loop completion to dispose connection stream (#1156). 2016-10-10 10:16:03 -07:00
Cesar Blum Silveira 663b825d97 Merge branch 'benaadams/codecoverage' into dev 2016-10-06 15:01:43 -07:00
Kristian Hellang 03f8a7a217 Use HeaderUtilities.FormatDate in DateHeaderValueManager (#1132) 2016-10-06 11:56:49 -07:00
Cesar Blum Silveira 2c94884da9 Include address in error message when address already in use (#1086). 2016-10-05 14:23:09 -07:00
Ben Adams 2708b8a534 Add CodeCoverage to tests 2016-10-05 21:42:31 +01:00
Pranav K f1f66448f4 Revert to Microsoft.NETCore.App to 1.0.0 2016-10-05 12:03:46 -07:00
Pranav K 91497621c9 Updating partner package versions 2016-10-03 19:59:39 -07:00
Cesar Blum Silveira a2439105ae Refactor request line validation and error reporting (#1116). 2016-10-03 16:54:51 -07:00
Cesar Blum Silveira 4117ad8a1e Refactor non-body response handling.
- Add functional tests
- Remove BadHttpResponse, ResponseRejectionReasons and TestFrameProtectedMembers
- Chunk non-keepalive HTTP/1.1 responses
- Set _canHaveBody to true when StatusCode == 101
- Add test to check that upgraded connections are always closed when the app
  is done
- Log writes on responses to HEAD requests only once.
2016-10-03 16:46:59 -07:00
Ben Adams e7e6b896ba Don't emit TE header or body for non-body responses 2016-10-03 15:54:14 -07:00
Mikael Mengistu 12adc7de9d Refactored to use the fields from the HttpMethods class
* Reacting to PR comments
2016-09-29 12:19:26 -07:00
Cesar Blum Silveira 09fda749b0 Don't reset frame state when connection is aborted (#1103). 2016-09-28 15:06:22 -07:00
Cesar Blum Silveira 73656f6503 Assume zero length on non-keepalive requests without Content-Length or Transfer-Encoding (#1104). 2016-09-28 12:30:53 -07:00
Cesar Blum Silveira 0312da7df3 Add request headers timeout (#1110). 2016-09-27 17:08:02 -07:00
Cesar Blum Silveira 375e8b7022 Change context relationships from inheritance to composition. 2016-09-27 11:53:06 -07:00
Cesar Blum Silveira 49ff98f8cb More specific response status codes for errors (#653).
- 414 when request line exceeds size limit
- 431 when request headers exceed size or count limits
- 505 when request line contains unsupported HTTP version
2016-09-22 12:13:14 -07:00
Stephen Halter 63509b9e10 Make FrameRequestStream.CopyToAsync(...) copyless
- Add tests for when the CopyToAsync destinationStream throws.
- Add test to verify the destination stream sees the same array written to by
  the producer.
2016-09-20 11:54:58 -07:00
Cesar Blum Silveira afa89b3993 Change SkipReason for ThreadCountTests on OS X. 2016-09-16 09:09:26 -07:00
Cesar Blum Silveira 1a273f5a34 Improve keep-alive timeout.
- Track time more accurately
- Control timeout in Connection instead of Frame
2016-09-14 20:57:16 -07:00
Stephen Halter 84efe624a6 Fix deadlock in HttpsTests
- The xunit synccontext was saving us again
2016-09-12 11:06:29 -07:00
Stephen Halter 39bd49ea1a Avoid blocking the MockLibuv loop with test code
- This allows for a graceful shutdown with dotnet test -Parallel None
- By default, the xunit synccontext will dispatch automatically off
  the KestrelThread, but it's best not to rely on this behavior.
2016-09-12 11:06:29 -07:00
Cesar Blum Silveira 8c513402a3 Always call ConsumingComplete() with furthest examined position (#1095). 2016-09-10 20:05:14 -07:00
Pavel Krymets c777a9efea Use TaskCache class from Microsoft.Extensions.TaskCache.Sources (#1089)
Instead of Task.FromResult(0)
2016-09-09 15:57:33 -07:00
Cesar Blum Silveira 5b2065230d Fix failing keep-alive timeout tests. 2016-09-07 20:58:00 -07:00
Cesar Blum Silveira f2085b1968 Add keep-alive timeout (#464). 2016-09-06 12:48:47 -07:00
Cesar Blum Silveira 19f8958fa8 Move TestServer to shared directory. 2016-09-06 12:47:24 -07:00
Cesar Blum Silveira 5512516ee8 Remove commented test. 2016-09-01 17:18:59 -07:00
Stephen Halter 1ecef8094a Make Kestrel's response buffer limit configurable 2016-08-30 16:01:42 -07:00
Stephen Halter acfcafb6e1 Ensure MockLibuv.OnPostTask doesn't complete too early 2016-08-29 20:53:00 -07:00
Stephen Halter 0742d113be Make all calls to ThreadPool.QueueUserWorkItem through IThreadPool
- This allows SocketOutputTests to cause QUWI to exec synchronously
- To avoid allocations, the logger can't be captured making it "unsafe"
2016-08-29 20:52:47 -07:00
Stephen Halter 4587a0fc95 Prevent possible deadlocks when using MockLibuv.OnPostTask 2016-08-29 12:14:19 -07:00
Cesar Blum Silveira b6a177ef0b Test for categoryName passed to ILoggerFactory.CreateLogger() in KestrelServer.ctor() (#797) 2016-08-26 15:37:15 -07:00
Stephen Halter 7bd30ea693 Log all startup errors in KestrelServer 2016-08-18 14:52:26 -07:00
Stephen Halter 972be6e8c1 Disable automatic chunking for all non keep-alive requests
- Fixes a bug where Upgrade requests (e.g. WebSockets) would be chunked
- Allows chunking to be disabled by setting "Connection: close" on the response
2016-08-17 12:39:18 -07:00
Stephen Halter 16fbb94c44 Automatically chunk and set 0 Content-Length for non keep-alive responses 2016-08-15 16:27:54 -07:00
Stephen Halter 5f4e60bf8d Always set "Connection: close" header for non keep-alive responses 2016-08-15 16:27:54 -07:00
Stephen Halter 8f4cc3003b Improve SocketOutputTests
- This should increase reliability/determinism by removing timeouts.
2016-08-15 10:58:32 -07:00
Cesar Blum Silveira 08a91f17bf Call OnStarting and OnCompleted callbacks in LIFO order (#1042). 2016-08-10 14:52:05 -07:00
Cesar Blum Silveira 5181e4196c Trace call to _uv_unsafe_async_send in MockLibuv. 2016-08-09 18:26:10 -07:00