public HttpResponseMessage Get() { IOwinContext owinContext = Request.GetOwinContext(); WebSocketAccept acceptToken = owinContext.Get <WebSocketAccept>("websocket.Accept"); if (acceptToken != null) { var requestHeaders = GetValue <IDictionary <string, string[]> >(owinContext.Environment, "owin.RequestHeaders"); Dictionary <string, object> acceptOptions = null; string[] subProtocols; if (requestHeaders.TryGetValue("Sec-WebSocket-Protocol", out subProtocols) && subProtocols.Length > 0) { acceptOptions = new Dictionary <string, object>(); // Select the first one from the client acceptOptions.Add("websocket.SubProtocol", subProtocols[0].Split(',').First().Trim()); } acceptToken(acceptOptions, ProcessSocketConnection); } else { return(new HttpResponseMessage(HttpStatusCode.BadRequest)); } return(new HttpResponseMessage(HttpStatusCode.SwitchingProtocols)); }
/// <summary> /// 构造函数 /// </summary> /// <param name="owinEnv">Owin字典</param> public WebSocket(IDictionary <string, object> owinEnv) { // 检查是否是websocket请求 if (!owinEnv.IsWebSocket()) { throw new Exception("Not Is WebSocket Request."); } // 获取Accept方法 _accept = owinEnv.Get <WebSocketAccept>("websocket.Accept"); if (_accept == null) { throw new Exception("Not Is Websocket Request"); } // SERVER RemoteIpAddress = owinEnv.Get <string>("server.RemoteIpAddress"); RemotePort = int.Parse(owinEnv.Get <string>("server.RemotePort")); LocalIpAddress = owinEnv.Get <string>("server.LocalIpAddress"); LocalPort = int.Parse(owinEnv.Get <string>("server.LocalPort")); //var islocal = owinEnv.Get<bool>("server.IsLocal"); // OWIN RequestPath = owinEnv.Get <string>("owin.RequestPath"); Query = owinEnv.Get <string>("owin.RequestQueryString"); _webSocketCompSource = new TaskCompletionSource <int>(); // owinEnv.Get<string>("owin.RequestMethod"); GET/POST/.... }
bool AspNetDictionary.IPropertySource.TryGetWebSocketAccept(ref WebSocketAccept value) { if (_appContext.WebSocketSupport && _httpContext.IsWebSocketRequest) { value = new WebSocketAccept(DoWebSocketUpgrade); return true; } return false; }
bool AspNetDictionary.IPropertySource.TryGetWebSocketAccept(ref WebSocketAccept value) { if (_appContext.WebSocketSupport && _httpContext.IsWebSocketRequest) { value = new WebSocketAccept(DoWebSocketUpgrade); return(true); } return(false); }
public static AppFunc Middleware(AppFunc app) { return(env => { var request = new Request(env); string opaqueSupport = request.Get <string>("opaque.Support"); OpaqueUpgrade opaqueUpgrade = request.Get <OpaqueUpgrade>("opaque.Upgrade"); string websocketSupport = request.Get <string>("websocket.Support"); WebSocketAccept webSocketAccept = request.Get <WebSocketAccept>("websocket.Accept"); if (opaqueSupport == "opaque.Upgrade" && // If we have opaque support opaqueUpgrade != null && websocketSupport != "websocket.Accept" && // and no current websocket support webSocketAccept == null) // and this request is a websocket request... { // This middleware is adding support for websockets. env["websocket.Support"] = "websocket.Accept"; if (IsWebSocketRequest(env)) { IDictionary <string, object> acceptOptions = null; WebSocketFunc webSocketFunc = null; // Announce websocket support env["websocket.Accept"] = new WebSocketAccept( (options, callback) => { acceptOptions = options; webSocketFunc = callback; env[OwinConstants.ResponseStatusCode] = 101; }); return app(env).Then(() => { Response response = new Response(env); if (response.StatusCode == 101 && webSocketFunc != null) { SetWebSocketResponseHeaders(env, acceptOptions); opaqueUpgrade(acceptOptions, opaqueEnv => { WebSocketLayer webSocket = new WebSocketLayer(opaqueEnv); return webSocketFunc(webSocket.Environment) .Then(() => webSocket.CleanupAsync()); }); } }); } } // else return app(env); }); }
internal bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { if (_context.Request.IsWebSocketRequest) { websocketAccept = new WebSocketAccept(DoWebSocketUpgrade); return(true); } websocketAccept = null; return(false); }
public async sealed override Task Invoke(IOwinContext context) { WebSocketAccept accept = context.Get <WebSocketAccept>("websocket.Accept"); if (accept == null) { await Next.Invoke(context).ConfigureAwait(false); } else { accept(null, WebSocketBody); } }
private Task UpgradeToWebSockets(IOwinContext context) { WebSocketAccept accept = context.Get <WebSocketAccept>("websocket.Accept"); if (accept == null) { return(null); } // WebSocket request? accept(null, ProcessWisejWebSocketRequest); return(Task.FromResult <object>(null)); }
// Run once per request private Task UpgradeToWebSockets(IOwinContext context, Func <Task> next) { WebSocketAccept accept = null; //context.Get<WebSocketAccept>("websocket.Accept"); if (accept == null) { // Not a websocket request return(next()); } accept(null, WebSocketEcho); return(Task.FromResult <object>(null)); }
public static AppFunc Middleware(AppFunc app) { return env => { var request = new OwinRequest(env); var websocketVersion = request.Get<string>(OwinConstants.WebSocket.Version); WebSocketAccept webSocketAccept = request.Get<WebSocketAccept>(OwinConstants.WebSocket.Accept); if (request.CanUpgrade && websocketVersion == null) // If we have opaque support and no WebSocket support yet { if (IsWebSocketRequest(env)) { // TODO: check for correct requested version of WebSocket protocol IDictionary<string, object> acceptOptions = null; WebSocketFunc webSocketFunc = null; // Announce websocket support env[OwinConstants.WebSocket.Accept] = new WebSocketAccept( (options, callback) => { acceptOptions = options; webSocketFunc = callback; env[OwinConstants.ResponseStatusCode] = 101; }); return app(env).ContinueWith(t => { OwinResponse response = new OwinResponse(env); if (response.StatusCode == 101 && webSocketFunc != null) { SetWebSocketResponseHeaders(env, acceptOptions); request.UpgradeDelegate(acceptOptions, opaqueEnv => { WebSocketLayer webSocket = new WebSocketLayer(opaqueEnv); return webSocketFunc(webSocket.Environment) .ContinueWith(tt => webSocket.CleanupAsync()); }); } }); } } // else return app(env); }; }
internal bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { if (_context.Request.IsWebSocketRequest) { string versionString = _context.Request.Headers[Constants.SecWebSocketVersion]; int version; if (!string.IsNullOrWhiteSpace(versionString) && int.TryParse(versionString, NumberStyles.Integer, CultureInfo.InvariantCulture, out version) && version >= 13) { websocketAccept = new WebSocketAccept(DoWebSocketUpgrade); return(true); } } websocketAccept = null; return(false); }
/// <summary> /// 构造函数 /// </summary> /// <param name="owinEnv"></param> public WebSocket(IDictionary <string, object> owinEnv) { // 获取Accept方法 _accept = owinEnv.Get <WebSocketAccept>("websocket.Accept"); if (_accept == null) { return; } IsWebSocket = true; // SERVER RemoteIpAddress = owinEnv.Get <string>("server.RemoteIpAddress"); RemotePort = int.Parse(owinEnv.Get <string>("server.RemotePort")); LocalIpAddress = owinEnv.Get <string>("server.LocalIpAddress"); LocalPort = int.Parse(owinEnv.Get <string>("server.LocalPort")); //var islocal = owinEnv.Get<bool>("server.IsLocal"); // OWIN RequestPath = owinEnv.Get <string>("owin.RequestPath"); Query = owinEnv.Get <string>("owin.RequestQueryString"); // owinEnv.Get<string>("owin.RequestMethod"); GET/POST/.... }
bool AspNetDictionary.IPropertySource.TryGetWebSocketAccept(ref WebSocketAccept value) { return(false); }
private bool PropertiesTryRemove(string key) { switch (key.Length) { case 12: if (((_flag0 & 0x1u) != 0) && string.Equals(key, "owin.Version", StringComparison.Ordinal)) { _flag0 &= ~0x1u; _OwinVersion = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x8000u) != 0) && string.Equals(key, "host.AppName", StringComparison.Ordinal)) { _flag0 &= ~0x8000u; _HostAppName = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x10000u) != 0) && string.Equals(key, "host.AppMode", StringComparison.Ordinal)) { _flag0 &= ~0x10000u; _HostAppMode = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 18: if (((_flag0 & 0x2u) != 0) && string.Equals(key, "owin.CallCancelled", StringComparison.Ordinal)) { _initFlag0 &= ~0x2u; _flag0 &= ~0x2u; _CallCancelled = default(CancellationToken); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x8u) != 0) && string.Equals(key, "owin.RequestMethod", StringComparison.Ordinal)) { _flag0 &= ~0x8u; _RequestMethod = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x10u) != 0) && string.Equals(key, "owin.RequestScheme", StringComparison.Ordinal)) { _flag0 &= ~0x10u; _RequestScheme = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 20: if (((_flag0 & 0x4u) != 0) && string.Equals(key, "owin.RequestProtocol", StringComparison.Ordinal)) { _flag0 &= ~0x4u; _RequestProtocol = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20u) != 0) && string.Equals(key, "owin.RequestPathBase", StringComparison.Ordinal)) { _flag0 &= ~0x20u; _RequestPathBase = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x1000u) != 0) && string.Equals(key, "owin.ResponseHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x1000u; _ResponseHeaders = default(IDictionary<string, string[]>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 16: if (((_flag0 & 0x40u) != 0) && string.Equals(key, "owin.RequestPath", StringComparison.Ordinal)) { _flag0 &= ~0x40u; _RequestPath = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x200u) != 0) && string.Equals(key, "owin.RequestBody", StringComparison.Ordinal)) { _initFlag0 &= ~0x200u; _flag0 &= ~0x200u; _RequestBody = default(Stream); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x4000u) != 0) && string.Equals(key, "host.TraceOutput", StringComparison.Ordinal)) { _flag0 &= ~0x4000u; _HostTraceOutput = default(TextWriter); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x1000000u) != 0) && string.Equals(key, "server.LocalPort", StringComparison.Ordinal)) { _initFlag0 &= ~0x1000000u; _flag0 &= ~0x1000000u; _ServerLocalPort = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20000000u) != 0) && string.Equals(key, "websocket.Accept", StringComparison.Ordinal)) { _initFlag0 &= ~0x20000000u; _flag0 &= ~0x20000000u; _WebSocketAccept = default(WebSocketAccept); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 23: if (((_flag0 & 0x80u) != 0) && string.Equals(key, "owin.RequestQueryString", StringComparison.Ordinal)) { _flag0 &= ~0x80u; _RequestQueryString = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x400u) != 0) && string.Equals(key, "owin.ResponseStatusCode", StringComparison.Ordinal)) { _flag0 &= ~0x400u; _ResponseStatusCode = default(int); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x80000u) != 0) && string.Equals(key, "server.OnSendingHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x80000u; _OnSendingHeaders = default(Action<Action<object>, object>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x10000000u) != 0) && string.Equals(key, "ssl.LoadClientCertAsync", StringComparison.Ordinal)) { _flag0 &= ~0x10000000u; _LoadClientCert = default(Func<Task>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 19: if (((_flag0 & 0x100u) != 0) && string.Equals(key, "owin.RequestHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x100u; _RequestHeaders = default(IDictionary<string, string[]>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20000u) != 0) && string.Equals(key, "host.OnAppDisposing", StringComparison.Ordinal)) { _flag0 &= ~0x20000u; _OnAppDisposing = default(CancellationToken); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x100000u) != 0) && string.Equals(key, "server.Capabilities", StringComparison.Ordinal)) { _flag0 &= ~0x100000u; _ServerCapabilities = default(IDictionary<string, object>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 25: if (((_flag0 & 0x800u) != 0) && string.Equals(key, "owin.ResponseReasonPhrase", StringComparison.Ordinal)) { _flag0 &= ~0x800u; _ResponseReasonPhrase = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 17: if (((_flag0 & 0x2000u) != 0) && string.Equals(key, "owin.ResponseBody", StringComparison.Ordinal)) { _flag0 &= ~0x2000u; _ResponseBody = default(Stream); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x400000u) != 0) && string.Equals(key, "server.RemotePort", StringComparison.Ordinal)) { _initFlag0 &= ~0x400000u; _flag0 &= ~0x400000u; _ServerRemotePort = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 11: if (((_flag0 & 0x40000u) != 0) && string.Equals(key, "server.User", StringComparison.Ordinal)) { _flag0 &= ~0x40000u; _ServerUser = default(IPrincipal); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 22: if (((_flag0 & 0x200000u) != 0) && string.Equals(key, "server.RemoteIpAddress", StringComparison.Ordinal)) { _initFlag0 &= ~0x200000u; _flag0 &= ~0x200000u; _ServerRemoteIpAddress = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 21: if (((_flag0 & 0x800000u) != 0) && string.Equals(key, "server.LocalIpAddress", StringComparison.Ordinal)) { _initFlag0 &= ~0x800000u; _flag0 &= ~0x800000u; _ServerLocalIpAddress = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x4000000u) != 0) && string.Equals(key, "ssl.ClientCertificate", StringComparison.Ordinal)) { _initFlag0 &= ~0x4000000u; _flag0 &= ~0x4000000u; _ClientCert = default(X509Certificate); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x80000000u) != 0) && string.Equals(key, "Mono.Net.HttpListener", StringComparison.Ordinal)) { _flag0 &= ~0x80000000u; _Listener = default(Mono.Net.HttpListener); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 14: if (((_flag0 & 0x2000000u) != 0) && string.Equals(key, "server.IsLocal", StringComparison.Ordinal)) { _initFlag0 &= ~0x2000000u; _flag0 &= ~0x2000000u; _ServerIsLocal = default(bool); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 27: if (((_flag0 & 0x8000000u) != 0) && string.Equals(key, "ssl.ClientCertificateErrors", StringComparison.Ordinal)) { _initFlag0 &= ~0x8000000u; _flag0 &= ~0x8000000u; _ClientCertErrors = default(Exception); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 28: if (((_flag0 & 0x40000000u) != 0) && string.Equals(key, "Mono.Net.HttpListenerContext", StringComparison.Ordinal)) { _flag0 &= ~0x40000000u; _RequestContext = default(HttpListenerContext); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 49: if (((_flag1 & 0x1u) != 0) && string.Equals(key, "Microsoft.Owin.Host.HttpListener.OwinHttpListener", StringComparison.Ordinal)) { _flag1 &= ~0x1u; _OwinHttpListener = default(OwinHttpListener); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; } return false; }
private OwinWebSocketAcceptAdapter(WebSocketAccept owinWebSocketAccept) { _owinWebSocketAccept = owinWebSocketAccept; }
public async Task ProcessOwinWebSocketSession(WebSocketAccept accept) { accept(null, (webSocketContext => { if (webSocketContext == null) throw new ApplicationException("Could not get WebSocket context"); var context = (WebSocketContext)webSocketContext[typeof(WebSocketContext).FullName]; var closeAsync = (WebSocketCloseAsync)webSocketContext["websocket.CloseAsync"]; HandleWebSocket(context, false).Wait(); closeAsync((int)WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None); return Task.FromResult<object>(null); })); }
internal bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { #if !NET40 && !MONOHTTPLISTENER if (_context.Request.IsWebSocketRequest) { websocketAccept = new WebSocketAccept(DoWebSocketUpgrade); return true; } #endif websocketAccept = null; return false; }
bool AspNetDictionary.IPropertySource.TryGetWebSocketAccept(ref WebSocketAccept value) { return false; }
internal bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { if (_context.Request.IsWebSocketRequest) { websocketAccept = new WebSocketAccept(DoWebSocketUpgrade); return true; } websocketAccept = null; return false; }
private bool PropertiesTryRemove(string key) { switch (key.Length) { case 12: if (((_flag0 & 0x1u) != 0) && string.Equals(key, "owin.Version", StringComparison.Ordinal)) { _flag0 &= ~0x1u; _OwinVersion = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x40000u) != 0) && string.Equals(key, "host.AppName", StringComparison.Ordinal)) { _flag0 &= ~0x40000u; _HostAppName = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x80000u) != 0) && string.Equals(key, "host.AppMode", StringComparison.Ordinal)) { _initFlag0 &= ~0x80000u; _flag0 &= ~0x80000u; _HostAppMode = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 18: if (((_flag0 & 0x2u) != 0) && string.Equals(key, "owin.CallCancelled", StringComparison.Ordinal)) { _initFlag0 &= ~0x2u; _flag0 &= ~0x2u; _CallCancelled = default(CancellationToken); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x8u) != 0) && string.Equals(key, "owin.RequestMethod", StringComparison.Ordinal)) { _flag0 &= ~0x8u; _RequestMethod = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x10u) != 0) && string.Equals(key, "owin.RequestScheme", StringComparison.Ordinal)) { _initFlag0 &= ~0x10u; _flag0 &= ~0x10u; _RequestScheme = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag1 & 0x1u) != 0) && string.Equals(key, "sendfile.SendAsync", StringComparison.Ordinal)) { _initFlag1 &= ~0x1u; _flag1 &= ~0x1u; _SendFileAsync = default(Func<string, long, long?, CancellationToken, Task>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 20: if (((_flag0 & 0x4u) != 0) && string.Equals(key, "owin.RequestProtocol", StringComparison.Ordinal)) { _initFlag0 &= ~0x4u; _flag0 &= ~0x4u; _RequestProtocol = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20u) != 0) && string.Equals(key, "owin.RequestPathBase", StringComparison.Ordinal)) { _flag0 &= ~0x20u; _RequestPathBase = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x4000u) != 0) && string.Equals(key, "owin.ResponseHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x4000u; _ResponseHeaders = default(IDictionary<string, string[]>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 16: if (((_flag0 & 0x40u) != 0) && string.Equals(key, "owin.RequestPath", StringComparison.Ordinal)) { _flag0 &= ~0x40u; _RequestPath = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x200u) != 0) && string.Equals(key, "owin.RequestBody", StringComparison.Ordinal)) { _initFlag0 &= ~0x200u; _flag0 &= ~0x200u; _RequestBody = default(Stream); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20000u) != 0) && string.Equals(key, "host.TraceOutput", StringComparison.Ordinal)) { _flag0 &= ~0x20000u; _HostTraceOutput = default(TextWriter); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x10000000u) != 0) && string.Equals(key, "server.LocalPort", StringComparison.Ordinal)) { _initFlag0 &= ~0x10000000u; _flag0 &= ~0x10000000u; _ServerLocalPort = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag1 & 0x2u) != 0) && string.Equals(key, "websocket.Accept", StringComparison.Ordinal)) { _initFlag1 &= ~0x2u; _flag1 &= ~0x2u; _WebSocketAccept = default(WebSocketAccept); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 23: if (((_flag0 & 0x80u) != 0) && string.Equals(key, "owin.RequestQueryString", StringComparison.Ordinal)) { _initFlag0 &= ~0x80u; _flag0 &= ~0x80u; _RequestQueryString = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x1000u) != 0) && string.Equals(key, "owin.ResponseStatusCode", StringComparison.Ordinal)) { // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x800000u) != 0) && string.Equals(key, "server.OnSendingHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x800000u; _OnSendingHeaders = default(Action<Action<object>, object>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x80000000u) != 0) && string.Equals(key, "ssl.LoadClientCertAsync", StringComparison.Ordinal)) { _initFlag0 &= ~0x80000000u; _flag0 &= ~0x80000000u; _LoadClientCert = default(Func<Task>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 19: if (((_flag0 & 0x100u) != 0) && string.Equals(key, "owin.RequestHeaders", StringComparison.Ordinal)) { _flag0 &= ~0x100u; _RequestHeaders = default(IDictionary<string, string[]>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x100000u) != 0) && string.Equals(key, "host.OnAppDisposing", StringComparison.Ordinal)) { _initFlag0 &= ~0x100000u; _flag0 &= ~0x100000u; _OnAppDisposing = default(CancellationToken); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x1000000u) != 0) && string.Equals(key, "server.Capabilities", StringComparison.Ordinal)) { _flag0 &= ~0x1000000u; _ServerCapabilities = default(IDictionary<string, object>); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 14: if (((_flag0 & 0x400u) != 0) && string.Equals(key, "owin.RequestId", StringComparison.Ordinal)) { _initFlag0 &= ~0x400u; _flag0 &= ~0x400u; _RequestId = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x20000000u) != 0) && string.Equals(key, "server.IsLocal", StringComparison.Ordinal)) { _initFlag0 &= ~0x20000000u; _flag0 &= ~0x20000000u; _ServerIsLocal = default(bool); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 30: if (((_flag0 & 0x800u) != 0) && string.Equals(key, "server.DisableRequestBuffering", StringComparison.Ordinal)) { _initFlag0 &= ~0x800u; _flag0 &= ~0x800u; _DisableRequestBuffering = default(Action); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 25: if (((_flag0 & 0x2000u) != 0) && string.Equals(key, "owin.ResponseReasonPhrase", StringComparison.Ordinal)) { // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 17: if (((_flag0 & 0x8000u) != 0) && string.Equals(key, "owin.ResponseBody", StringComparison.Ordinal)) { _initFlag0 &= ~0x8000u; _flag0 &= ~0x8000u; _ResponseBody = default(Stream); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x4000000u) != 0) && string.Equals(key, "server.RemotePort", StringComparison.Ordinal)) { _initFlag0 &= ~0x4000000u; _flag0 &= ~0x4000000u; _ServerRemotePort = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 31: if (((_flag0 & 0x10000u) != 0) && string.Equals(key, "server.DisableResponseBuffering", StringComparison.Ordinal)) { _initFlag0 &= ~0x10000u; _flag0 &= ~0x10000u; _DisableResponseBuffering = default(Action); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag1 & 0x8u) != 0) && string.Equals(key, "integratedpipeline.CurrentStage", StringComparison.Ordinal)) { _flag1 &= ~0x8u; _IntegratedPipelineStage = default(String); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 36: if (((_flag0 & 0x200000u) != 0) && string.Equals(key, "systemweb.DisableResponseCompression", StringComparison.Ordinal)) { _flag0 &= ~0x200000u; _DisableResponseCompression = default(Action); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 11: if (((_flag0 & 0x400000u) != 0) && string.Equals(key, "server.User", StringComparison.Ordinal)) { // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 22: if (((_flag0 & 0x2000000u) != 0) && string.Equals(key, "server.RemoteIpAddress", StringComparison.Ordinal)) { _initFlag0 &= ~0x2000000u; _flag0 &= ~0x2000000u; _ServerRemoteIpAddress = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 21: if (((_flag0 & 0x8000000u) != 0) && string.Equals(key, "server.LocalIpAddress", StringComparison.Ordinal)) { _initFlag0 &= ~0x8000000u; _flag0 &= ~0x8000000u; _ServerLocalIpAddress = default(string); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag0 & 0x40000000u) != 0) && string.Equals(key, "ssl.ClientCertificate", StringComparison.Ordinal)) { _initFlag0 &= ~0x40000000u; _flag0 &= ~0x40000000u; _ClientCert = default(X509Certificate); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 26: if (((_flag1 & 0x4u) != 0) && string.Equals(key, "integratedpipeline.Context", StringComparison.Ordinal)) { _flag1 &= ~0x4u; _IntegratedPipelineContext = default(IntegratedPipelineContext); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } if (((_flag1 & 0x20u) != 0) && string.Equals(key, "System.Web.HttpContextBase", StringComparison.Ordinal)) { _flag1 &= ~0x20u; _HttpContextBase = default(HttpContextBase); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; case 33: if (((_flag1 & 0x10u) != 0) && string.Equals(key, "System.Web.Routing.RequestContext", StringComparison.Ordinal)) { _flag1 &= ~0x10u; _RequestContext = default(RequestContext); // This can return true incorrectly for values that delayed initialization may determine are not actually present. return true; } break; } return false; }
public bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { return _owinResponse.TryGetWebSocketAccept(ref websocketAccept); }
public bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { return(_owinResponse.TryGetWebSocketAccept(ref websocketAccept)); }
internal bool TryGetWebSocketAccept(ref WebSocketAccept websocketAccept) { if (_context.Request.IsWebSocketRequest) { string versionString = _context.Request.Headers[Constants.SecWebSocketVersion]; int version; if (!string.IsNullOrWhiteSpace(versionString) && int.TryParse(versionString, NumberStyles.Integer, CultureInfo.InvariantCulture, out version) && version >= 13) { websocketAccept = new WebSocketAccept(DoWebSocketUpgrade); return true; } } websocketAccept = null; return false; }