Commit Graph

396 Commits

Author SHA1 Message Date
Stephen Halter ac60f13312 Modify RequestProcessingAsync to call single parse method (#1427)
* Modify RequestProcessingAsync to call single parse method
* Fix bad request logging
2017-03-03 14:43:32 -08:00
David Fowler 1d685e195e Parser cleanup and remove line continuation header error (#1431)
- Cleaned up some parsing logic (removed locals etc)
- Removing line continuation errors cleaned up code duplication
a little bit
2017-03-03 10:04:44 -08:00
David Fowler 8929b40527 Single span optimizations (#1421)
- Added a fast path for single span in the start line parsing
- Added a fast path for single span header parsing
- Changed the out header loop to be pointer based (instead of slicing)
2017-03-02 12:17:39 -08:00
David Fowler ca31627a5e Parser clean up (#1419)
- Remove stackalloc
- Remove extra Move in ParseRequestLine
2017-03-01 22:33:37 -08:00
Pavel Krymets f2a00da811 Loop over bytes inside states of parser state machine (#1417) 2017-03-01 18:18:34 -08:00
David Fowler cb6059c143 Make the IHttpParser per frame and add a reset (#1415)
* Make the IHttpParser per frame and add a reset
- Made the IHttpParser a per frame object so state can be stored
across method calls and parses.
- Added HttpParserFactory to ServiceContext
2017-03-01 13:12:03 -08:00
Pavel Krymets d3694f085a Add IHttpParser interface (#1414) 2017-03-01 11:55:36 -08:00
Krzysztof Cwalina c56de066d3 Optimized parsing GET verb and version (#1399)
* Optimized parsing GET verb
* optimized http version parsing
* Added microbenchmarks for GetKnownMethod and GetKnownVersion
2017-02-28 17:02:52 -08:00
John Luo 6ad9f3e8b0 Reacting to HeaderUtitilities renames 2017-02-28 14:50:02 -08:00
Cesar Blum Silveira 568aaff9c4 Improve HTTP parsing tests (#1393).
- Add several more test cases
- Share data between functional and unit tests
2017-02-28 14:23:27 -08:00
Stephen Halter fde0f6b2fc Add an option to Kestrel to disable threadpool dispatching 2017-02-28 10:14:58 -08:00
David Fowler c6705d8693 Convert TakeStartLine and TakeMessageHeaders to be state machines (#1401)
- Less passes over the buffer
- Single pass to find all start line delimiters instead
of calling IndexOf multiple times.
- Made TakeStartLine and TakeMessageHeaders a state machine
- Only check length against remaining bytes once
- Change variable names to match TakeStartLine
- Use ReadableBuffer.First.Span instead of ToSpan()
- Added test for missing path with a querystring
2017-02-27 11:55:30 -08:00
David Fowler 5692f51bf7 Revert "Revert "Use Spans to parse the start line and headers (#1394)""
This reverts commit 19c3107deb.
2017-02-24 10:22:05 -08:00
David Fowler 19c3107deb Revert "Use Spans to parse the start line and headers (#1394)"
This reverts commit 8140b8cdfe.
2017-02-24 10:03:32 -08:00
David Fowler 8140b8cdfe Use Spans to parse the start line and headers (#1394)
* Use Spans to parse the start line and headers
- Use `Span<byte>` to parse the start line and headers
2017-02-23 23:02:29 -08:00
Stephen Halter 39b536b402 Don't treat canceled reads as end of input 2017-02-23 10:05:53 -08:00
Stephen Halter 7d3bcd2bf8 Avoid unobserved exceptions
- Don't throw from AdaptedPipeline.ReadInputAsync
- Watch for unobserved exceptions in SampleApp
2017-02-22 16:12:20 -08:00
David Fowler ba549502e1 Use the IThreadPool as the ReaderScheduler (#1372)
- This is what socket input did, also using
ThreadPool.QueueUserWorkItem is better than Task.Run for this
scenario and avoids a bunch of overhead.
2017-02-21 21:09:23 -08:00
Pavel Krymets 824ef2c937 Input Pipeline migration (#1277) 2017-02-17 15:38:13 -08:00
Nate McMaster 708630fd23 Downgrade to stable packages 2017-02-15 14:22:38 -08:00
Stephen Halter e9e0cf7325 Prevent ODE when ReadStart/Stop() is queued after disposal 2017-02-07 00:26:05 -08:00
Stephen Halter 5124adf450 Better report Kestrel crashing errors 2017-02-07 00:26:00 -08:00
Cesar Blum Silveira 1a2c438899 Upgrade to RC.3 2017-01-31 16:23:23 -08:00
Ben Adams ecca980c91 Implement IHeaderDictionary.ContentLength 2017-01-24 14:55:48 -08:00
Ben Adams cac6ade7c9 Implement Stream Flush+FlushAsync fully
Streams should pass through the flush and not assume the underlying
Stream's Flush behaviour
2017-01-23 13:51:57 +00:00
Stephen Halter f32058c5c3 Warn instead of throw when ignoring IServerAddressesFeature
- Throwing could be too much when IServerAddressesFeature URLs come from VS
- Listen on 127.0.0.1:5000 by default

https://github.com/aspnet/Hosting/issues/917
2017-01-19 11:36:19 -08:00
Stephen Halter c4762cdfd5 Better handle OnHeartbeat in 32-bit environments
- Prevent potential overflow when casting a long to an IntPtr
2017-01-17 16:57:52 -08:00
Cesar Blum Silveira 89a63d190e Don't close connection when Content-Length set but no bytes written. 2017-01-12 12:38:15 -08:00
Cesar Blum Silveira e26f91a392 Call OnStarting before verifying response length (#1289). 2017-01-10 14:24:44 -08:00
John Luo 57b368566d Use StatusCode instead of three digit numbers for status codes 2017-01-09 10:09:54 -08:00
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
Cesar Blum Silveira b46e48fe01 Merge branch 'yves57/stringvalues-for' into dev 2016-12-28 14:44:46 -08:00
Pranav K 5b8f7c2b2b Updating to 4.4 CoreFx packages 2016-12-21 22:22:13 -08:00
Cesar Blum Silveira b41c4078bd Abort connections not closed during shutdown (#1112). 2016-12-20 14:44:34 -08:00
Pavel Krymets 8b44e8e382 Prevent closure allocations in OnHeartbeat (#1261) 2016-12-16 14:42:30 -08:00
Cesar Blum Silveira cedbe76f52 Abort request on client FIN (#1139). 2016-12-13 12:03:33 -08:00
Cesar Blum Silveira defcbdb907 Revert "Add MaxRequestBodySize limit (#478)."
This reverts commit e53a87be9c.
2016-12-09 16:30:12 -08:00
John Luo 859816bb53 Update ParseContentLength to remove unnecessary casting and unsafe 2016-12-09 11:39:25 -08:00
John Luo 4da06e8acd Move Int64 parsing logic to HttpAbstractions 2016-12-08 17:22:21 -08:00
Cesar Blum Silveira e53a87be9c Add MaxRequestBodySize limit (#478). 2016-12-05 17:06:57 -08:00
Yves57 dbaa01830b Replace 'foreach' by 'for' in StringValues (faster) 2016-11-29 22:33:18 +01:00
Cesar Blum Silveira f918279873 Merge branch 'khellang/proxy-authenticate-typo' into dev 2016-11-29 10:32:16 -08:00
Chris R 53e5c3d56c #1001 don't log stack traces for localhost bind failures. 2016-11-28 16:35:14 -08:00
Kristian Hellang e316898c9f Added missing copyright header 2016-11-23 09:17:03 +01:00
Pavel Krymets e55c62444b Refactor FrameTests and rename SocketInput SocketOutput properties (#1229) 2016-11-22 16:36:36 -08:00
Ben Adams 2bf5a966cd Fast path and inline HttpVersion.set 2016-11-22 15:26:38 -08:00
Kristian Hellang a0f5585d3f Fixed typo; Proxy-Authenticate #1223 2016-11-22 13:08:17 +01:00
Ben Adams 2eba4017c1 MemoryPoolIterator feedback 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 2011a27bde Use ternary op rather than lazy and 2016-11-21 22:48:57 +00:00
Ben Adams 8ce47fb8b6 Move perf, share code 2016-11-21 22:48:57 +00:00
Ben Adams 5041d6c291 wasLastBlock adjustments 2016-11-21 22:48:57 +00:00
Ben Adams 7ab4442392 Feedback + Cleanup 2016-11-21 22:48:57 +00:00
Ben Adams 4cdcca212e Don't inline slow paths 2016-11-21 22:48:57 +00:00
Ben Adams 12e2f30577 MemoryPoolIterator byref structs 2016-11-21 22:48:57 +00:00
Ben Adams 53f361160e MemoryPoolIterator fast paths 2016-11-21 22:48:57 +00:00
Ben Adams 8bcbfb9971 Only LocateFirstFoundByte once 2016-11-21 22:48:57 +00:00
Ben Adams 28a21fa7a9 Move vectors closer to use 2016-11-21 22:48:57 +00:00
Ben Adams 00a63537cf And=> xor, powerOfTwoToHighByte to const 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 972d978d11 Swap for vector loop unroll detection 2016-11-21 22:48:57 +00:00
Ben Adams 9eb01d1c57 Reduce Vector register pressure by not overlapping 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 e780ad9516 Ensure clients connecting to Kestrel's dispatch pipe are listeners 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 757952d4d3 Always flush headers on first response write (#1202). 2016-11-09 14:02:50 -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
jacalvar ed98894c93 Created public API baselines 2016-11-04 17:16:22 -07:00
Stephen Halter 6cbbb73ca7 Protect against NullReferenceException in Frame.StopStreams() 2016-11-04 16:01:07 -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
Pranav K 0dcfa2a3fd Updating to Libuv 1.9.1 2016-11-03 10:08:01 -07:00
Ben Adams 2adb6ff955 Interlocked.Read -> Volatile.Read 2016-11-01 18:06:00 -04:00
Cesar Blum Silveira 29408956f9 Handle tokens in Transfer-Encoding header (#1181). 2016-10-31 13:57:34 -07:00
Stephen Halter 5e97c63467 Throw PlatformNotSupportedException on big-endian platforms 2016-10-28 14:51:55 -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
Cesar Blum Silveira d64b4c7acb Control-flow simplification in Frame.CreateResponseHeader() (#1168). 2016-10-24 11:07:06 -07:00
Nathan Anderson 610601cc6e test fixes and whitespace changes to generated code 2016-10-20 15:23:03 -07:00
Nathan Anderson 11ed34f229 add header ordering and short circuits to known headers
refactor known header changes

- create template string from Append switch
- add a check to ClearFast to bail out if too many headers are set
2016-10-19 15:49:01 -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
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
Stephen Halter ce6e65b1d7 Don't take SocketOutput's _contextLock to return written blocks 2016-10-11 16:39:13 -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
Cesar Blum Silveira 6c2532682a Merge branch 'benaadams/callstack' into dev 2016-10-10 14:42:22 -07:00
Cesar Blum Silveira 3177ba0aae Wait for frame loop completion to dispose connection stream (#1156). 2016-10-10 10:16:03 -07:00
Ben Adams adc3e63ecc Improve callstack for LoggingThreadPool 2016-10-08 05:14:00 +01: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