private HttpListener searchListener(Uri uri, out ListenerPrefix prefix) { prefix = null; if (uri == null) { return(null); } string host = uri.Host; int port = uri.Port; string text = HttpUtility.UrlDecode(uri.AbsolutePath); string text2 = (text[text.Length - 1] != '/') ? (text + "/") : text; HttpListener httpListener = null; int num = -1; if (host != null && host.Length > 0) { foreach (ListenerPrefix listenerPrefix in this._prefixes.Keys) { string path = listenerPrefix.Path; if (path.Length >= num) { if (!(listenerPrefix.Host != host) && listenerPrefix.Port == port) { if (text.StartsWith(path) || text2.StartsWith(path)) { num = path.Length; httpListener = this._prefixes[listenerPrefix]; prefix = listenerPrefix; } } } } if (num != -1) { return(httpListener); } } List <ListenerPrefix> list = this._unhandled; httpListener = EndPointListener.matchFromList(host, text, list, out prefix); if (text != text2 && httpListener == null) { httpListener = EndPointListener.matchFromList(host, text2, list, out prefix); } if (httpListener != null) { return(httpListener); } list = this._all; httpListener = EndPointListener.matchFromList(host, text, list, out prefix); if (text != text2 && httpListener == null) { httpListener = EndPointListener.matchFromList(host, text2, list, out prefix); } if (httpListener != null) { return(httpListener); } return(null); }