diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/MessageBody.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/MessageBody.cs index 3b20247e67..e8e438512b 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/MessageBody.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/MessageBody.cs @@ -3,10 +3,10 @@ using System; using System.Collections.Generic; +using System.IO; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Primitives; -using System.IO; namespace Microsoft.AspNet.Server.Kestrel.Http { @@ -94,7 +94,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http value = values[0]; return true; } - value = String.Join(",", values); + value = string.Join(",", values.ToArray()); return true; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs index 4c3e35f799..b3a15c1fe3 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListener.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http var socket = new UvPipeHandle(Log); socket.Init(Thread.Loop, false); socket.Bind(ServerAddress.UnixPipePath); - socket.Listen(Constants.ListenBacklog, ConnectionCallback, this); + socket.Listen(Constants.ListenBacklog, (stream, status, error, state) => ConnectionCallback(stream, status, error, state), this); return socket; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs index 1f7eb285e9..7f15ccb2c0 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/PipeListenerPrimary.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http var socket = new UvPipeHandle(Log); socket.Init(Thread.Loop, false); socket.Bind(ServerAddress.UnixPipePath); - socket.Listen(Constants.ListenBacklog, ConnectionCallback, this); + socket.Listen(Constants.ListenBacklog, (stream, status, error, state) => ConnectionCallback(stream, status, error, state), this); return socket; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs index 86feca412b..45769cc074 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListener.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http socket.Init(Thread.Loop, Thread.QueueCloseHandle); socket.NoDelay(NoDelay); socket.Bind(ServerAddress); - socket.Listen(Constants.ListenBacklog, ConnectionCallback, this); + socket.Listen(Constants.ListenBacklog, (stream, status, error, state) => ConnectionCallback(stream, status, error, state), this); return socket; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs index 4f1ff0a48d..2116ed1ab0 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Http/TcpListenerPrimary.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Http socket.Init(Thread.Loop, Thread.QueueCloseHandle); socket.NoDelay(NoDelay); socket.Bind(ServerAddress); - socket.Listen(Constants.ListenBacklog, ConnectionCallback, this); + socket.Listen(Constants.ListenBacklog, (stream, status, error, state) => ConnectionCallback(stream, status, error, state), this); return socket; } diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvAsyncHandle.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvAsyncHandle.cs index 04c2ecce3b..9b4ecb60f8 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvAsyncHandle.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvAsyncHandle.cs @@ -8,7 +8,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking { public class UvAsyncHandle : UvHandle { - private static Libuv.uv_async_cb _uv_async_cb = AsyncCb; + private static Libuv.uv_async_cb _uv_async_cb = (handle) => AsyncCb(handle); private Action _callback; public UvAsyncHandle(IKestrelTrace logger) : base(logger) diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvConnectRequest.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvConnectRequest.cs index 0c0ce04b4b..086c52de77 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvConnectRequest.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvConnectRequest.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking /// public class UvConnectRequest : UvRequest { - private readonly static Libuv.uv_connect_cb _uv_connect_cb = UvConnectCb; + private readonly static Libuv.uv_connect_cb _uv_connect_cb = (req, status) => UvConnectCb(req, status); private Action _callback; private object _state; diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvHandle.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvHandle.cs index 4b90ecfd57..7fcb2106a9 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvHandle.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvHandle.cs @@ -9,7 +9,7 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking { public abstract class UvHandle : UvMemory { - private static Libuv.uv_close_cb _destroyMemory = DestroyMemory; + private static Libuv.uv_close_cb _destroyMemory = (handle) => DestroyMemory(handle); private Action, IntPtr> _queueCloseHandle; protected UvHandle(IKestrelTrace logger) : base (logger) diff --git a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs index e6ffafe24c..bfbdabfef6 100644 --- a/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs +++ b/src/Microsoft.AspNet.Server.Kestrel/Networking/UvStreamHandle.cs @@ -10,9 +10,10 @@ namespace Microsoft.AspNet.Server.Kestrel.Networking { public abstract class UvStreamHandle : UvHandle { - private readonly static Libuv.uv_connection_cb _uv_connection_cb = UvConnectionCb; - private readonly static Libuv.uv_alloc_cb _uv_alloc_cb = UvAllocCb; - private readonly static Libuv.uv_read_cb _uv_read_cb = UvReadCb; + private readonly static Libuv.uv_connection_cb _uv_connection_cb = (handle, status) => UvConnectionCb(handle, status); + // Ref and out lamda params must be explicitly typed + private readonly static Libuv.uv_alloc_cb _uv_alloc_cb = (IntPtr handle, int suggested_size, out Libuv.uv_buf_t buf) => UvAllocCb(handle, suggested_size, out buf); + private readonly static Libuv.uv_read_cb _uv_read_cb = (IntPtr handle, int status, ref Libuv.uv_buf_t buf) => UvReadCb(handle, status, ref buf); public Action _listenCallback; public object _listenState;