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
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
3177ba0aae
Wait for frame loop completion to dispose connection stream ( #1156 ).
2016-10-10 10:16:03 -07:00
Kristian Hellang
03f8a7a217
Use HeaderUtilities.FormatDate in DateHeaderValueManager ( #1132 )
2016-10-06 11:56:49 -07:00
Cesar Blum Silveira
a2439105ae
Refactor request line validation and error reporting ( #1116 ).
2016-10-03 16:54:51 -07:00
Cesar Blum Silveira
4117ad8a1e
Refactor non-body response handling.
...
- Add functional tests
- Remove BadHttpResponse, ResponseRejectionReasons and TestFrameProtectedMembers
- Chunk non-keepalive HTTP/1.1 responses
- Set _canHaveBody to true when StatusCode == 101
- Add test to check that upgraded connections are always closed when the app
is done
- Log writes on responses to HEAD requests only once.
2016-10-03 16:46:59 -07:00
Ben Adams
e7e6b896ba
Don't emit TE header or body for non-body responses
2016-10-03 15:54:14 -07:00
Ben Adams
310411075f
Slimmer locks
2016-09-28 15:33:34 -07:00
Cesar Blum Silveira
09fda749b0
Don't reset frame state when connection is aborted ( #1103 ).
2016-09-28 15:06:22 -07:00
Cesar Blum Silveira
73656f6503
Assume zero length on non-keepalive requests without Content-Length or Transfer-Encoding ( #1104 ).
2016-09-28 12:30:53 -07:00
Cesar Blum Silveira
0312da7df3
Add request headers timeout ( #1110 ).
2016-09-27 17:08:02 -07:00
Stephen Halter
7b2f7b94ab
Return last block from SocketOutput when data is fully written
...
- This reduces Kestrel's memory usage for idle connections.
2016-09-27 15:57:45 -07:00
Stephen Halter
0edf36bd21
Return last block from SocketInput when data is fully consumed
...
- This reduces Kestrel's memory usage for idle connections.
2016-09-27 15:57:45 -07:00
Cesar Blum Silveira
375e8b7022
Change context relationships from inheritance to composition.
2016-09-27 11:53:06 -07:00
Cesar Blum Silveira
49ff98f8cb
More specific response status codes for errors ( #653 ).
...
- 414 when request line exceeds size limit
- 431 when request headers exceed size or count limits
- 505 when request line contains unsupported HTTP version
2016-09-22 12:13:14 -07:00
Stephen Halter
63509b9e10
Make FrameRequestStream.CopyToAsync(...) copyless
...
- Add tests for when the CopyToAsync destinationStream throws.
- Add test to verify the destination stream sees the same array written to by
the producer.
2016-09-20 11:54:58 -07:00
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
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
Cesar Blum Silveira
f2085b1968
Add keep-alive timeout ( #464 ).
2016-09-06 12:48:47 -07:00
Stephen Halter
1ecef8094a
Make Kestrel's response buffer limit configurable
2016-08-30 16:01:42 -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
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
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
Cesar Blum Silveira
8836eec7d8
Limit request line length ( #784 ).
2016-08-03 15:39:16 -07:00
Stephen Halter
1020d69171
Better logging for connection errors during HTTPS handshake
2016-08-03 11:15:15 -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
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