David Fowler
6701339835
Expose DefaultConnectionContext POCO ( #2421 )
...
- Made TransportConnecton derive from ConnectionContext
- Less objects, less opinions about what the ConnectionContext is. This diverges from what we do with HttpContext but it seems better overall.
- Made DefaultConnectionContext
- Usable for unit testing
- Usable for benchmarking
2018-03-24 03:12:53 -07:00
John Luo
2dc1858f90
Merge branch 'release/2.1' into dev
2018-03-23 16:02:42 -07:00
John Luo
63fd1e1a4d
Re-enable api check
...
- Disable api check for Transport.Libuv due to breaking change
- Add empty baseline files for unreleased packages
2018-03-23 12:55:06 -07:00
David Fowler
0753f4b4f4
Merged release/2.1
2018-03-22 21:56:29 -07:00
David Fowler
abdcb47b8f
Renames from API review ( #2413 )
...
* Renames from API review
- Rename Microsoft.AspNetCore.Protocols.Abstractions to Microsoft.AspNetCore.Connections.Abstractions.
- Renamed IConnectionHandler to IConnectionDispatcher (and related properties and types)
- Added ConnectionHandler and UseConnectionHandler extension method to Connections.Abstractions.
- Use ActivatorUtilties to create the ConnectionHandler
2018-03-22 21:38:14 -07:00
Nate McMaster
12abcd2f68
Merge branch 'release/2.1' into dev
2018-03-21 22:16:12 -07:00
Nate McMaster
54e538dcb5
Remove dotnet tool install from instructions on using dotnet-dev-certs
2018-03-21 22:10:48 -07:00
Stephen Halter
5fa658c800
Never run continuation inline in SocketAwaitable.OnCompleted ( #2407 )
2018-03-19 17:29:49 -07:00
Ryan Brandenburg
3584e5f2ab
Set 2.0 baselines
2018-03-16 10:50:05 -07:00
Ben Adams
2527face16
Query EndPoints once during reset ( #2398 )
2018-03-15 23:55:51 -07:00
Javier Calvarro Nelson
acf7584d13
Reenable API Check
2018-03-15 21:44:34 -07:00
David Fowler
181dc0de24
React to pipelines changes
2018-03-15 16:58:53 -07:00
David Fowler
d31512528d
Items is now a first class property on ConnectionContext ( #2395 )
...
* Metadata is now a first class property on ConnectionContext
- Make IConnectionMetadata a manatory top level feature on ConnectionContext
- TransportConnection will lazily manifest ConnectionMetadata on first access.
This should avoid allocations since Kestrel isn't using this today.
2018-03-14 20:56:30 -07:00
Stephen Halter
9901f0f3e4
Default to the managed socket transport ( #2392 )
2018-03-14 11:50:10 -07:00
David Fowler
04eef791bc
Added transfer format to Protocol.Abstractions ( #2391 )
2018-03-14 08:16:38 -07:00
Ben Adams
e65e58daf3
Reduce Sockets mainloop Send/Receive statemachine size ( #2376 )
...
* Use Completion to Advance in Error
* Drop ReadResult from statemachine
2018-03-13 23:04:12 -07:00
David Fowler
572627e88c
Handle posting to the libuv thread after StopAsync ( #2388 )
...
- Check if the post handle is disposed and noop if it is.
We also catch an ObjectDisposedException because it's an inherent race condition.
2018-03-13 19:37:39 -07:00
Ben Adams
f6108928d8
Pass ReadOnlySequence via in ( #2389 )
...
* Pass ReadOnlySequence via in
2018-03-13 17:54:01 -07:00
Chris Ross (ASP.NET)
bfdb48717f
Host header format validation
2018-03-13 16:37:03 -07:00
David Fowler
bcea8330c4
Clean up some left overs ( #2385 )
2018-03-13 14:10:06 -07:00
David Fowler
2d8f3d95fe
Feature/clean up proto abstractions ( #2383 )
...
- This change aims to clean up the feature interfaces
used by kestrel and exposed by protocol absractions. It splits out the
IConnectionTransportFeature into smaller features that may or may
not be implemented on the connection.
- Added all of the features from Socket.Abstractions
in an attempt to make it go away completely. As a result
the helper methods and extensions have all been added here.
- Change IConnectionHandler to take TransportConnection. This cleans up the interface and makes it more explicit what features are required by Kestrel
2018-03-13 10:27:04 -07:00
David Fowler
fa3229b489
Revert "Clean up protocol abstractions ( #2381 )" ( #2382 )
...
This reverts commit ddd0b4c260 .
2018-03-13 02:04:42 -07:00
David Fowler
ddd0b4c260
Clean up protocol abstractions ( #2381 )
...
- This change aims to clean up the feature interfaces
used by kestrel and exposed by protocol absractions. It splits out the
IConnectionTransportFeature into smaller features that may or may
not be implemented on the connection.
- Added all of the features from Socket.Abstractions
in an attempt to make it go away completely. As a result
the helper methods and extensions have all been added here.
- Change IConnectionHandler to take TransportConnection. This cleans up the interface and makes it more explicit what features are required by Kestrel
2018-03-13 01:43:49 -07:00
Stephen Halter
2a7bbeb8d7
Revert "React to pipelines changes ( #2378 )"
...
This reverts commit 2421df85d6 .
2018-03-13 00:32:52 -07:00
David Fowler
2421df85d6
React to pipelines changes ( #2378 )
2018-03-12 23:59:04 -07:00
David Fowler
e7d3b0c5f9
Remove KestrelThreadPool abstraction and replaced it with PipeScheduler ( #2371 )
2018-03-12 14:49:19 -07:00
Stephen Halter
71bff00c0d
Use LibuvThread inspired IO Queue in Socket transport ( #2368 )
2018-03-09 15:04:20 -08:00
Pavel Krymets
fc80c15a65
Update to new corefx ( #2369 )
2018-03-08 14:23:07 -08:00
Chris Ross (ASP.NET)
42fbba3520
More detailed request timeout exceptions #2245
2018-03-07 12:23:06 -08:00
Ben Adams
300453396a
Pass StringValues via in ( #2295 )
2018-02-28 19:54:44 -08:00
Pavel Krymets
2c108d9ba1
React to pipes in corefx ( #2337 )
2018-02-28 12:41:51 -08:00
Justin Wyer
83bf2375b3
#2035 Do not await OnCompleted handlers before sending the Response ( #2324 )
2018-02-25 18:10:04 -07:00
Ben Adams
de7e2a2573
Use enum for method rather than string compares ( #2294 )
2018-02-23 14:29:42 -08:00
Nikita Tsukanov
39951e892e
Don't throw in HttpRequestStream.Flush ( #2342 )
...
Because read-only streams apparently can have Flush semantics and this behavior is expected by some of built-in stream wrappers (e. g. CryptoStream)
https://github.com/dotnet/corefx/pull/27327#pullrequestreview-98384813
https://github.com/aspnet/KestrelHttpServer/issues/2341
2018-02-23 09:51:09 -08:00
Ben Adams
6728e756b7
Sanitize and centralize exception throws ( #2293 )
...
* Sanitize and centralize exception throws
2018-02-23 09:24:20 -08:00
Ben Adams
6252ffd86a
Flatten exception handling ( #2313 )
...
3 nested try blocks with 3 finallies in same function O_o
2018-02-22 16:46:18 -08:00
Ben Adams
c57784447e
Speed up TryGetAsciiString ( #1973 )
...
* Widen
* Remove TryGetAsciiStringVectorCheckShifts
* Add Span version to benchmarks
2018-02-22 16:45:31 -08:00
Ben Adams
c0f88ebdc1
Faster IFeatureCollection.Get<TFeature> ( #2290 )
2018-02-22 16:44:38 -08:00
David Fowler
3fc69dc71f
Updated Streams to override Memory and Span overloads ( #2333 )
...
- Also plumbed Memory/Span through Kestrel over ArraySegment.
- Throw synchronously from the HttpRequestStream instead of async in some cases.
2018-02-21 00:00:46 -08:00
brightcr
a72e5db797
Removed code to set response headers - connection and upgrade as it should be set by caller e.g. WebSockets Middleware ( #2329 )
2018-02-19 08:36:28 -08:00
Ben Adams
1f8591184e
Use ReferenceEquals not MulticastDelegate.equals ( #2330 )
...
It never inlines because its such a chunky method
2018-02-17 08:13:15 -08:00
Mike Harder
4afaa386db
Remove unnecessary usings ( #2326 )
2018-02-16 14:04:16 -08:00
Alessio Franceschelli
14332c5daf
Allows Content-Length for 304 Not Modified response ( #2321 )
2018-02-14 16:01:07 -08:00
Alessio Franceschelli
9341f72b8d
Consumes request before closing connection ( #2314 )
2018-02-14 11:46:13 -08:00
David Fowler
2156030460
Clean up some of protocol abstractions ( #2311 )
...
* Clean up some of protocol abstractions
- Renamed PipeConnection to DuplexPipe
- Removed MemoryPool from ConnectionContext
- Work around value tuple issue on net471
2018-02-10 10:39:21 -08:00
Joshua Clark
5dd590e75e
Add clearer exception message to HttpResponseStream ODE ( #2305 )
2018-02-08 17:28:00 -08:00
Redouane Sobaihi
8f25c4e8ca
Include limits default values in intellisense comments. ( #2304 )
2018-02-08 11:37:01 -08:00
Pavel Krymets
261b5836c1
Merge release/2.1
2018-01-30 09:39:33 -08:00
Pavel Krymets
a84095e5c3
React to pipelines changes ( #2275 )
2018-01-29 14:34:48 -08:00
David Fowler
8ea181f088
Use the OnWriterCompleted and OnReaderCompleted events directly. ( #2280 )
2018-01-29 14:27:47 -08:00
David Fowler
50b396cec6
Fixed race in sockets transport ( #2279 )
...
- Based on the changes you made earlier (f4d27e6 ), we trigger OnConnectionClosed before the socket is disposed in the SocketTransport. This moves the call to Output.Complete to happen after and thus fixes the race.
2018-01-29 12:41:45 -08:00
Javier Calvarro Nelson
8280c1b73f
Update Kestrel HTTPS developer certificate error message
2018-01-26 12:55:15 -08:00
Chris Ross (ASP.NET)
4fd4fd9f41
Mark HTTP/2 as not supported with an AppContext switch override.
2018-01-24 15:29:59 -08:00
Stephen Halter
526dfdb332
Switch back to libuv as the default transport ( #2257 )
...
* Switch back to libuv as the default transport
2018-01-18 17:25:28 -08:00
Stephen Halter
cf371a4e74
Disable heartbeat warning when debugger is attached ( #2258 )
2018-01-16 18:11:11 -08:00
Stephen Halter
f4d27e67bb
Improve server shutdown logic ( #2247 )
...
Ensure connections abort when they don't close gracefully.
2018-01-16 16:43:45 -08:00
Javier Calvarro Nelson
e6bb551018
Adds support for loading the developer certificate from a pfx file
...
* If we can't find a developer certificate on the certificate store
we will look for a developer certificate on the file system if a
password has been specified for the Development certificate.
* We will look at ${APPDATA}/ASP.NET/https/<<AppName>>.pfx for windows
and fallback to ${HOME}/.aspnet/https/<<AppName>>.pfx
* In case the password wasn't specified through configuration, the file
is not found on the file system or can't be loaded, we won't
do anything.
2018-01-12 16:32:06 -08:00
Chris Ross (ASP.NET)
420500e2a9
#2102 Always start the response before draining the request.
2018-01-09 15:59:19 -08:00
Steffen Forkmann
9a8dd6ef12
Allow Content-Length 0 for Websocket-Connection ( #2217 )
2018-01-09 15:01:09 -08:00
Chris Ross (ASP.NET)
ad2149f5f0
Change ApplicationProtocol to ReadOnlyMemory<byte> #2182
2018-01-05 09:25:30 -08:00
Stephen Halter
664055fa43
Revert "Change ApplicationProtocol to ReadOnlyMemory<byte> #2182 "
...
This reverts commit 2d3a01d48d .
2018-01-04 16:17:36 -08:00
Chris Ross (ASP.NET)
2d3a01d48d
Change ApplicationProtocol to ReadOnlyMemory<byte> #2182
2018-01-04 15:26:40 -08:00
Pavel Krymets
1fa001e7db
React to pipeline changes ( #2234 )
...
React to pipeline changes
2018-01-04 09:54:42 -08:00
Chris Ross (ASP.NET)
dfaf37cbba
Implement config support #1290 #1879 #2016 #2166 #2167 #2188
2017-12-21 09:12:32 -08:00
Pavel Krymets
3a0a133a02
Remove use of Dangerous* Span APIs and use MemoryMarshal instead ( #2228 )
2017-12-19 11:33:39 -08:00
Chris Ross (ASP.NET)
d505d20ba7
Merge Kestrel.Https into Kestrel.Core. Fix sample.
2017-12-18 14:08:14 -08:00
BrennanConroy
95dc8824c3
Upgrade package references and react to corefx API changes ( #2212 )
2017-12-11 09:02:37 -08:00
Stephen Halter
668f8e3b4b
Lazily allocate protocol-specific connection objects ( #2190 )
...
* Refactor Http[12]?Connection
2017-12-04 15:59:12 -08:00
David Fowler
b8a1c04ffb
Make the HttpParser a singleton ( #2203 )
...
- It's completely stateless so make it a singleton
- Fixed tests
2017-12-03 13:27:36 -08:00
Ryan Brandenburg
7c2c5f2bef
EnableApiCheck for Kestrel.Https ( #2198 )
2017-11-30 18:36:35 -08:00
Tornhoof
5e9e3a8574
Make sure to add whitespace after the status code even if the reasonphrase is empty ( #2184 )
2017-11-29 12:30:27 -08:00
Nate McMaster
98de3aa50d
Suppress API check due to reflection load errors ( #2185 )
...
[ci skip]
2017-11-28 11:04:08 -08:00
David Fowler
ce68427050
Use ALPN support in SSLStream on .NET Core >= 2.1 ( #2179 )
...
- Always add the TlsConnectionFeature when the HttpsConnectionAdapter runs
- Implemented the ITlsApplicationProtocolsFeature on the existing TlsConnectionFeature
- Removed Kestrel.Tls
2017-11-27 09:11:39 -08:00
Chris Ross
8e1da5d1f6
Expose WebHostBuilderContext in UseKestrel #1334 ( #2177 )
2017-11-22 10:19:17 -08:00
David Fowler
a1d75df47d
Use new Memory<byte> APIs on SocketAsyncEventArgs ( #2173 )
...
- This should improve the performance of handling buffers by (eventually)
removing GCHandle churn for Kestrel's already pinned buffers.
- Made the Sockets transport target both netcoreapp2.1 and netstandard2.0 to use new
APIs
- Disable API check for the sockets transport
2017-11-20 11:36:09 -08:00
Stephen Halter
67fc879c54
Null out send buffer less ( #2164 )
2017-11-17 12:41:35 -08:00
Chris Ross (ASP.NET)
89d1862f21
#2139 Add ListenLocalhost and ListenAnyIP
2017-11-16 16:14:17 -08:00
Andrew Stanton-Nurse
065e9bb57a
Update "temporary" OpenSSL wrapper to support 1.1, and add HTTP/2 sample with docker ( #2149 )
2017-11-13 15:54:16 -08:00
Pavel Krymets
73a37363e1
Migrate to new pipe APIs ( #2124 )
2017-11-13 15:04:54 -08:00
Andrew Stanton-Nurse
89fa8f0fa2
Revert "Open ssl pfx ( #2150 )"
...
This reverts commit 41abe63c10 .
2017-11-07 15:48:49 -08:00
Tim Seaward
41abe63c10
Open ssl pfx ( #2150 )
2017-11-07 14:49:02 -08:00
Stephen Halter
238da2742d
Use SocketAsyncEventArgs to improve perf ( #2147 )
2017-11-07 14:43:14 -08:00
Nate McMaster
6c82f78c65
Pin tool and package versions to make builds more repeatable
...
Part of aspnet/Universe#575
2017-11-01 15:18:49 -07:00
Stephen Halter
0c34523e8b
Log exception after critical accept loop error ( #2140 )
2017-10-31 11:09:11 -07:00
Tom Deseyn
eeb49c2af7
Pass setsockopt fd as int ( #2136 )
2017-10-26 11:40:52 -07:00
Andrew Stanton-Nurse
ab78fb0b8c
fix build break
2017-10-25 15:22:36 -07:00
Cesar Blum Silveira
8c4bdbcf6b
Add "zero config" HTTPS support using local development certificate. ( #2093 )
2017-10-25 13:59:09 -07:00
Stephen Halter
c3ba875d12
Better handle Socket transport accept errors ( #2133 )
...
* More reliably swallow accept errors during shutdown
* Handle and log connection reset errors thrown from accept
* Don't trace errors for server-aborted connections
2017-10-25 12:58:00 -07:00
Andrew Stanton-Nurse
1678c54291
Add some tracing and increase timeout for flaky test ( #2130 )
2017-10-25 11:56:43 -07:00
Andrew Stanton-Nurse
7d205d1093
add event names to Logging messages ( #2132 )
2017-10-25 11:27:05 -07:00
Andrew Stanton-Nurse
30010a103b
Fix for #2085 - "The Detaskening" ( #2123 )
2017-10-23 10:52:02 -07:00
Cesar Blum Silveira
3fbfba63f8
HTTP/2: implement 100-continue ( #2106 )
2017-10-18 16:31:50 -07:00
Stephen Halter
c57aa3b2a8
Treat more exceptions from Socket.ReceiveAsync as aborted connections ( #2122 )
2017-10-18 12:40:37 -07:00
Stephen Halter
733ac1efab
Handle EPIPE like ECONNRESET on Linux ( #2112 )
2017-10-13 15:07:21 -07:00
Cesar Blum Silveira
9dfffd14bb
HTTP/2: support trailers.
2017-10-12 17:26:20 -07:00
Stephen Halter
66a3c9496a
Set SO_REUSEADDR on managed listen sockets on Unix ( #2111 )
...
- https://github.com/dotnet/corefx/issues/24562
2017-10-12 12:26:52 -07:00
Cesar Blum Silveira
deed6c9780
HTTP/2: add exception error messages and log them.
2017-10-12 11:23:57 -07:00
Stephen Halter
fdb4184dbf
Sockets transport ( #2100 )
...
* Make Sockets the default transport
* Create separate Libuv and Sockets functional test projects
* Fix functional tests that fail with Sockets
* Moved OneToTenThreads test to Kestrel.Transport.Libuv.Tests
* Fix systemd activation tests to use libuv transport
* Dispose Sockets PipeFactory
* Improve Socket's server-side abort handling
* Add explicit rebinding test
2017-10-11 15:14:35 -07:00
Cesar Blum Silveira
d46d2ce193
HTTP/2: validate request headers prior to starting new stream.
2017-10-10 13:12:34 -07:00
Cesar Blum Silveira
11ce1395e5
HPACK fixes and improvements.
2017-10-04 12:59:41 -07:00