diff options
Diffstat (limited to '')
-rw-r--r-- | Servers/BaseHttpServer.cs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/Servers/BaseHttpServer.cs b/Servers/BaseHttpServer.cs index 7c2a195..174402a 100644 --- a/Servers/BaseHttpServer.cs +++ b/Servers/BaseHttpServer.cs | |||
@@ -76,11 +76,23 @@ namespace OpenSim.Servers | |||
76 | string response; | 76 | string response; |
77 | RestMethod handler; | 77 | RestMethod handler; |
78 | 78 | ||
79 | string methodKey = String.Format("{0}: {1}", method, path); | 79 | string requestKey = String.Format("{0}: {1}", method, path); |
80 | 80 | ||
81 | if (m_restHandlers.TryGetValue(methodKey, out handler)) | 81 | string bestMatch = String.Empty; |
82 | foreach( string currentKey in m_restHandlers.Keys ) | ||
83 | { | ||
84 | if( requestKey.StartsWith( currentKey )) | ||
85 | { | ||
86 | if(currentKey.Length > bestMatch.Length ) | ||
87 | { | ||
88 | bestMatch = currentKey; | ||
89 | } | ||
90 | } | ||
91 | } | ||
92 | |||
93 | if (m_restHandlers.TryGetValue(bestMatch, out handler)) | ||
82 | { | 94 | { |
83 | response = handler(request); | 95 | response = handler(request, path); |
84 | 96 | ||
85 | } | 97 | } |
86 | else | 98 | else |