Commit Graph

1253 Commits

Author SHA1 Message Date
Louis DeJardin b25d2d9772 Continued updates for #184
* Reordering members
- Fields
- Constructors
- Properties
- EverythingElse
- NestedTypes

* Removing commented code
2015-09-02 20:08:54 -07:00
Louis DeJardin 2467cf2ade Nested types must be last 2015-09-02 00:07:58 -07:00
Louis DeJardin 46604d68b3 Initial commit for style cleanup #184
* adding private keyword to fields
* one type per file
2015-09-01 22:25:51 -07:00
Chris R c2192d7bd1 Change IServerInformation to IFeatureCollection. 2015-09-01 15:27:57 -07:00
Stephen Halter d0bd2b3dd0 Configure unix pipes via the hostname instead of the scheme. 2015-08-31 10:46:48 -07:00
Stephen Halter a919ea8d0a Remove unnecessary listener interfaces 2015-08-31 10:46:46 -07:00
Stephen Halter a9b8cfa582 Remove unnecessary use of generics in listeners 2015-08-31 10:46:40 -07:00
Chris R 803ec38073 React to string[] -> StringValues changes. 2015-08-28 12:59:00 -07:00
Stephen Halter 40ca61b640 Merge branch 'release' into dev 2015-08-26 16:32:19 -07:00
Stephen Halter 2642c84bf9 Don't automatically set Content-Length: 0 in some circumstances
- When in response to a HEAD Request
- For 101, 204, 205 and 304 responses
- For non keep-alive connections
2015-08-26 16:16:35 -07:00
Stephen Halter 69759231ff Set Content-Length: 0 when an AppFunc completes without a write
- Previously an incomplete chunked response would be written instead.
- Add test to verify Content-Length: 0 is set automatically.
- Add test to verify HTTP/1.0 keep-alive isn't used if no Content-Length
  is set for the response.
- Add tests to verify errors are handled properly after chunked writes.

#173
2015-08-25 23:17:41 -07:00
Stephen Halter ca0a42a01e Merge branch 'Daniel15/unix-sockets' into dev 2015-08-24 12:53:31 -07:00
Pranav K 7cdfdddaa0 Unpinnng Dnx.Runtime.Abstractions package version 2015-08-18 21:34:43 -07:00
Daniel Lo Nigro 9ade227abb Implement support for UNIX sockets.
The common use-case for Kestrel in production will be behind a reverse proxy such as Nginx. In cases where the reverse proxy is located on the same machine as the application, connecting via a UNIX socket is more efficient than a TCP socket, as it avoids going through the network layer. Accessing 127.0.0.1 through TCP still needs to initiate a TCP connection and perform handshaking, checksumming, etc, all of which is avoided by using UNIX sockets.

 - Moved TCP-specific stuff from Listener into new TcpListener class (same with ListenerPrimary and ListenerSecondary)
 - Made Listener abstract
 - Created new PipeListener. Note that while the use case is for UNIX sockets, this is called "Pipe" in uv, so I've called this "PipeListener" so the terminology is consistant
 - Uses "unix" URL scheme to determine whether to use socket. "http://127.0.0.1:5000" is for listening via TCP while "unix:///var/run/kestrel-test.sock" is for listening via UNIX socket

#156
2015-08-15 15:50:34 -07:00
Stephen Halter 753d64660d Ignore zero length writes when automatically chunking responses
- Zero length writes would previously be interpreted as the end of response
- Optimize writing the chunked response suffix
- Add tests for automatic response chunking
2015-08-14 15:59:47 -07:00
Stephen Halter 3fb33119ee Initial non-optimized support for automatically chunking responses 2015-08-14 15:59:39 -07:00
Stephen Halter 32c4f314b6 Lock around Connection.End to make it thread-safe 2015-08-14 12:17:06 -07:00
Stephen Halter 4f0480a4d0 Gracefully handle exceptions thrown from OnStarting callbacks
- If OnStarting is being called after the app func has completed, return a 500.
- If Onstarting is being called due to a call to write, throw from write.
2015-08-14 12:05:43 -07:00
Stephen Halter 6a01043e1a Fix ListenerSecondary so it reliably accepts new connections on Windows
Calling uv_read_start on a named pipe with a larger than necessary buffer
would cause pieces of the next uv_ipc_frame_uv_stream struct to be read into
the uv_read_start buffer when a lot of tcp handles were passed quickly over
the pipe.

This prevented the struct from properly being queued for the next call to
uv_accept to consume. The empty queue caused the call to uv_accept in
ListenerSecondary to fail and return WSAEWOULDBLOCK leaving the connection
in a zombie state.
2015-08-14 11:57:21 -07:00
Stephen Halter c0cc511b5b Prevent access to closed socket in in Connection.End 2015-08-14 11:49:45 -07:00
Stephen Halter b162202519 Properly close keep alive connections 2015-08-14 11:49:43 -07:00
Chris R 43ebf710ab Fix regression in reading config 2015-08-14 09:33:02 -07:00
Kirthi Krishnamraju c7535f127c fix build break due to aspnet\configuration #246 2015-08-13 22:42:48 -07:00
Stephen Halter 097fb35ddf Fix startup when you reference the assembly directly instead of Hosting
- I missed this change in Program.cs when doing the initial package merging
2015-08-12 15:14:01 -07:00
Stephen Halter d97b02696f Merge Kestrel into Microsoft.AspNet.Server.Kestrel 2015-08-11 14:56:20 -07:00
Stephen Halter 0ac3c3dad6 More ConfigureAwait(false) 2015-08-11 12:46:08 -07:00
Stephen Halter 688ad9bee7 Merge branch 'benaadams/configure-awaits' into dev 2015-08-11 12:34:53 -07:00
Stephen Halter 5dfca955b3 Move GeneratedCode project so no NuGet package gets created 2015-08-05 12:22:59 -07:00
Stephen Halter 7dd256f26e Add a "dnu restore" prepare step before generating code
- This ensures the generated code project's project.lock.json is created
2015-08-05 11:54:17 -07:00
Stephen Halter 51693304c1 Update dependencies after rename to Microsoft.Dnx.Compilation.CSharp 2015-08-05 11:07:13 -07:00
Troy Dai b8f930bb4c Update CoreCLR versions 2015-08-04 10:15:28 -07:00
Stephen Halter e5144e3139 Include Server and Date in the initial response header dictionary 2015-08-03 16:20:34 -07:00
Stephen Halter 978dd39924 Update the prepare script used to generate code
- The syntax to run dnx with a modified appbase has recently changed
2015-08-03 16:20:32 -07:00
Stephen Halter 7446fe4cc7 Update SocketOutputTests to account for the "immediate" Write param 2015-08-03 16:20:30 -07:00
Louis DeJardin 6ff894bb19 Using masked byte sequences to recognize well-known header names 2015-08-03 16:20:28 -07:00
Louis DeJardin b999b47218 String concatination showed up in profiler 2015-08-03 16:20:26 -07:00
Louis DeJardin f6dc72544c Response headers don't need to be queued before subsequent write 2015-08-03 16:20:24 -07:00
Louis DeJardin c0728edda7 Linq .Any() was causing enumeration 2015-08-03 16:20:22 -07:00
Louis DeJardin f9cf9f1936 Improvements to appending request header 2015-08-03 16:20:20 -07:00
Louis DeJardin 96b03ee212 Perf - enumerate with struct
Conflicts:
	src/Microsoft.AspNet.Server.Kestrel/project.json
2015-08-03 16:20:18 -07:00
Louis DeJardin ad089be477 Removing "I like pie" diagnostics 2015-08-03 16:20:16 -07:00
Louis DeJardin 963f086eb0 Prototypeing a fast header dictionary
Conflicts:
	src/Microsoft.AspNet.Server.Kestrel/project.json
2015-08-03 16:20:14 -07:00
Chris R 83b2c95385 React to IFeatureCollection changes. 2015-08-03 15:13:58 -07:00
anurse 07304640ed react to DNX renames 2015-07-31 11:54:52 -07:00
Stephen Halter 4a9515d2e0 Gracefully handle uncaught exceptions in user code when possible 2015-07-30 16:01:33 -07:00
Troy Dai 07de3cafd1 Clean build warnings 2015-07-30 12:14:13 -07:00
Victor Hurdugaci 343d698286 React to DNX renames 2015-07-29 01:04:59 -07:00
Stephen Halter 47d7f73bdc Fix SocketOutput so that it can now complete large writes
- Complete in this context means that the callback gets invoked.
- Previously, calls to write would never complete if the buffer contained
  more than 64 KB (_maxBytesPreCompleted).
- This is tested by SocketOutputTests.CanWrite1MB.
2015-07-28 16:57:24 -07:00
Stephen Halter cce9d8f09c Make SocketOutput more testable
- Added a MockLibUv class
- Create a SocketOutputTests class
2015-07-28 16:57:22 -07:00
Stephen Halter c345849707 Don't use QueueUserWorkItem to trigger write callbacks immediately
- In this case we are off the event loop, so we can invoke the callback directly.
- Increase _maxBytesBufferedBeforeThrottling
2015-07-28 16:57:21 -07:00
Stephen Halter 74fa82bca7 Complete WriteAsync Tasks early when there are less than 64KB buffered 2015-07-28 16:57:19 -07:00
Stephen Halter d723f9da21 Reduce calls to uv_write by calling it with multiple buffers when possible 2015-07-28 16:57:16 -07:00
Louis DeJardin 5e6e5fec01 Adding an IKestralServerInformation.ThreadCount property
Will default to 1 until multi-loop stability is ensured
2015-07-27 11:40:39 -07:00
Louis DeJardin e39fe60da0 Removing commented code 2015-07-24 16:19:15 -07:00
Louis DeJardin baeb3e7962 Fixing write2.Dispose() to avoid creating closure 2015-07-24 15:47:31 -07:00
Louis DeJardin 17a846ad8e Method not used by descendants 2015-07-24 15:44:27 -07:00
Louis DeJardin 62ec11be7e Adding internal Constants class 2015-07-24 15:43:43 -07:00
Louis DeJardin f935567cfd Read callback status is always 0 for any error and EOF 2015-07-24 15:36:45 -07:00
Louis DeJardin b93845be19 Removing debug code 2015-07-24 15:25:44 -07:00
Louis DeJardin 3d45602513 Catch Accept because of EAGAIN 2015-07-24 14:02:42 -07:00
Louis DeJardin 42246fd51b Using named pipes to dispatch connections to multiple threads 2015-07-24 13:50:13 -07:00
Louis DeJardin ceeb4edabd Adding UvPipeHandle 2015-07-24 13:50:10 -07:00
Stephen Halter a457f6da25 Merge branch 'release' into dev 2015-07-21 14:18:37 -07:00
Stephen Halter 4a284e5f81 Revert "React to FeatureModel package change."
This should not have been in the release branch yet!

This reverts commit 3cc0dd7a25.
2015-07-21 14:17:11 -07:00
Stephen Halter c199e5eee1 Wait on user-defined OnStarting and OnCompleted callbacks 2015-07-21 12:44:57 -07:00
Chris R 3cc0dd7a25 React to FeatureModel package change. 2015-07-21 12:44:56 -07:00
Stephen Halter 88689ccdb8 Merge branch 'release' into dev 2015-07-21 12:14:46 -07:00
Stephen Halter b9901c3bfe Surface fatal exceptions that stop the event loop
- Request an app Shutdown so KestrelEngine gets disposed
- Ensure Listener.Dispose doesn't deadlock before the engine
  can be disposed
- Rely on the existing logic to rethrow in the fatal error when
  the engine gets disposed
2015-07-21 11:58:26 -07:00
Ben Adams 23ffc3fea9 ConfigureAwait(false) 2015-07-19 15:50:42 +01:00
Ben Adams e69f63e494 ConfigureAwait(false) 2015-07-19 15:47:39 +01:00
Chris R 93477efb41 React to FeatureModel package change. 2015-07-17 09:58:55 -07:00
Pranav K 853ee00ff5 Merge remote-tracking branch 'origin/release' into dev 2015-07-16 08:43:59 -07:00
Peter Hsu 3aaae6964f Fix NPE issue where UvShutdownReq being garbage collected before the shutdown callback executed 2015-07-14 10:36:34 -07:00
Steve Smith 94dba8ff0e Moved address parsing to ServerAddress 2015-07-13 11:10:25 -07:00
markrendle 98995132de Pre-create Continue bytes in Frame 2015-07-13 10:43:05 -07:00
Stephen Halter 0670b7ae61 Ensure all the C# files have copyright notices 2015-07-06 17:49:00 -07:00
Stephen Halter 4b66edc4fe Move non-nested classes and interfaces to their own files 2015-07-06 17:48:58 -07:00
Victor Hurdugaci fd038b7b91 Add repository information to project files 2015-07-01 20:13:32 -07:00
Hao Kung f724fefbda React to HttpChanges 2015-06-25 17:28:07 -07:00
Stephen Halter 29098d6383 Fix UvLoopHandle.ReleaseHandle on linux
Libuv.loop_close can clear the GCHandle pointer on linux
2015-06-17 17:53:56 -07:00
Stephen Halter 1592459a0b Dispose Listeners if they fail to start 2015-06-15 10:08:03 -07:00
Stephen Halter a992c78548 Dispatch user defined callback so it can't block the event loop 2015-06-15 10:07:58 -07:00
Stephen Halter adc0310491 Ensure all handles still get released after graceful shutdown 2015-06-15 09:43:01 -07:00
Stephen Halter 31057f65bc Gracefully shutdown even when there are open connections 2015-06-15 09:41:33 -07:00
Stephen Halter 5c6a53c491 Dispose Listeners if they fail to start 2015-06-12 17:02:31 -07:00
Stephen Halter 7e125faa73 Dispatch user defined callback so it can't block the event loop 2015-06-12 17:02:27 -07:00
Chris R 08c0bbbd60 React to OnSendingHeaders rename. 2015-06-12 15:05:45 -07:00
Stephen Halter 106edf8c86 Ensure all handles still get released after graceful shutdown 2015-06-12 12:49:52 -07:00
Stephen Halter b43e5940e5 Gracefully shutdown even when there are open connections 2015-06-11 17:06:25 -07:00
Kirthi Krishnamraju 7e78374053 React to aspnet/Configuration #195,#198 2015-05-20 17:26:00 -07:00
Chris R bff13b2e9b React to Http namespace changes. 2015-05-07 13:43:34 -07:00
N. Taylor Mullen 063fb64c8b Update LICENSE.txt and license header on files. 2015-05-01 13:53:45 -07:00
Brennan cb4361b253 React to DNX package renames 2015-05-01 11:07:18 -07:00
N. Taylor Mullen 01a13bfa1d Add serviceable attribute to projects.
aspnet/DNX#1600
2015-04-14 15:00:26 -07:00
Chris Ross a23b665e8d Update IServerInformation namespace. 2015-04-10 10:47:31 -07:00
Matt Ellis ea636140c7 Allow Kestrel to boot when on CoreCLR and *NIX
With cross platform .NET Core support coming online, we need to update
our IsWindows check to not assume running on .NET Core means running on
Windows.  Since CoreFX doesn't yet expose a method for doing this (they
are working on adding it back), we'll just call Uname and if that
returns an empty string assume that we are on Windows.
2015-04-09 23:58:03 -07:00
Doug Bunting 5ad7aea8b4 Update .xproj files for Microsoft.Web.AspNet.* -> Microsoft.DNX.* rename 2015-04-02 13:49:26 -07:00
Ajay Bhargav Baaskaran c1e298b010 React to aspnet/HttpAbstractions#160 - Implementing OnResponseCompleted 2015-03-16 15:10:53 -07:00
N. Taylor Mullen 8d8c6ea823 Update .kproj => .xproj. 2015-03-11 14:09:00 -07:00
N. Taylor Mullen f796e1a5fc Remove BOM from project.json, *.cmd, *.sh and *.shade files. 2015-03-09 12:55:39 -07:00
N. Taylor Mullen 06a82669f5 Update aspnet50/aspnetcore50 => dnx451/dnxcore50. 2015-03-08 12:51:12 -07:00
Praburaj 620e83b590 Rename Microsoft.AspNet.Http.Interfaces => Microsoft.AspNet.Http 2015-03-05 16:23:18 -08:00
Praburaj cb3def5668 Changing signature of AppFunc to pass on IFeatureCollection
Reaction to this fix: https://github.com/aspnet/Hosting/issues/162
2015-02-25 17:40:17 -08:00
David Fowler e8d9414d92 Removed build time dependency 2015-02-10 10:08:16 -08:00
Stephen Halter cc720bd3fe Handle HttpFeature rename 2015-01-18 21:04:13 -08:00
David Fowler e421b3f01c Throw better error when libuv can't be loaded
- Throw more specific exception for *nix machines
2014-12-26 21:24:35 -08:00
Pranav K 2e943eb3ab Reacting to System.Diagnostics.Tracing version change 2014-12-15 16:20:40 -08:00
Pranav K 10a32fda26 Reacting to System.Threading version changes
* Sorting project.json references alphabetically
2014-12-15 14:44:33 -08:00
Victor Hurdugaci 4a2dd8f279 Add schema version to kproj files 2014-11-25 10:54:18 -08:00
Victor Hurdugaci 1b8f25f7d4 Update KProj to the latest format 2014-11-12 15:15:40 -08:00
Chris Ross 045a6eb4ba Add new HeadersSent API. 2014-11-06 12:10:15 -08:00
David Fowler 0174d213d1 Added package descriptions 2014-10-31 01:48:15 -07:00
Louis DeJardin e550d1f1ec Updating Darwin OS detection 2014-10-20 16:11:48 -07:00
Louis DeJardin dcf55abc9f Changing shared library name on Unix OS type 2014-10-13 22:48:47 -07:00
Pranav K ba0e3321bf Reacting to CLR package versioning changes 2014-10-10 10:33:06 -07:00
David Fowler 72c32367a4 Fixup references and the sample 2014-10-05 11:26:15 -07:00
Pranav K 1b1e02e9dd Reacting to System.Text.Encoding package version change 2014-09-11 10:06:52 -07:00
David Fowler 418f745292 Updated to use the new target framework in project.json 2014-09-04 01:52:19 -07:00
David Fowler 77d6318cfc Updated to use the new target framework in project.json 2014-08-28 23:39:13 -07:00
Pranav K 226e6f3291 Reacting to System.IO package version change 2014-08-20 06:56:34 -07:00
David Fowler 26084c7f13 Removed source files from the project 2014-08-15 08:17:40 -07:00
Pranav K 4fc0be86b6 Reacting to System.Collections version change 2014-07-14 15:11:48 -07:00
David Fowler 33cd0d89aa Renamed configurations to frameworks in project.json 2014-07-13 22:12:48 -07:00
Louis DeJardin de6c32dc4b Guarding against leaking GCHandles in read/write operations
See #19
2014-07-08 18:11:09 -07:00
Louis DeJardin 2da561cb7a Garbage collecting safe handles need to queue the uv_close
All of the uv_* calls must be called on the original thread
the finalizer thread cleaning up safehandle classes needs
special handling

see #16
2014-07-08 16:02:09 -07:00
Louis DeJardin 836be5565a Using weak gchandles from native to managed
See #15
2014-07-08 14:51:13 -07:00
Louis DeJardin 21778f631a Guarding against more read_cb cases 2014-07-07 14:01:02 -07:00
Louis DeJardin 8624b82b2b Improving callback exception support
Also renaming KestralTests to KestrelTests
2014-07-07 13:08:25 -07:00
Chris Ross 6edd238f38 Rename IHttpOpaqueUpgradeFeature to IHttpUpgradeFeature. 2014-07-03 14:14:07 -07:00
Louis DeJardin 747777ab54 Adding dylib binary to source control 2014-07-03 11:30:01 -07:00
Pranav K be88722cb5 Moving SampleApp from src to samples 2014-07-01 09:24:32 -07:00
David Fowler 9118d037fe Updated the kproj 2014-06-27 23:02:52 -07:00
Louis DeJardin 7c626431a1 Adding Upgrade support, using WebSocket middleware from sample app 2014-06-27 22:25:38 -07:00
Louis DeJardin 5e51783087 Recompiling windows binaries because uv_loop_size was added 2014-06-27 21:00:06 -07:00
Louis DeJardin 0f1a72e7e0 Tiny CLR won't tell you what the OS is. Assume tiny CLR is running on Windows. 2014-06-27 20:59:39 -07:00
Louis DeJardin e4b9bd265c Adjusting Kestrel to run cross platform 2014-06-27 20:01:44 -07:00
Louis DeJardin 9c29ccdd32 Cross-platform LoadLibrary, adjusting libuv apis 2014-06-27 19:45:31 -07:00
Louis DeJardin 08a3685f53 Moving native resources, updating loading code 2014-06-27 19:33:48 -07:00
Louis DeJardin 63637be073 Listener.Dispose should block until operation is complete 2014-06-25 20:57:12 -07:00
Louis DeJardin 9e4bc60205 Adding amd64 support
Moves Libuv.dll into nupkg
Uses ILibraryManager to locate location for native libraries
Updates version numbers to 1.0.0-*
Throws exceptions with error text provided by libuv.dll
Bind to ip4 or ip6 endpoints
Getting server defaults from ini
Enabling "Kestrel" to be used as a Main entrypoint
2014-06-20 21:09:44 -07:00
Louis DeJardin 17e566c5d1 Adding "server.urls" configuration support to kestrel 2014-06-17 22:45:53 -07:00
Louis DeJardin 6ac6419f4f Adding support for 'k web --server kestrel' 2014-06-13 13:10:46 -07:00
Louis DeJardin 9c7cb6a958 Adding some tests for Http11
Requires updating to test utilities
Adding initial EventSource to try to see some order of events
2014-06-11 17:09:25 -07:00
Louis DeJardin 660babcd7f Adding core clr configurations 2014-06-10 00:29:16 -07:00
David Fowler ad738561af Fixed project.json casing 2014-06-08 23:39:09 -07:00
David Fowler 75d0b29954 Renamed Project.json to Project.json2 2014-06-08 23:39:08 -07:00
Louis DeJardin ebd6af0fd6 Trying to get 100 Continue working again 2014-06-08 01:03:56 -07:00
Louis DeJardin 044bbb83e6 Getting request body variations to work 2014-06-07 02:49:25 -07:00
Louis DeJardin 313db3f0cf Removing unnecessary using statements 2014-06-06 22:16:08 -07:00
Louis DeJardin e517e39aac Not working, but worth taking a snapshot of the source 2014-06-06 22:13:31 -07:00
Louis DeJardin c9d6db14bc Adding an engine, a thread manager, an accept loop 2014-06-03 16:41:55 -07:00
Louis DeJardin 1b412bc99f Adding libuv p/invokes 2014-06-02 16:32:31 -07:00
Louis DeJardin 3404100f08 Adding empty projects and solution 2014-06-02 16:31:33 -07:00