DirectoryResource: Fix child resource race conditions and cache
parent
43321555e3
commit
32c6a8e15d
|
@ -59,22 +59,30 @@ namespace ln.http.resources
|
|||
return true;
|
||||
|
||||
String cPath = PathHelper.FindPath(searchPaths.Select((p) => System.IO.Path.Combine(p, name)));
|
||||
|
||||
if ((cPath == null) && cache.ContainsKey(name))
|
||||
cache.Remove(name);
|
||||
|
||||
lock (cache)
|
||||
{
|
||||
if ((cPath == null) && cache.ContainsKey(name))
|
||||
cache.Remove(name);
|
||||
}
|
||||
return (cPath != null);
|
||||
|
||||
}
|
||||
|
||||
public override void AddResource(Resource resource)
|
||||
{
|
||||
cache.Add(resource.Name,resource);
|
||||
lock (cache)
|
||||
{
|
||||
cache.Add(resource.Name, resource);
|
||||
}
|
||||
}
|
||||
|
||||
public override void RemoveResource(Resource resource)
|
||||
{
|
||||
if (cache.ContainsValue(resource))
|
||||
cache.Remove(resource.Name);
|
||||
lock (cache)
|
||||
{
|
||||
if (cache.ContainsValue(resource))
|
||||
cache.Remove(resource.Name);
|
||||
}
|
||||
}
|
||||
|
||||
public void InjectResource(Resource resource)
|
||||
|
@ -90,8 +98,11 @@ namespace ln.http.resources
|
|||
if (injectedResources.ContainsKey(name))
|
||||
return injectedResources[name];
|
||||
|
||||
if (cache.ContainsKey(name))
|
||||
return cache[name];
|
||||
lock (cache)
|
||||
{
|
||||
if (cache.ContainsKey(name))
|
||||
return cache[name];
|
||||
}
|
||||
|
||||
String cPath = PathHelper.FindPath(searchPaths.Select((p) => System.IO.Path.Combine(p,name)));
|
||||
if (cPath == null)
|
||||
|
@ -101,7 +112,6 @@ namespace ln.http.resources
|
|||
{
|
||||
DirectoryResource child = new DirectoryResource(this, searchPaths.Select((p)=> System.IO.Path.Combine(p,name)));
|
||||
child.ResourceTypeHook = ResourceTypeHook;
|
||||
cache[name] = child;
|
||||
return child;
|
||||
}
|
||||
else if (File.Exists(cPath))
|
||||
|
@ -117,7 +127,6 @@ namespace ln.http.resources
|
|||
{
|
||||
resource = new FileResource(this, fileInfo);
|
||||
}
|
||||
cache[name] = resource;
|
||||
return resource;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue