Commit Graph

1290 Commits

Author SHA1 Message Date
Nate McMaster 5073d4fdaf Re-add .NET Framework to tests and other cleanup (#1494) 2017-03-14 11:02:49 -07:00
Ben Adams b94912bcb1 InitializeHeaders only at start of parsing/Fix remaining (#1488)
* Don't reinitialize header collection each loop
* Correct remaining tracking value
* Add tests
2017-03-13 15:32:28 -07:00
David Fowler 5644310811 Clean up benchmarks (#1487)
- Benchmarks are suffixed with *Benchmarks
- Removed Custom RpsColumn.cs and used Ops/Second column
- Removed params from RequestParsingBenchmark
2017-03-12 22:52:24 -07:00
Cesar Blum Silveira 49f09d5a25 Log rejected request targets. 2017-03-12 18:37:08 -07:00
Justin Van Patten b612da4e6c Avoid an unnecessary closure allocation in ListenerSecondary (#1485)
The tcs is being passed as the state, so use it from the state instead
of closing over it.
2017-03-12 12:20:41 -07:00
Justin Van Patten a26f96237b Specify StringComparison when calling string.StartsWith (#1484)
StartsWith does a culture-sensitive comparison by default. An ordinal
comparison makes more sense here.
2017-03-11 22:31:42 -08:00
David Fowler f479720d5a Remove our custom bootstrapper and use the BenchmarkSwitcher (#1480) 2017-03-11 18:19:13 -08:00
Ben Adams 3c8ee39f1d Fxi writing perf test (#1478) 2017-03-10 12:04:28 -08:00
Nate McMaster 49b328d4c2 Handle absolute, asterisk, and authority-form request targets
Improves compliance with RFC 7230 on the expected handling of requests
that have URI or asterisk in the request target.

This means rejecting asterisk requests that are not OPTIONS and rejecting
authority-form requests taht are not CONNECT.

This also means the server will handle the path and query on targets
with absolute URIs as request-targets.
2017-03-09 16:54:12 -08:00
Ben Adams 941d396942 Speed up ParseRequestLine (#1463) 2017-03-08 19:27:56 -08:00
David Fowler 49d058a997 No mono (#1472) 2017-03-08 18:47:52 -08:00
Nate McMaster 63e3c9428a You can't have two benchmarks as the baseline. 2017-03-08 17:28:13 -08:00
Nate McMaster 3a1f3d14f9 Add absolute-uri benchmark and change plaintext, live aspnet, and unicode benchmarks to use origin-form 2017-03-08 17:21:21 -08:00
Cesar Blum Silveira bb973decb8 Unify header rejection messages.
- Log bad headers with escaped non-vchar characters
2017-03-08 15:27:44 -08:00
David Fowler dbcf34388e Remove dependency on Utf8String (#1466)
- Also remove System.IO.Pipelines.Text.Primitives
2017-03-08 12:38:55 -08:00
Cesar Blum Silveira e25eb418bb Change non-printable char representation in log messages from <0xXX> to \xXX. 2017-03-08 10:05:53 -08:00
David Fowler 1f0bb14546 Clean up left over code from port to pipelines (#1465)
- Remove unused methods in PipelineExtensions
- Remove AwaitableThreadPool since we dispatch reads
2017-03-08 08:43:11 -08:00
David Fowler 13519b6079 Fix CopyTo implementation in benchmark. (#1462)
* wip

* ooops
2017-03-07 17:39:56 -08:00
Cesar Blum Silveira 5743d740b4 Convert HTTP parsing FrameTests to IHttpParser tests (#1416).
- Also fix an issue in KestrelHttpParser where "Header: \r\n" is
  parsed with a value of " " instead of "".
2017-03-07 15:51:11 -08:00
Ben Adams e2f8c226ef Simplify TakeSingleHeader and Vectorize (#1457)
* Sanitize unsafe code
* Vectorize
* Extract Contains and add more tests
2017-03-07 13:30:57 -08:00
Pavel Krymets 1294c00618 Cleanup unused code (#1458) 2017-03-07 11:52:45 -08:00
David Fowler 02a4342908 Made changes to TakeSingleHeader (#1453)
* Made changes to TakeSingleHeader
- Remove state machine and just parse in place
- Inline OnHeader into TakeSingleHeader
- Use IndexOfVectorized instead of custom indexof
- Normalize header whitespace error
- Combine IndexOf and IndexOfAny into a single IndexOfNameEnd call
2017-03-07 08:58:55 -08:00
John Luo 06134bc6e0 Add IPv6 loopback address by default #1434 2017-03-06 18:02:28 -08:00
Cesar Blum Silveira 11c7eb5665 Verify all request rejections are logged (#1295). 2017-03-06 12:05:38 -08:00
John Luo 7d94abd606 Enable default server address test 2017-03-06 10:26:32 -08:00
Cesar Blum Silveira 0404bcc58c Add more microbenchmarks. 2017-03-06 10:14:22 -08:00
David Fowler 537b06f025 Interleave multispan and single span code path (#1442)
- Attempt at making the reader better for multispan parsing
- Try tighter inner loop
- Fix boundary case and clean code up
- Update the cursor once instead of after every header
- Fix errors with not updating consumed state on incomplete header payload
- Filled a test hole, removed a condition that should never happen
- Avoid struct copies every iteration when parsing headers
2017-03-06 09:06:28 -08:00
David Fowler 0ce111d9f1 Fix write size in benchmark (#1449) 2017-03-06 03:31:45 -08:00
Pranav K acf97b6102 Unpin CoreFxLab package versions 2017-03-05 08:54:51 -08:00
David Fowler da763b4873 Use ascii decoding routine that disallows null chars (#1445)
* Use ascii decoding routine that disallows null chars
- GetAsciiString() in newer corefxlab builds allows 0 (which is a valid
ascii char). To avoid future regressions, GetAsciiStringNonNullCharacters()
was added and used in place of GetAsciiString() when interpreting the
request line and headers
- Make GetAsciiStringNonNullCharacters return empty instead of null
2017-03-04 11:26:32 -08:00
David Fowler 20f75605ca Workaround rogue System.IO.Pipelines on nuget.org 2017-03-03 22:35:41 -08:00
Cesar Blum Silveira 83edc38e72 Use TechEmpower request as baseline for request parsing benchmarks. 2017-03-03 15:55:07 -08:00
Cesar Blum Silveira de2c3d3608 Merge branch 'KrzysztofCwalina/NewBenchmark' into dev 2017-03-03 15:28:34 -08:00
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
Krzysztof Cwalina 7cc5c537a4 Added a new benchmark 2017-03-03 13:13:11 -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 4533383612 React to hosting change
- Kestrel binds to ipv4 by default

Fixes #1432
2017-03-02 23:09:13 -08:00
David Fowler 4d7c6ff69f use rtm appveyor 2017-03-02 21:44:36 -08:00
Stephen Halter 1e0f2b3951 Fix systemd activation tests (#1429) 2017-03-02 17:26:41 -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
Nate McMaster aaea173cba Update AppVeyor and Travis settings 2017-03-02 09:44:00 -08:00
Ben Adams 40ee51846c Add allocations column (#1422) 2017-03-02 06:56:05 -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
Nate McMaster d3924b0149 Change korebuild branch and fix argument forwarding in bootstrapper 2017-03-01 18:14:13 -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
Stephen Halter 64b6563249 Run Travis and AppVeyor builds on feature/dev-si 2017-02-28 15:28:31 -08:00
John Luo 6ad9f3e8b0 Reacting to HeaderUtitilities renames 2017-02-28 14:50:02 -08:00