Commit Graph

1433 Commits

Author SHA1 Message Date
Nate McMaster c2f15fcac3 Move user-facing strings into resource files 2017-04-26 17:22:55 -07:00
BrennanConroy ead08706ae Merge remote-tracking branch 'origin/rel/2.0.0-preview1' into dev 2017-04-26 13:45:20 -07:00
BrennanConroy 1a26dc0238 React to Logging API changes (#1775)
React to Logging API changes
2017-04-26 13:44:55 -07:00
Nate McMaster 3dedea2389 Merge branch 'rel/2.0.0-preview1' into dev 2017-04-26 11:28:46 -07:00
Nate McMaster 9464003bda Add wait in ListenerPrimaryTests to avoid race condition with List.Add 2017-04-26 11:03:28 -07:00
Pranav K 099f8f1a47 Updating package version to preview2 2017-04-26 07:13:10 -07:00
Pranav K e76737b8a6 Merge branch 'rel/2.0.0-preview1' into dev 2017-04-25 22:03:32 -07:00
Pranav K d9dad9400c Branching for 2.0.0-preview1 2017-04-25 22:03:29 -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
David Fowler 566a587126 Added ApplicationSchedulingMode to KestrelServerOptions (#1759)
* Added ApplicationSchedulingMode to KestrelServerOptions
- Made default mode Default instead of ThreadPool
2017-04-25 00:37:09 -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
Stephen Halter c22f8f5c59 Fix potential race in LibuvThread.StopAsync (#1756) 2017-04-24 16:47:48 -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
David Fowler 7e5604b2f5 Remove async from OnRead (#1746)
- Remove async from fast path.
- Added ApplyBackpressureAsync that pauses and resumes reading
2017-04-24 11:58:52 -07:00
Pavel Krymets df9e48b1f0 Add cancellation support for write async (#1736) 2017-04-24 11:58:08 -07:00
David Fowler 71d2abed06 More clean up of LibuvConnection (#1743)
* More clean up of LibuvConnection
- Use C# 7
- Use Buffer<T>.Pin to get access to the underlying
pointer instead of using TryGetPointer.
2017-04-23 20:45:03 -07:00
David Fowler db44f5b672 Clean up LibuvOutputConsumer (#1744)
* Clean up LibuvOutputConsumer
- Added UvShutdownReq.ShutdownAsync
- Added Debug.Assert in LibuvAwaitable since it should never race.
2017-04-23 20:22:49 -07:00
David Fowler 650a3ccc26 Pass exception to Complete (#1739) 2017-04-21 23:31:59 -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 feb9d1281e Tweak libuv shutdown sequence (#1735)
* Tweak libuv shutdown sequence
- Increase timeouts for thread and listener shutdowns
- Remove post.Unreference call from AllowStopRude
2017-04-21 13:12:37 -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
Stephen Halter bebba2a113 Make UnrootedConnectionsGetRemovedFromHeartbeat test less flaky (#1727) 2017-04-20 10:58:48 -07:00
David Fowler d0743806d8 Disable UnrootedConnectionsGetRemovedFromHeartbeat because it's flaky 2017-04-20 10:21:20 -07:00
David Fowler d1494224f4 Make the tests that use the Heartbeat more deterministic. (#1724)
- Added Start to Heartbeat and made OnHeartbeat internal
- Explicitly call start in tests
2017-04-20 01:41:37 -07:00
Stephen Halter a053ca4758 Move shutdown logic from transport to core (#1707)
* Move shutdown logic from transport to core
* Use weak references to track FrameConnections
2017-04-19 18:08:36 -07:00
David Fowler d40dbb81ea Fixed broken tests that leak UvWriteReq 2017-04-19 17:50:43 -07:00
Nate McMaster 7a3a731686 Refactor address binding and handle EAFNOSUPPORT
- Simplify KestrelServer by refactoring address binding into a separate class
 - Use strategy pattern to implement address binding for different sceanrios
 - Add fallback from binding 0.0.0.0 if binding to [::] fails (can happen if UvException with EAFNOSUPPORT is thrown)
2017-04-19 15:58:12 -07:00
David Fowler 42d82a507d Make all UvRequest objects normal GC handles (#1698)
* Make all UvRequest objects normal GC handles
- This avoids the cost of using GCHandle.Alloc per operation.
- It *does* mean that we need to explicitly dispose UvRequest objects
after using them (which we did before anyways). This change does
add a few try catch statements to make sure we always dispose the UvRequest
if there are synchronous exceptions.
- This is ~1.5% of the overhead in the benchmarks today
- Keep track of all allocated UvRequest objects with a WeakReference in DEBUG
and assert none are kept around after cleaning up.
- Fixed a leak where we don't clean up UvWriteReq objects when writing
to the named pipe.
2017-04-19 15:16:11 -07:00
Stephen Halter e4ba1d01ce Ensure that KeepAliveTimeoutTests do not run with sync context (#1718)
- With Task.Delay(1).ConfigureAwait(false) there's a race where
  Task.IsCompleted could already be true by the time it's evaluated.
2017-04-18 17:20:59 -07:00
Pavel Krymets 88890595d1 Define a constant to workaround corefxlab classes asses modifier issue 2017-04-18 09:01:35 -07:00
Cesar Blum Silveira a0743650ef Don't use hardcoded ports in PreferHostingUrls tests (#1701). 2017-04-17 20:47:46 -07:00
Cesar Blum Silveira 801a7c7652 Add copyright header to TransportSocketOptions.cs. 2017-04-17 20:47:29 -07:00
David Fowler e4af3f7e35 Expose a UseTransportThread property on KestrelServerOptions (#1695)
- This property will force Kestrel to use whatever scheduler the transport
used when write and read callbacks are fired. The default value is false so
all calls to user code including connection adapters, and the application function,
and cancellation token callbacks.
- Transports may expose configuration that changes what the transport thread is.
- Removed InternalKestrelServerOptions.cs
- Added a configurable UseSockets overload (even though there are no options yet)
- Remove RequiresDispatch from the IConnectionInformation
2017-04-17 12:58:28 -07:00
David Fowler de6da7c757 Add ConfigureAwait(false) to test helpers (#1699)
* Add ConfigureAwait(false) to test helpers
2017-04-17 11:33:27 -07:00
David Fowler 85d883456b Remove Reset from IHttpParser (#1700)
* Remove Reset from IHttpParser
- The parser isn't stateful and doesn't need it
2017-04-17 00:37:40 -07:00
David Fowler 31cc1e5018 Fix extra space 2017-04-16 09:25:28 -07:00
David Fowler 6a403d231e Clean up IThreadPool interface (#1696)
- Remove tcs completion methods
2017-04-15 19:04:44 -07:00
David Fowler 0ac478858d Fixed benchmarks after refactoring
- Added MockTimeoutControl
2017-04-14 20:15:16 -07:00
David Fowler 051c251e53 Fixed flaky test
- Increase the interval to avoid chances of overlapping
2017-04-14 19:25:32 -07:00
Stephen Halter 8cd58b042c Fix tests using Heartbeat 2017-04-14 16:26:27 -07:00
Stephen Halter 7aa7b3e0a9 Track connections until request processing completes
- Paves the way to allow request processing to continue during server shutdown
  even after a client disconnects.
2017-04-14 16:26:27 -07:00
Nate McMaster c08c57f764 Reject HTTP/1.1 requests that do not have a correct Host header
Improves Kestrel to reject requests that don't conform to HTTP spec.

RFC 7230 section 5.4: "A server MUST respond with a 400 (Bad Request)
status code to any HTTP/1.1 request message that lacks a Host header
 field and to any request message that contains more than one Host
 header field or a Host header field with an invalid field-value."

See https://tools.ietf.org/html/rfc7230#section-5.4.

Other changes:

 - update VS code settings to work better with CLI 2.0
 - update tests that were subject to infinite hangs
2017-04-14 15:48:21 -07:00