[Modify] Polish it
This commit is contained in:
parent
01ad753c3a
commit
40f1335412
@ -312,6 +312,7 @@ namespace WebSocketSharp.Net
|
|||||||
private HttpListener searchListener (Uri uri, out HttpListenerPrefix prefix)
|
private HttpListener searchListener (Uri uri, out HttpListenerPrefix prefix)
|
||||||
{
|
{
|
||||||
prefix = null;
|
prefix = null;
|
||||||
|
|
||||||
if (uri == null)
|
if (uri == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
@ -319,27 +320,30 @@ namespace WebSocketSharp.Net
|
|||||||
var dns = Uri.CheckHostName (host) == UriHostNameType.Dns;
|
var dns = Uri.CheckHostName (host) == UriHostNameType.Dns;
|
||||||
var port = uri.Port.ToString ();
|
var port = uri.Port.ToString ();
|
||||||
var path = HttpUtility.UrlDecode (uri.AbsolutePath);
|
var path = HttpUtility.UrlDecode (uri.AbsolutePath);
|
||||||
var pathSlash = path[path.Length - 1] == '/' ? path : path + "/";
|
var pathSlash = path[path.Length - 1] != '/' ? path + "/" : path;
|
||||||
|
|
||||||
HttpListener bestMatch = null;
|
HttpListener bestMatch = null;
|
||||||
var bestLen = -1;
|
|
||||||
if (host != null && host.Length > 0) {
|
if (host != null && host.Length > 0) {
|
||||||
|
var bestLen = -1;
|
||||||
foreach (var pref in _prefixes.Keys) {
|
foreach (var pref in _prefixes.Keys) {
|
||||||
var ppath = pref.Path;
|
if (dns) {
|
||||||
if (ppath.Length < bestLen)
|
var prefHost = pref.Host;
|
||||||
|
if (Uri.CheckHostName (prefHost) == UriHostNameType.Dns && prefHost != host)
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (pref.Port != port)
|
if (pref.Port != port)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (dns) {
|
var prefPath = pref.Path;
|
||||||
var phost = pref.Host;
|
|
||||||
if (Uri.CheckHostName (phost) == UriHostNameType.Dns && phost != host)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (path.StartsWith (ppath) || pathSlash.StartsWith (ppath)) {
|
var len = prefPath.Length;
|
||||||
bestLen = ppath.Length;
|
if (len < bestLen)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (path.StartsWith (prefPath) || pathSlash.StartsWith (prefPath)) {
|
||||||
|
bestLen = len;
|
||||||
bestMatch = _prefixes[pref];
|
bestMatch = _prefixes[pref];
|
||||||
prefix = pref;
|
prefix = pref;
|
||||||
}
|
}
|
||||||
@ -362,10 +366,7 @@ namespace WebSocketSharp.Net
|
|||||||
if (path != pathSlash && bestMatch == null)
|
if (path != pathSlash && bestMatch == null)
|
||||||
bestMatch = matchFromList (host, pathSlash, list, out prefix);
|
bestMatch = matchFromList (host, pathSlash, list, out prefix);
|
||||||
|
|
||||||
if (bestMatch != null)
|
|
||||||
return bestMatch;
|
return bestMatch;
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
Loading…
Reference in New Issue
Block a user