Commit Graph

579 Commits

Author SHA1 Message Date
Stephen Halter b63dd40efb Protect SocketInput against concurrent consumption 2016-01-08 11:14:15 -08:00
Stephen Halter f3a39d98da Merge branch 'benaadams/socket-input' into dev 2016-01-08 11:12:43 -08:00
Henk Mollema b4b5f07a08 Detect mono using PlatformAbstractions 2016-01-07 00:48:36 +01:00
Henk Mollema db11368d26 Remove StandardsPoliceCompileModule usage
Just a test - this seems to fix the build
2016-01-07 00:35:51 +01:00
Henk Mollema e81c5adce2 Change #ifdefs 2016-01-07 00:35:50 +01:00
Henk Mollema 97a5149dd9 Remove dnx451 and dnxcore50 TFM's 2016-01-07 00:35:49 +01:00
Stephen Halter ffd950966e Merge branch 'benaadams/string-construct' into dev 2016-01-06 12:14:15 -08:00
Stephen Halter c4605bea20 Merge branch 'benaadams/pendingwrites' into dev 2016-01-05 12:57:23 -08:00
Stephen Halter b1a4e8cd1e Merge branch 'anderman/faster-unsafe' into dev 2016-01-05 12:33:14 -08:00
Stephen Halter 48233cd081 Merge branch 'benaadams/memorypool-seek' into dev 2016-01-05 12:09:04 -08:00
Ben Adams bc19a07291 ifdef comments on own line 2016-01-05 12:08:39 -08:00
sergey-tom 406d785b5e Fix typo
Looks like value from wrong variable is passed to Marshal.FreeHGlobal method. So IntPtr.Zero is passed to the method and actual pointer is lost.
2016-01-05 15:14:49 +01:00
Ben Adams e6bc0bc335 Only scheduleWrites on the threadpool 2016-01-05 11:42:41 +00:00
Ben Adams 480996433e Only queue write when not queued 2016-01-05 11:33:29 +00:00
Ben Adams 4c39800ea4 Seek perf extra
See https://github.com/aspnet/KestrelHttpServer/issues/541
2016-01-05 09:37:50 +00:00
Ben Adams 1eda5178de Seek perf + faster non vector path 2016-01-05 09:37:49 +00:00
Cesar Blum Silveira 7cc51959d9 Merge branch 'Anderman/TakeStartLine' into dev 2016-01-04 13:54:51 -08:00
Cesar Blum Silveira a53949c33e Add CORS headers to known headers (#389). 2016-01-04 12:26:21 -08:00
Stephen Halter 11e046e017 Merge branch 'benaadams/name-thread' into dev 2016-01-04 11:55:53 -08:00
Ben Adams cf77efc2ff Fast path pre-completed Input reads 2016-01-02 03:57:02 +00:00
Ben Adams afe944c053 Simplify SocketInput, remove locks, only use pooled blocks 2016-01-02 03:50:55 +00:00
David Fowler 4f8ec86b54 React to HttpAbstractions changes 2015-12-31 14:04:47 -08:00
Stephen Halter 5296d89337 Merge branch 'benaadams/messagebody.for' into dev 2015-12-30 17:38:48 -08:00
Stephen Halter 072f2b1a20 Merge branch 'benaadams/valuetask' into dev 2015-12-30 16:51:48 -08:00
Thom Kiesewetter 36e9e8759a Optimize TakeFirst Line with Known method and Version 2015-12-31 01:24:59 +01:00
Ben Adams ea3e64ab87 Loop unrolled direct string inject 2015-12-30 23:09:59 +00:00
Cesar Blum Silveira 6fbb9a0cfe Cleanup: private embedded types and readonly where appropriate (#187). 2015-12-30 12:47:13 -08:00
Ben Adams f7ac457b40 Use ValueTask 2015-12-30 19:41:55 +00:00
Ben Adams 5c58d48272 Name KestrelThreads
Helps with debugging, profiling
2015-12-30 13:06:27 +00:00
Cesar Blum Silveira acc80bcbc5 Merge branch 'benaadams/take' into dev 2015-12-29 11:46:24 -08:00
Thom Kiesewetter 8fdfef460a Faster unsafe pointers 2015-12-29 15:03:52 +01:00
Ben Adams 80dc284407 Checked length 2015-12-29 08:52:05 +00:00
Ben Adams 9019ac39ae Faster Take 2015-12-29 00:46:45 +00:00
Cesar Blum Silveira 0f389f01cb Merge branch 'benaadams/peek' into dev 2015-12-28 16:14:27 -08:00
Cesar Blum Silveira 1eeb0e380c Merge branch 'benaadams/generic-boxing' into dev 2015-12-28 15:46:30 -08:00
Ben Adams 982ab99b45 Make callback adapters readonly 2015-12-28 23:02:41 +00:00
Cesar Blum Silveira 67ed24896a Dispose socket on Accept() error. 2015-12-28 12:19:35 -08:00
Ben Adams eb8f860bd6 Avoid generic boxing in Post 2015-12-26 15:07:00 +00:00
Ben Adams f220a9f200 Faster Peek 2015-12-26 07:38:08 +00:00
Ben Adams 11b360b667 Faster MessageBody.For 2015-12-26 07:11:54 +00:00
Cesar Blum Silveira ada61f8181 Merge branch 'benaadams/readonly-static' into dev 2015-12-22 11:12:00 -08:00
moozzyk aaf84afaff Don't try calling `uname` on Windows 2015-12-21 10:25:48 -08:00
Ben Adams 02fa0c306d Jit readonly static optimization 2015-12-20 00:34:42 +00:00
John Luo bd10d507f8 Reacting to new Hosting API 2015-12-17 15:08:17 -08:00
Cesar Blum Silveira 717b355bfd Merge branch 'benaadams/horizontal-initalize' into dev 2015-12-17 14:37:48 -08:00
Ben Adams 7625f65e6c Faster MemoryPoolIterator2.CopyFrom 2015-12-17 11:32:01 +00:00
Ben Adams 186f6d0a05 Horizontal initialize repeat vectors once 2015-12-17 10:18:20 +00:00
Stephen Halter 5d6fdc5eb5 Merge branch 'benaadams/vector.dot' into dev 2015-12-16 17:39:40 -08:00
Stephen Halter 67a0165aec Merge branch 'benaadams/headers.clearfast' into dev 2015-12-16 15:48:01 -08:00
Ben Adams 559cd51255 Faster Headers.ClearFast 2015-12-16 22:23:33 +00:00
Ben Adams 9fa9c45eda ReuseStreams config and tests 2015-12-16 21:27:07 +00:00
Ben Adams 841ec73497 Prevent OnComplete modifying Streams 2015-12-16 20:51:45 +00:00
Ben Adams f5e45accac Amortize Stream Costs 2015-12-16 20:51:44 +00:00
Cesar Blum Silveira 349af50977 Pre-allocate standard method and version strings. 2015-12-16 10:47:59 -08:00
Ben Adams 4460cd3470 Don't use Vector<byte>.Dot 2015-12-16 16:24:45 +00:00
moozzyk 83cff16715 Changing the folder of ARM version of libuv to win7-arm
Depends on: https://github.com/aspnet/libuv-build/pull/4
Fixes: https://github.com/aspnet/Home/issues/1111
2015-12-15 10:37:29 -08:00
Ben Adams dc9f5c433b Update reason phrases to current
Update HTTP reason phrases to current values; are currently original
phrases.
2015-12-13 23:17:03 +00:00
Ben Adams 5665eba646 Pool WriteContexts additionally 2015-12-10 20:31:30 +00:00
Stephen Halter 3e42904096 Pool UvWriteReqs instead of SocketOutput.WriteContexts
- This allows all connections accepted by the same thread to share a pool
2015-12-10 20:31:30 +00:00
Ben Adams 992664e0dc Process cascaded work immediately
Without waiting for next libuv pass

Fix for potential regression in #363 due to bug fix.
2015-12-10 20:31:29 +00:00
Ben Adams 97d3340624 Resuse writes, initalize queues 2015-12-10 20:31:28 +00:00
Stephen Halter f9d70e601c Set error before changing state in SocketInput.AbortAwaiting
- This fixes a tight race where awaiting code might continue but not see
  the ODE that moved SocketInput into the completed state.
2015-12-10 12:21:20 -08:00
Stephen Halter f42bb02f24 Merge branch 'benaadams/server-crash' into dev 2015-12-10 12:18:13 -08:00
Ben Adams 9e8b07ecf8 Error concurrent reads gracefully 2015-12-10 16:25:06 +00:00
John Luo fd33475c05 Ignore null valued headers #429 2015-12-09 17:23:34 -08:00
Stephen Halter ebf642457d Merge branch 'khellang/kestrel-server-tests' into dev 2015-12-09 15:27:51 -08:00
Stephen Halter dd02a1c442 Fix compiler warnings 2015-12-08 17:31:57 -08:00
Kristian Hellang 6fbc3b8832 Added null check in KestrelServerInformation 2015-12-08 10:58:42 +01:00
Stephen Halter 90ece575f7 Merge branch 'khellang/configurable-thread-count' into dev 2015-12-08 00:13:56 -08:00
Stephen Halter de5dd4ca57 Merge branch 'benaadams/trim-streams' into dev 2015-12-08 00:11:29 -08:00
Stephen Halter d0dca75241 Remove count parameter from ISocketOutput.ProducingComplete
- This makes the calling code cleaner with a (hopefully) minimal pref impact
2015-12-08 00:09:24 -08:00
John Luo dff3a4f231 Reacting to verbose rename 2015-12-07 17:42:13 -08:00
Kristian Hellang 4c68807a05 Split out ProcessorThreadCount, added InvariantCulture to TryParse 2015-12-07 22:14:05 +01:00
Kristian Hellang 8d6a999bc3 Made NoDelay configurable 2015-12-07 22:09:04 +01:00
Kristian Hellang 12ee74c09c server.threadCount -> kestre.threadCount 2015-12-07 22:00:03 +01:00
Ben Adams 59bfb9ba10 Trim req/resp streams by a field each 2015-12-07 15:31:14 +00:00
Kristian Hellang b6b8ea3c38 Made ThreadCount configurable 2015-12-07 15:38:06 +01:00
Kristian Hellang 75cfe2c3bb Moved GetThreadCount into KestrelServerInformation 2015-12-07 15:38:05 +01:00
Stephen Halter 706ff04160 Merge branch 'benaadams/statemachines' into dev 2015-12-07 00:07:14 -08:00
Stephen Halter c451ce1863 Merge branch 'khellang/thread-count-init' into dev 2015-12-06 23:32:57 -08:00
Kristian Hellang 5eaa7e51c8 Initialize ThreadCount as early as possible
This will allow you to inspect the property
in the Configure method.

Closes #404
2015-12-04 20:55:37 +01:00
Ben Adams 35a06369d7 Pooled block always has pool 2015-12-04 08:23:12 +00:00
Stephen Halter 1c320d7a74 Merge branch 'benaadams/dont-use-default-buffer-size' into dev 2015-12-03 18:28:24 -08:00
Stephen Halter 737aac4cfc Merge branch 'benaadams/over-the-edge' into dev 2015-12-03 18:28:05 -08:00
Ben Adams 858e5ab3a2 Moar stopping power, Timeout is total timout 2015-12-03 23:37:54 +00:00
Ben Adams 1ca67695ed Use pooled memory for filtered stream 2015-12-03 19:17:40 +00:00
Ben Adams 9af9dea72c Smaller default buffer 2015-12-03 18:46:43 +00:00
Ben Adams c41b449681 Lighter & less async sMachines
Selected excerpts from "Value tasks + Less Async" #432
2015-12-03 11:10:20 +00:00
Ben Adams b1e8f0cdea Add IThreadPool interface 2015-12-03 10:37:52 +00:00
Ben Adams 850d2b0c7e Construct ThreadPoolActions in KestrelServer 2015-12-03 09:56:21 +00:00
Ben Adams 5ae9b3c383 Log user code threadpool continuation execptions 2015-12-03 09:56:21 +00:00
Stephen Halter 10490888d3 Merge branch 'tenor/speed-up-date' into dev 2015-12-02 19:52:48 -08:00
Stephen Halter b84d8dbd07 Minor style changes to tenor/speed-up-date
- Removed some code required to support sub-second timer intervals
2015-12-02 19:50:55 -08:00
Stephen Halter 7cbbf68e9d Merge branch 'benaadams/connectionfilter' into dev 2015-12-02 19:21:05 -08:00
Stephen Halter bb2c17a779 Merge branch 'benaadams/req-delegate' into dev 2015-12-02 19:17:16 -08:00
Ben Adams a55be21469 Empty buffer when null buffer 2015-12-03 02:10:36 +00:00
Ben Adams b7c60de98a Don't allocate request processing delegate 2015-12-02 15:23:09 +00:00
John Luo 168f4770f4 Reacting to new IServer and IHttpApplication design 2015-12-01 13:03:46 -08:00
Stephen Halter 0c33cad343 Merge branch 'benaadams/kestrel-thread-api' into dev 2015-12-01 12:20:41 -08:00
Sunny Ahuwanya 6251b8f3e6 Changed timer interval to 1 second. 2015-12-01 09:29:54 -05:00
Cesar Blum Silveira 921c338a40 Support PathBase (#214). 2015-11-30 16:42:02 -08:00
Ben Adams 9102c1bb92 Remove unused IMemoryPool 2015-11-29 10:13:14 +00:00
Ben Adams 2937fc3c98 OnConnection->OnConnectionAsync
Resolves  #433
2015-11-29 03:57:47 +00:00
Sunny Ahuwanya 67a0f2d420 Reverted ISystemClock to use DateTimeOffset 2015-11-28 21:27:51 -05:00
Sunny Ahuwanya 7f025a6bd4 Speed up DateHeaderValueManager
Replaced PumpTimer() method with StartTimer(), introduced StopTimer()
method which pauses timer when idle instead of disposing it,
ISystemClock returns DateTime instead of DateTimeOffset.
2015-11-28 20:15:17 -05:00
David Fowler ea7f40c592 Merge pull request #408 from benaadams/CancellationTokenSource
Remove CreateLinkedTokenSource
2015-11-25 01:32:04 -08:00
Stephen Halter 07c0b414f0 Merge branch 'benaadams/faster-headers' into dev 2015-11-23 15:10:24 -08:00
Ben Adams 81dba3961d less work in locks 2015-11-21 14:13:23 +00:00
stephentoub c7d7f0e575 Lazily allocate the RequestAborted CTS
Avoid allocating the CancellationTokenSource unless it's actually requested.  This makes it pay-for-play with regards to code that actually asks for the RequestAborted token and requests that are aborted.
2015-11-21 08:38:48 -05:00
Cesar Blum Silveira e4fd91bb68 Fix hang on Connection: close requests. (#406) 2015-11-20 20:43:52 -08:00
Ben Adams feb40402de merge preamble-output, socket-output 2015-11-21 04:18:06 +00:00
Ben Adams a3173c487a Precomputed header bytes 2015-11-21 00:22:44 +00:00
Stephen Halter 0dbf108353 Smarter unpinning of MemoryPoolBlock2 in SocketOutput 2015-11-20 12:59:53 -08:00
Stephen Halter 2572256d3f Use MemoryPool2 for SocketOutput Buffers
Add ProducingStart and ProducingComplete methods to ISocketOutput.
These new methods can help prevent double buffering when encoding.
2015-11-20 04:41:33 -08:00
Ben Adams 9d852632c0 Remove _nullBuffer
Was meant to be removed as part of #335

/cc @rynowak
2015-11-20 05:51:25 +00:00
Ben Adams 174ec739bb Don't log ODEs thrown from _abortedCts.Cancel 2015-11-20 00:30:08 +00:00
Chris R 1c40548928 Add LoggingConnectionFilter. 2015-11-19 16:28:45 -08:00
Ben Adams 3c7431aa35 Change disconnect to abort cts 2015-11-19 23:25:31 +00:00
Ben Adams 58d8c851c5 Remove CreateLinkedTokenSource
Resolves  #407
2015-11-19 21:50:10 +00:00
Cesar Blum Silveira 307e020703 Don't crash the server if a connection filter throws synchronously. 2015-11-19 13:27:43 -08:00
Master T efec0feda2 Fix merge 2015-11-18 08:29:30 +01:00
Master T 2cdd659e67 Fix indentation 2015-11-18 05:11:57 +01:00
Master T 592d802fde Add test for https scheme, code cleanup 2015-11-18 05:06:30 +01:00
Master T 85eb6ab600 Code cleanup 2015-11-18 05:06:29 +01:00
Master T ba63c894be Remove Console.WriteLine 2015-11-18 05:06:28 +01:00
Master T 8e910baf04 Improve based on pull request feedback 2015-11-18 05:06:27 +01:00
Master T bed8c67181 Add SslProtocols option to HttpsConnectionFilter 2015-11-18 05:05:50 +01:00
Master T bd30f28dfd Implement client certificate authentication 2015-11-18 05:05:50 +01:00
David Fowler b8f01cf674 Merge pull request #378 from benaadams/thread-count
Network thread count defaults
2015-11-17 07:34:29 -08:00
Stephen Halter 5d59a20178 Merge branch 'benaadams/no-delay' into dev 2015-11-16 20:56:26 -08:00
David Fowler b1a772f19c Merge pull request #393 from benaadams/patch-1
Disconnect is Debug not Error
2015-11-16 20:29:50 -08:00
David Fowler 9c47796ec0 Merge pull request #312 from benaadams/MemoryPoolIterator2-GetString
Reduce GetString allocs and conversions
2015-11-16 20:13:38 -08:00
Ben Adams 4dc4346fca Reduce GetString allocs and conversions 2015-11-17 03:46:09 +00:00
Stephen Halter f7a5c38f65 Follow common pattern for implementing IHttpRequestLifetimeFeature 2015-11-16 16:03:55 -08:00
Stephen Halter b73e42b617 Abort request on any write failure 2015-11-16 16:03:53 -08:00
Stephen Halter 874bd29ce1 Throw IOExceptions instead of ODEs after a request is aborted 2015-11-16 16:03:51 -08:00
Stephen Halter 062caf16be Support for IHttpRequestLifetimeFeature 2015-11-16 16:03:50 -08:00
Ben Adams 1cbb273b0d Corrected Exception messages 2015-11-16 16:03:48 -08:00
Ben Adams 5e883827e0 Explain why dispose can't be used 2015-11-16 16:03:46 -08:00
Ben Adams f60f6c92ca Stop streams on finish
Can't use dispose (or close) as can be disposed too early by user code

Resolves #263
2015-11-16 16:03:44 -08:00
David Fowler 5774cf9f1e Merge pull request #390 from benaadams/stack2queue
ConcurrentStack -> ConcurrentQueue
2015-11-16 15:36:29 -08:00
David Fowler 7ba0f7da19 Merge pull request #377 from benaadams/legacy
Result -> GetAwaiter().GetResult() for legacy
2015-11-16 12:13:45 -08:00
David Fowler e3a62ff09f Merge pull request #335 from benaadams/used-pool-array
Consume body without allocating or reading
2015-11-16 11:47:18 -08:00
Ben Adams 8941d4b620 Disconnect is Debug not Error
Resolves #392
2015-11-16 17:44:24 +00:00
Ben Adams 7691a7cc23 Improved Send100 Check 2015-11-16 06:43:49 +00:00
Ben Adams ecc439555e Reuse ReadAsync for Consume 2015-11-15 22:27:39 +00:00
Ben Adams 1589b54018 Early bail, completed tasks+Interlocked 2015-11-15 21:56:20 +00:00
Ben Adams f089abd337 Consume in single call 2015-11-15 21:39:36 +00:00
Ben Adams f48e6ba51a Add Async in method name 2015-11-15 21:28:36 +00:00
Ben Adams f7bdc5a4e9 Skip non-consumed rather than reading 2015-11-15 21:28:33 +00:00