public override bool TryReceiveRequest (TimeSpan timeout, out RequestContext context) { context = null; HttpContextInfo ctxi; if (!source.ListenerManager.TryDequeueRequest (source.ChannelDispatcher, timeout, out ctxi)) return false; if (ctxi == null) return true; // returning true, yet context is null. This happens at closing phase. if (source.Source.AuthenticationScheme != AuthenticationSchemes.Anonymous) { if (security_token_authenticator != null) // FIXME: use return value? try { security_token_authenticator.ValidateToken (new UserNameSecurityToken (ctxi.User, ctxi.Password)); } catch (Exception) { ctxi.ReturnUnauthorized (); } else { ctxi.ReturnUnauthorized (); } } Message msg = null; if (ctxi.Request.HttpMethod == "POST") { msg = CreatePostMessage (ctxi); if (msg == null) return false; } else if (ctxi.Request.HttpMethod == "GET") msg = Message.CreateMessage (MessageVersion.None, null); // HTTP GET-based request if (msg.Headers.To == null) msg.Headers.To = ctxi.Request.Url; msg.Properties.Add ("Via", LocalAddress.Uri); msg.Properties.Add (HttpRequestMessageProperty.Name, CreateRequestProperty (ctxi)); context = new HttpRequestContext (this, ctxi, msg); reqctx = context; return true; }
public override bool TryReceiveRequest (TimeSpan timeout, out RequestContext context) { context = null; HttpContextInfo ctxi; if (!source.ListenerManager.TryDequeueRequest (source.ChannelDispatcher, timeout, out ctxi)) return false; if (ctxi == null) return true; // returning true, yet context is null. This happens at closing phase. Message msg = null; if (ctxi.Request.HttpMethod == "POST") { msg = CreatePostMessage (ctxi); if (msg == null) return false; } else if (ctxi.Request.HttpMethod == "GET") msg = Message.CreateMessage (MessageVersion.None, null); // HTTP GET-based request if (msg.Headers.To == null) msg.Headers.To = ctxi.Request.Url; msg.Properties.Add ("Via", LocalAddress.Uri); msg.Properties.Add (HttpRequestMessageProperty.Name, CreateRequestProperty (ctxi)); context = new HttpRequestContext (this, ctxi, msg); reqctx = context; return true; }