Cesar Blum Silveira
1a273f5a34
Improve keep-alive timeout.
...
- Track time more accurately
- Control timeout in Connection instead of Frame
2016-09-14 20:57:16 -07:00
Stephen Halter
2fbf0c6281
Merge branch 'DamirAinullin/single-initialize' into dev
2016-09-12 10:34:35 -07:00
Cesar Blum Silveira
8c513402a3
Always call ConsumingComplete() with furthest examined position ( #1095 ).
2016-09-10 20:05:14 -07:00
Pavel Krymets
c777a9efea
Use TaskCache class from Microsoft.Extensions.TaskCache.Sources ( #1089 )
...
Instead of Task.FromResult(0)
2016-09-09 15:57:33 -07:00
DamirAinullin
0491b49268
Remove double initializing of variable _field3
2016-09-07 14:23:06 +03:00
Cesar Blum Silveira
f2085b1968
Add keep-alive timeout ( #464 ).
2016-09-06 12:48:47 -07:00
Cesar Blum Silveira
19f8958fa8
Move TestServer to shared directory.
2016-09-06 12:47:24 -07:00
David Fowler
6795ca2f78
Make the char array for utf8 decoding smaller
2016-08-31 18:54:15 -07:00
Stephen Halter
1ecef8094a
Make Kestrel's response buffer limit configurable
2016-08-30 16:01:42 -07:00
Stephen Halter
acfcafb6e1
Ensure MockLibuv.OnPostTask doesn't complete too early
2016-08-29 20:53:00 -07:00
Stephen Halter
0742d113be
Make all calls to ThreadPool.QueueUserWorkItem through IThreadPool
...
- This allows SocketOutputTests to cause QUWI to exec synchronously
- To avoid allocations, the logger can't be captured making it "unsafe"
2016-08-29 20:52:47 -07:00
Stephen Halter
08d7f66108
Merge branch 'benaadams/less-unsafe' into dev
2016-08-26 14:44:18 -07:00
Ben Adams
be51e5aecb
Remove unneeded unsafe modifiers
2016-08-25 08:07:15 +01:00
Ben Adams
7dc0a8c7bd
Return count from trywrite
2016-08-25 07:58:36 +01:00
Ben Adams
af73e519c1
Comment inlinability changes
2016-08-25 07:53:01 +01:00
Ben Adams
40636998d7
Improve inlinability of libuv success checking
2016-08-21 13:48:35 +01:00
Stephen Halter
7bd30ea693
Log all startup errors in KestrelServer
2016-08-18 14:52:26 -07:00
Stephen Halter
972be6e8c1
Disable automatic chunking for all non keep-alive requests
...
- Fixes a bug where Upgrade requests (e.g. WebSockets) would be chunked
- Allows chunking to be disabled by setting "Connection: close" on the response
2016-08-17 12:39:18 -07:00
Stephen Halter
16fbb94c44
Automatically chunk and set 0 Content-Length for non keep-alive responses
2016-08-15 16:27:54 -07:00
Stephen Halter
5f4e60bf8d
Always set "Connection: close" header for non keep-alive responses
2016-08-15 16:27:54 -07:00
Cesar Blum Silveira
08a91f17bf
Call OnStarting and OnCompleted callbacks in LIFO order ( #1042 ).
2016-08-10 14:52:05 -07:00
Cesar Blum Silveira
08f98f4790
Add header limit options ( #475 ).
2016-08-09 12:31:39 -07:00
Cesar Blum Silveira
a5aacd6307
Throw when setting OnStarting after response has already started ( #806 ).
2016-08-08 11:38:06 -07:00
Cesar Blum Silveira
140dc6fcf5
Add obsoletion reason for KestrelServerOptions.MaxRequestBufferSize.
2016-08-04 10:46:42 -07:00
Stephen Halter
9727a4db86
Improve the performance of connection filters
...
- Buffer connection filter input less by using ProducingStart/Complete
- Simplify FilteredStreamAdapter
2016-08-03 16:45:39 -07:00
Stephen Halter
5aee524768
Ensure Begin/End Read/Write methods are correctly implemented
...
- Add Begin/End Write methods to FrameResponseStream
- Fix state check of Begin/End Read methods in FrameRequestStream
2016-08-03 16:45:39 -07:00
Stephen Halter
4337d2a4a7
Implement Begin/End Read/Write methods in LibuvStream
2016-08-03 16:45:39 -07:00
Cesar Blum Silveira
8836eec7d8
Limit request line length ( #784 ).
2016-08-03 15:39:16 -07:00
Stephen Halter
dfe12223b8
Ensure HTTPS handshake errors aren't logged on socket close
2016-08-03 15:21:57 -07:00
Stephen Halter
1020d69171
Better logging for connection errors during HTTPS handshake
2016-08-03 11:15:15 -07:00
Mike Harder
4ece3f4b68
Change "String." to "string." to match coding convention
2016-08-01 11:09:31 -07:00
Stephen Halter
00a540dcb8
Merge branch 'benaadams/more-block-collect-info' into dev
2016-07-28 16:51:35 -07:00
Cesar Blum Silveira
2244f190e1
Merge branch 'benaadams/exceptions' into dev
2016-07-25 10:31:32 -07:00
Stephen Halter
3a67cb9df5
Merge branch 'benaadams/enum-rather-than-string' into dev
2016-07-25 10:30:33 -07:00
Stephen Halter
b5c117695e
Stop KestrelThreads in parallel
2016-07-25 10:29:01 -07:00
Stephen Halter
dc12f3150e
Wait for graceful shutdown now that it usually works
...
- Unreference the async handle to allow the loop to stop without walking first
- Wait before walking open handles to allow earlier uv_close calls to complete
2016-07-25 10:29:01 -07:00
Ben Adams
51288e13f8
Enum to singular
2016-07-22 22:25:03 +01:00
Ben Adams
0a1ea124ee
Use HttpVersionType enum rather than string compare
2016-07-22 21:34:49 +01:00
Ben Adams
0620ce5a2f
Consolidate BadHttpRequestException messages
2016-07-22 21:19:44 +01:00
Ben Adams
7c811ff568
Only allocate key string when unknown
2016-07-22 20:50:43 +01:00
Stephen Halter
27f8c8dca2
Ensure libuv handles get disposed properly after binding errors
2016-07-22 12:26:27 -07:00
David Fowler
0e7967a7fc
Allocate things per KestrelThread instead of per listener
...
- Moved things that have loop affinity to KestrelThread like
WriteReqPool, MemoryPool and the ConnectionManager
- Changed on the listeners to only kill the ListenSocket, not the
connections on dispose
- Moved connection disposal to KestrelThread.Stop
- Simplify the connection manager logic so it's possible to walk and
wait in a single call
2016-07-21 22:17:18 -07:00
Stephen Halter
24fa5c0264
Merge pull request #938 from NVentimiglia/dev
...
As an American, I had to correct the spelling of 'independent'
2016-07-21 17:17:47 -07:00
Cesar Blum Silveira
3c0e0f8d88
Always throw same exception type on read after connection error ( #975 ).
2016-07-21 16:33:56 -07:00
Pavel Krymets
6bcf7643df
Do not allocate large write task queues ( #1005 )
2016-07-21 16:05:50 -07:00
Pavel Krymets
7b7e2889ce
Allocate less in GetIPEndPoint ( #1004 )
2016-07-21 12:17:55 -07:00
Ben Adams
f42316af7f
Remove Environment.StackTrace as crashing tests
2016-07-21 01:44:23 +01:00
Ben Adams
aa385a1317
Use Environment.NewLine and Environment.StackTrace
2016-07-21 01:13:27 +01:00
Ben Adams
7b8abf5a3e
Improved Memoryblock tracking
...
Also fixed 3 tests that weren't handling block properly
2016-07-21 01:13:27 +01:00
David Fowler
3078f4914c
Removed unneeded things from Connection
2016-07-18 22:19:45 -07:00
David Fowler
8399910a6e
PR feedback
2016-07-15 15:16:03 -07:00
David Fowler
14717f2a3f
Always allocate the socket closed tcs
2016-07-15 15:16:03 -07:00
David Fowler
142685c0fb
Remove state lock from Connection
...
- Remove the state lock by creating the frame earlier
- Set properties on the frame that need to be set before calling start.
- Don't rely on the copy ctor of the *Context hierarchy to set
*everything*
2016-07-15 15:16:03 -07:00
Cesar Blum Silveira
3bb7f4e2c4
Treat ECONNRESET as a connection error ( #934 ).
2016-07-15 14:53:21 -07:00
Doug Bunting
82a0a99107
One build to rule them all
...
- well, at least VS and command-line builds will share output
- part of aspnet/Coherence-Signed#277
2016-07-07 12:07:14 -07:00
Cesar Blum Silveira
edd247b8e2
Merge branch 'khellang/status-451' into dev
2016-07-07 11:42:15 -07:00
Cesar Blum Silveira
176b599854
Merge branch 'khellang/status-308' into dev
2016-07-07 11:35:24 -07:00
Cesar Blum Silveira
9f720eda90
Reset frame streams on each request ( #940 ).
2016-07-06 14:57:43 -07:00
Nicholas Ventimiglia
6a8a4e8669
Update MemoryPoolBlock.cs
2016-06-21 17:00:59 -07:00
Nicholas Ventimiglia
3db95ddcde
As an American, I had to correct the spelling of 'independent'
2016-06-21 11:08:40 -07:00
Pranav K
de668c2ebd
Updating to dev versions
...
# Conflicts:
# test/Microsoft.AspNetCore.Server.Kestrel.FunctionalTests/project.json
2016-06-16 10:40:58 -07:00
Kristian Hellang
eb74a19f9a
Added "451 Unavailable For Legal Reasons" to ReasonPhrases
...
From RFC7725 - https://tools.ietf.org/html/rfc7725
2016-06-16 13:49:26 +02:00
Kristian Hellang
6414ccc2fd
Added "308 Permanent Redirect" to ReasonPhrases
...
From RFC7538 - https://tools.ietf.org/html/rfc7538
2016-06-16 13:48:52 +02:00
Stephen Halter
01e9101543
Add more doc comments to KestrelServerOptions
2016-06-13 19:52:38 -07:00
Mike Harder
5ecb1f59a4
Limit size of memory buffer when reading request ( #304 )
...
- Added property `KestrelServerOptions.MaxRequestBufferSize`
- Default is 1,048,576 bytes (1MB)
- If value is null, the size of the request buffer is unlimited.
- Fixed bug in `IConnectionControl.Resume()` where `_socket.ReadStart()` can throw if the socket is already disconnected.
- Made `UvStreamHandle.ReadStop()` idempotent, to match `uv_read_stop()`.
2016-06-13 18:52:20 -07:00
Stephen Halter
b4632c273e
Handle exceptions thrown from Connection.Start in ListenerSecondary
...
- This is already done for primary listeners
2016-06-08 17:17:49 -07:00
jacalvar
8dbdc0294f
Remove unncessary imports
2016-06-08 15:07:48 -07:00
Mukul Sabharwal
badbc7c8f7
Downtarget Kestrel to NETStandard 1.3
2016-06-06 21:37:44 -07:00
moozzyk
69bd0dc4be
Reject requests that have null characters in path
2016-06-06 09:59:42 -07:00
Pranav K
17a41597a6
Reacting to Hosting changes
2016-06-03 18:24:35 -07:00
Andrew Stanton-Nurse
09f5be1434
fix #909 by moving most classes to Internal ns
2016-06-03 14:14:21 -07:00
Stephen Halter
d14f18012a
Avoid Null ReferenceException in Frame.RequestAbortedSource
...
- Avoid unneeded resetting of _abortedCts and _manuallySetRequestAbortToken
2016-06-02 16:55:19 -07:00
Stephen Halter
6bff2ecb34
Small cleanup to SocketOutput's shutdown logic
2016-06-02 16:54:00 -07:00
Stephen Halter
07744e75d9
Gracefully handle connection close in SocketOutput.ProducingComplete
2016-06-02 16:54:00 -07:00
Stephen Halter
2d229e8980
Allow a maximum of 3 concurrent uv_write operations per connection
...
- Keep logic to prevent unnecessary calls to KestrelThread.Post
- This partially reverts commit 480996433e .
2016-06-02 16:52:06 -07:00
moozzyk
0342754c57
Using the optimized method for converting header name to ASCII
2016-06-02 16:36:22 -07:00
Cesar Blum Silveira
de022b6051
Improved handling of whitespace in headers.
2016-06-02 16:18:43 -07:00
moozzyk
6e46d9757d
Improve perf of TryGetAsciiString
2016-06-02 12:52:12 -07:00
Stephen Halter
f609f41a7c
Reject non-ASCII chars in headers in addition to control chars
2016-06-01 16:01:15 -07:00
Pavel Krymets
bb92cc1c29
Fix NRE when aborting connection or client disconects
2016-06-01 15:52:05 -07:00
Chris R
6224f5b6e8
Perf: Remove unnecessary path checks
2016-06-01 14:56:49 -07:00
moozzyk
0753f06c28
Aborting request if a string can't be converted to ASCII
2016-05-31 17:11:31 -07:00
moozzyk
5d77ad24c2
Refactoring out GetAsciiString from MemoryPoolIteratorExtensions
2016-05-31 16:27:01 -07:00
Cesar Blum Silveira
50208a3a79
Implement IHttpRequestFeature.RawTarget ( aspnet/HttpAbstractions#596 ).
2016-05-31 15:30:12 -07:00
Andrew Stanton-Nurse
290e1e3f3f
improve validation of HTTP methods
2016-05-31 14:13:13 -07:00
Mike Harder
306084356e
ServerAddress.FromUrl() should throw if Host is missing ( #860 )
2016-05-31 11:54:38 -07:00
BrennanConroy
6b25ee7343
Replace PlatformAbstractions with RuntimeInformation
2016-05-31 08:17:02 -07:00
Cesar Blum Silveira
0a181b1f3f
Reset Frame's IHttpRequestFeature.Headers and IHttpResponseFeature.Headers between requests ( #879 ).
2016-05-27 16:02:55 -07:00
Stephen Halter
1a6ec294bc
Merge branch 'stephentoub/remove_valuetask_casts' into dev
2016-05-27 15:47:13 -07:00
Cesar Blum Silveira
80a2bc124d
Remove Frame.RequestUri.
2016-05-27 12:40:14 -07:00
Mike Harder
2453047fe2
ServerAddress.FromUrl() should throw for invalid url ( #875 )
2016-05-27 12:02:30 -07:00
Stephen Toub
69d8b17095
Remove uses of ValueTask<T>'s implicit casts
...
These are being removed.
2016-05-27 10:28:24 -04:00
Stephen Halter
b9b67f6bf4
Merge branch 'khellang/set-headers-on-response-start' into dev
2016-05-26 15:35:01 -07:00
Kristian Hellang
72cc0ffbd5
Set Date and Server headers at response start
...
Closes #223
2016-05-26 17:38:16 +02:00
Cesar Blum Silveira
a3d0bd0ec4
Bind to both IPv4 and IPv6 when localhost is specified ( #231 ).
2016-05-25 21:23:29 -07:00
Cesar Blum Silveira
3f4e2323f4
Throw when setting Frame.StatusCode or Frame.ReasonPhrase after response has already started ( #805 ).
2016-05-24 16:32:54 -07:00
Stephen Halter
cb284b9d58
Fix race that would allow GetDateHeaderValues to return null
2016-05-24 16:28:46 -07:00
Stephen Halter
d164f350b4
Add comment explaining why ForChunkedEncoding._vectorCRs is not static
2016-05-24 16:05:20 -07:00
Mike Harder
5ca6592677
Don't bind if only port is specified ( #814 ) ( #861 )
...
- Also renamed ServerAddressFacts to ServerAddressTests to match existing test classes
2016-05-23 14:06:46 -07:00
Ben Adams
6098880132
Reset connection info not using interface
2016-05-21 00:41:55 +01:00
Cesar Blum Silveira
925d8e0200
Always cache headers and streams across frames ( #754 ).
2016-05-20 16:16:19 -07:00
Stephen Halter
5495610e5c
Merge branch 'benaadams/fastpath-connectioncheck' into dev
2016-05-20 16:02:46 -07:00
Stephen Halter
a38a437efb
Merge branch 'khellang/server-header-option' into dev
2016-05-20 15:56:29 -07:00
Stephen Halter
c39546352a
Merge branch 'shanewalters/remote-cert' into dev
2016-05-20 15:53:51 -07:00
Kristian Hellang
2ab01c09fd
Add option to remove the Server header
2016-05-20 13:18:18 +02:00
Ben Adams
5eb1466487
Fast-path response header connection check
2016-05-20 03:37:32 +01:00
shanewalters
b17c070e1c
Updated to not use handle, centralize conversion logic.
2016-05-19 14:40:29 -06:00
Cesar Blum Silveira
59aef9a443
Merge branch 'benaadams/remove-framecontext' into dev
2016-05-19 12:25:04 -07:00
Cesar Blum Silveira
1f494b168b
Remove Frame._requestProcessingStarted field.
2016-05-19 11:48:50 -07:00
Cesar Blum Silveira
9960cb8c23
Remove unused Frame static fields.
2016-05-19 11:47:58 -07:00
Cesar Blum Silveira
8e9df409c4
Remove dead code in ReasonPhrases.
2016-05-19 11:46:48 -07:00
Ben Adams
e8647c0cb4
Remove extra FrameContext class
...
Resolves #837
2016-05-19 19:22:39 +01:00
shanewalters
9232029950
Use SslStream.RemoteCertificate to recreate disposed certificate.
2016-05-19 12:17:23 -06:00
Cesar Blum Silveira
9a06bf39ab
Move ECONNRESET value check to server initialization.
2016-05-18 22:11:10 -07:00
Stephen Halter
7e7f21ec49
Merge branch 'benaadams/dateheader' into dev
2016-05-18 17:11:01 -07:00
Stephen Halter
369512369f
Merge branch 'benaadams/return-blocks-out-of-lock' into dev
2016-05-18 17:03:24 -07:00
Nathan Anderson
e1c64d2119
reuse typeof results in generated Frame code
2016-05-18 16:52:34 -07:00
Stephen Halter
185ad000bb
Prevent NullReferenceException in KestrelThread.OnStopRude
...
- UvMemory.FromIntPtr looks up a weak reference so we need to null check.
2016-05-18 16:21:55 -07:00
Cesar Blum Silveira
8c8ee150f7
Send 'Connection: close' in all 400 responses to HTTP/1.1 requests ( #840 ).
2016-05-18 15:03:31 -07:00
Cesar Blum Silveira
3e841ccba1
Always send HTTP/1.1 responses ( #792 ).
2016-05-16 16:11:37 -07:00
Cesar Blum Silveira
3186e1bd72
Make TakeStartLine more robust ( #683 ).
2016-05-12 12:07:08 -07:00
Ben Adams
a3b0f809de
Only call PrepareDateValues if not already called for tick
2016-05-10 20:38:27 +01:00
Ben Adams
0e8cbe5df6
Return SocketInput blocks out of lock
2016-05-10 01:18:24 +01:00
Stephen Halter
388841c1d8
Merge branch 'release' into dev
2016-05-09 16:37:40 -07:00
Stephen Halter
12a3816c12
Make some MemoryPoolBlock operations volatile
...
- Making MemoryPoolBlock.End volatile and using Volatile.Write for
MemoryPoolBlock.Next prevents a race that could cause threads consuming
blocks to skip produced bytes.
2016-05-05 15:13:28 -07:00
Stephen Halter
4c39374dc0
Always check if block is last in linked list before consuming it
...
- This prevents a race where we could read into the "Next" Block without
completely consuming the previous one.
2016-05-05 15:13:17 -07:00
Nathan Anderson
132263e767
narrow lock scope when connections end
2016-05-04 16:50:08 -07:00
Stephen Halter
fed7c44829
Merge branch 'halter73/validate-header' into dev
2016-05-04 12:35:26 -07:00
Stephen Halter
c1e5640a65
Don't allow response headers to contain control characters
...
- For the purposes of this commit, control characters are everything < 0x20.
- Immediately throw an InvalidOperationException when the header is added to
the IHttpResponseFeature.Headers dictionary.
2016-05-04 12:24:31 -07:00
Mike Harder
14bbba0641
Update addresses in IServerAddressesFeature with assigned dynamic ports ( #758 )
...
- Change most tests to use dynamic ports, rather than a fixed port obtained from GetNextPort().
- Add several new cases to `AddressRegistrationTests` and `ServerAddressFacts`.
- Remove project `test\Microsoft.AspNetCore.Server.Kestrel.TestCommon`. It's not longer needed, since only `AddressRegistrationTests` uses `GetNextPort()`.
2016-05-04 11:27:23 -07:00
Stephen Halter
f8c2c2470f
Merge branch 'benaadams/memorypool' into dev
2016-05-02 21:58:53 -07:00
Pranav K
ff510875f2
Merge branch 'release' into dev
2016-05-02 14:56:30 -07:00
Pranav K
f0358182e4
Fix build warnings
2016-05-02 11:27:18 -07:00
Ben Adams
3a424f6aba
Remove unnecessary fixed blocks
2016-04-30 11:17:06 +01:00
Ben Adams
2aa10a64a2
Remove noop pin+unpin w/ memory blocks
...
+ Only use pooled blocks in tests
2016-04-30 11:17:06 +01:00
Kristian Hellang
8a9840216c
Use type's namespace instead of assembly FullName
2016-04-29 12:02:56 -07:00
moozzyk
75adbc18a2
Use IOCP on secondary listener threads on Windows
...
Addresses #679
2016-04-29 08:45:12 -07:00
Cesar Blum Silveira
ebca8db7dc
Merge branch 'justinvp/taskutilities' into dev
2016-04-28 11:28:42 -07:00
Justin Van Patten
68f14c06cb
Use Task.FromCanceled<TResult>() on NETSTANDARD1_3
...
Task.FromCanceled<int>(cancellationToken) can be used on
NETSTANDARD1_3 in TaskUtilities.GetCancelledZeroTask().
2016-04-27 22:26:31 -07:00
Cesar Blum Silveira
5a8cba878d
Merge branch 'benaadams/async-write' into dev
2016-04-27 11:25:45 -07:00
Justin Van Patten
8f7c0ff041
Minor Stream improvements
...
- Unsupported members should throw NotSupportedException instead of
NotImplementedException per MSDN docs for CanRead/CanSeek/CanWrite.
- Position should throw NotSupportedException when CanSeek is false.
- FrameRequestStream.Flush/FlushAsync should not throw
NotImplementedException.
- Use expression-bodied members for CanRead/CanSeek/CanWrite on
FrameRequestStream to match FrameResponseStream.
- Provide no-op override of LibuvStream.FlushAsync to match Flush.
2016-04-25 22:19:30 -07:00
Ben Adams
216aa9343e
Remove redundent null coalesce
2016-04-25 11:49:48 +01:00
Ben Adams
4626833e51
StreamSocketOutput WriteAsync as async
2016-04-25 09:52:33 +01:00
Cesar Blum Silveira
0a21b94609
Make ECONNRESET value platform-specific ( #649 ).
2016-04-22 16:06:08 -07:00
Cesar Blum Silveira
179b57b01f
Remove SocketInputStream ( #753 ).
2016-04-21 15:10:12 -07:00
Cesar Blum Silveira
7ca0fbeb3d
Merge branch 'release' into dev
2016-04-19 22:22:48 -07:00
Cesar Blum Silveira
f29dd60999
Fix connection termination issues when using connection filters ( #737 , #747 ).
...
- If we're done before the client sends a FIN, force a FIN into the raw
SocketInput so the task in FileteredStreamAdapter finishes gracefully
and we dispose everything in proper order.
- If there's an error while writing to a stream (like ObjectDisposedException),
log it once and prevent further write attempts. This means the client closed
the connection while we were still writing output.
- This also fixes a bug related to the point above, where memory blocks were
being leaked instead of returned to the pool (because we weren't catching
the exception from Write()).
2016-04-19 22:04:33 -07:00
Mike Harder
8b83f1ee6b
Merge branch 'release' into dev
2016-04-18 16:59:08 -07:00
Mike Harder
0453e4af70
Add KestrelServerOptionsSetup before KestrelServerOptions ( #755 ) ( #757 )
...
- Required to ensure that options.ApplicationServices is available after during UseKestrel(options)
2016-04-18 16:57:59 -07:00
Mike Harder
0d9dc1a205
Merge branch 'release' into dev
2016-04-18 15:33:21 -07:00