Commit Graph

1629 Commits

Author SHA1 Message Date
Ryan Brandenburg 08c6c38667 Update bootstrappers 2017-10-09 12:46:27 -07:00
Vladimir Sadov 2ce4719690 new toolset compiler - 2.6.0-beta1-62126-01 (#2090)
This was a "special" build, so there is no public VSIX for this.
The old one should be ok, for most scenarios.

When VS 15.5 preview1 is available it will match this compiler feature-wise by default.
2017-10-06 10:08:56 -07:00
Nate McMaster e2c22b91af Minor test code changes to resolve xUnit2013 build warning 2017-10-06 08:50:58 -07:00
Cesar Blum Silveira 11ce1395e5 HPACK fixes and improvements. 2017-10-04 12:59:41 -07:00
Stephen Halter 156ddfc4e8 Fix EOF handling of TlsStream.ReadAsync (#2094) 2017-10-04 12:38:19 -07:00
Stephen Halter 83e2084368 Fix flaky MaxRequestBodySizeTest (#2092)
- Don't attempt to send any data after the request might already be rejected.
2017-10-03 14:34:14 -07:00
Cesar Blum Silveira 1b1137b880 HTTP/2: connection error when receiving frames disallowed by stream states. 2017-10-02 10:24:57 -07:00
Cesar Blum Silveira bb9840a552 HTTP/2: do not ACK PING frames received with ACK set. 2017-09-29 16:40:01 -07:00
Cesar Blum Silveira 551c1ebc0b Configure enabled protocols per endpoint and add HTTP/2 w/ prior knowledge support (#2067). 2017-09-27 10:14:39 -07:00
Javier Calvarro Nelson eb9417b577 Re-enable API Check 2017-09-25 15:16:53 -07:00
Javier Calvarro Nelson 49237c7651 Add API check baselines for 2.0 2017-09-25 15:03:09 -07:00
Cesar Blum Silveira 343ce0f01b HTTP/2: close connection with PROTOCOL_ERROR when a stream depends on itself. 2017-09-22 16:35:12 -07:00
Justin Kotalik af7944047d Increase Minimum Version of Visual Studio to 15.3.0 2017-09-21 17:52:06 -07:00
Cesar Blum Silveira e3533885a8 HTTP/2: close connection with PROTOCOL_ERROR when receiving a frame with an even stream ID. 2017-09-21 12:26:09 -07:00
Cesar Blum Silveira a4887f4caf HTTP/2: close connection with PROTOCOL_ERROR when receiving GOAWAY frame with non-zero stream ID. 2017-09-21 11:57:31 -07:00
Cesar Blum Silveira fc56552b2a HTTP/2: close connection on PING frame with non-zero stream ID. 2017-09-21 11:23:15 -07:00
Cesar Blum Silveira 555a881cb7 HTTP/2: close connection with PROTOCOL_ERROR when an unknown frame type is interleaved with headers. 2017-09-21 11:20:52 -07:00
Cesar Blum Silveira e2af346733 HTTP/2: close the connection with PROTOCOL_ERROR when a PUSH_PROMISE frame is received. 2017-09-21 11:20:33 -07:00
Cesar Blum Silveira 9687079723 Check if HTTP/2 frame writer has already been aborted. 2017-09-20 11:15:31 -07:00
Cesar Blum Silveira 9944c0fd43 Fix reading DATA frames with maximum length. 2017-09-20 11:15:31 -07:00
Cesar Blum Silveira c8f9364e3e Expose connection features to HTTP/2 connections. 2017-09-20 11:14:15 -07:00
Cesar Blum Silveira 91eb4cd54c Fix flakiness in KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests (#1684). 2017-09-18 15:12:13 -07:00
Vladimir Sadov 1470ee0658 Updating toolset compiler (#2052) 2017-09-18 15:07:47 -07:00
Cesar Blum Silveira a31d1e024c Merge code paths duplicated between HTTP/1.x and HTTP/2 implementations (#2017).
- Most of the shared code is in the HttpProtocol class (former Frame)
- Virtual calls handle protocol-specific things
- Move the ProcessRequestsAsync loop to HttpProtocol
- Implement HTTP/1.x request processing in Http1Connection and HTTP/2
  in Http2Stream, with Http1Connection<T> and Http2Stream<T> subclassing
  those classes in order to handle the generic HttpContext parameter
- Split MessageBody into Http1MessageBody and Http2MessageBody,
  with MessageBody containing shared member variables and methods
2017-09-14 17:35:57 -07:00
Cesar Blum Silveira d28b413390 Add tracing to KeepAliveTimeoutTests.ConnectionKeptAliveBetweenRequests to investigate test failures. 2017-09-14 16:55:44 -07:00
Cesar Blum Silveira da7bc24eec Add request parsing regression tests. 2017-09-13 14:49:45 -07:00
Stephen Halter 1e465e9643 Improve timeout logic 2017-09-08 12:50:01 -07:00
Cesar Blum Silveira 66d8e8198d Re-enable TestKeepAliveTimeout. 2017-09-07 17:24:33 -07:00
Vladimir Sadov f0ade24cf7 Updating to new toolset compiler. (#2043)
* Updating to new toolset compiler.
Now includes ref escaping rules.

* newer version.
2017-09-06 15:52:47 -07:00
Stephen Halter 284367db9f Improve ConnectionLimitMiddleware and connection pipeline building (#2010)
* Improve ConnectionLimitMiddleware and connection pipeline building
* Add IDecrementConcurrentConnectionCountFeature
* Flow connection features from connection middleware
2017-08-30 11:30:20 -07:00
Ben Adams e7743cbb78 Shorter LibuvThread locks (#2034) 2017-08-29 12:21:45 -07:00
Damir Ainullin 5bf7d3b28a Fix typo in FrameTests (#2033) 2017-08-27 20:11:00 -07:00
David Fowler 9d8556e7c4 Added FrameConnection.OnConnectionClosed back (#2028) 2017-08-26 21:20:06 -07:00
David Fowler 7854c0604a Remove the events on ConnectionContext (#2023)
- Use the pipe events and removed the Tasks from ConnectionContext
- Remove OnConnectionClosed from FrameConnection. Since the `FrameConnetion` is a single middleware, not the entire pipeline, we shouldn't need to wait on the connection close there.
- It seems like the callbacks are rooted on the pipe even after they fire. This needs to be investigated in pipelines.
2017-08-26 20:19:55 -07:00
Ben Adams 09be7c416a Use preparsed version, rather than reparsing (#2021)
Current path is:

 Parser -> HttpVersion Enum -> Get Version String -> Set `HttpVersion` with string -> Convert back to Enum

Can just set the enum directly since its already parsed.

Also using the const rather than strings; where the strings are in code
2017-08-26 17:18:16 -07:00
Ben Adams 088f7e32ae Reset StatusCode & ReasonPhrase directly (#2025) 2017-08-26 17:14:45 -07:00
Nate McMaster 4735154ecd Install .NET Core 1.1.2 2017-08-26 11:18:15 -07:00
Cesar Blum Silveira a145734d43 Fix flakiness in ConnectionClosedWhenResponseDoesNotSatisfyMinimumDataRate (#1955). 2017-08-24 10:17:05 -07:00
David Fowler dc9ed60465 Create the connection logging scope in ConnectionHandler (#2013)
- Instead of doing it on the FrameConnection only. This will
make sure all middleware logs get the connection id as part of their scope.
2017-08-22 14:32:58 -07:00
Ben Adams 11a9b6498d Don't alloc IEnumerable in Reset for ITlsConnectionFeature (#2009)
* Don't alloc IEnumerable for ITlsConnectionFeature
* Delegate to ConnectionFeatures and determine scheme once
2017-08-21 17:01:05 -07:00
David Fowler 2e6687031d Added initial connection middleware pipeline (#2003)
* Added initial connection middleware pipeline
- Implemented IConnectionBuilder on ListenOptions. Kept IConnectionAdapter for now.
- Delay the configure callback for ListenOptions until the server has started.
- Added ConnectionLimitMiddleware and HttpConnectionMiddleware
- Expose ConnectionAborted and ConnectionClosed on ConnectionContext and
IConnectionTransportFeature
- Updated the tests
- Removed IConnectionApplicationFeature
- Moved Application to IConnectionTransportFeature
2017-08-21 12:11:27 -07:00
Ben Adams 59b77bb357 Async Main samples (#2004) 2017-08-18 14:46:19 -07:00
Nate McMaster 7f23ff08ce React to changes in BenchmarkDotNet 0.10.9 (#2006)
* fixup! React to changes in BenchmarkDotNet 0.10.9
2017-08-18 10:57:48 -07:00
Stephen Halter fd66472b39 Get Kestrel.Performance working again 2017-08-17 17:00:46 -07:00
Stephen Halter 14f122fb9f Measure Writing in FrameWritingBenchmark 2017-08-17 16:59:24 -07:00
Ben Adams 442ee80039 Less awaits for Reponse Write(Async) 2017-08-17 15:51:22 -07:00
Nate McMaster b613f44ccd Add packages to README
[ci skip]
2017-08-17 12:52:03 -07:00
Nate McMaster 87db7cceb6 Stop producing Microsoft.AspNetCore.Server.Kestrel.Tls as a package 2017-08-16 14:56:01 -07:00
Nate McMaster 26f1d4baa3 Use PackageLineup
PackageLineup is a way to manage PackageReference versions across large projects. It removes the version information from the repository and instead pulls the information from an external "lineup" file.
2017-08-16 14:10:43 -07:00
Cesar Blum Silveira 0fafd19ec9 Initial HTTP/2 support.
What works:

- HTTP/2 over TLS1.2 with ALPN
- Request and response flow
  - Headers are compressed and decompressed with HPACK
  - Request body can be read by streams (if present)
  - MVC template app with individual auth works fine
- PRIORITY frames are validated
- RST_STREAM frames are validated and abort streams
- SETTINGS frames are validated and ACKed
- PING frames are validated and ACKed
- GOAWAY frames stop connections
- WINDOW_UPDATE frames are validated
- CONTINUATION frames are sent for large header blocks

What doesn't work yet:

- Flow control in either direction
- It's not possible to encode a single header across more than one frame
  - Affects only a very large header (name and value combined ~16KB long)
- Request trailers
- Response trailers
- Limits and timeouts in `KestrelServerLimits` are not enforced on HTTP/2
- HPACK use is very limited on the send side
  - Literals are not Huffman-encoded
  - Common headers (e.g. "server: Kestrel") are never indexed
- Honoring client settings
- Some error checking is still missing (e.g. validating incoming frame size)
2017-08-16 10:04:44 -07:00