mirror of https://github.com/Jackett/Jackett
parent
47e9641325
commit
f2e258a6de
|
@ -289,22 +289,26 @@ namespace Jackett.Common.Indexers
|
|||
|
||||
public virtual async Task<IndexerResult> ResultsForQuery(TorznabQuery query, bool isMetaIndexer)
|
||||
{
|
||||
if (!CanHandleQuery(query) || !CanHandleCategories(query, isMetaIndexer))
|
||||
// we make a copy just in case some C# indexer modifies the object.
|
||||
// without the copy, if you make a request with several indexers, all indexers share the query object.
|
||||
var queryCopy = query.Clone();
|
||||
|
||||
if (!CanHandleQuery(queryCopy) || !CanHandleCategories(queryCopy, isMetaIndexer))
|
||||
return new IndexerResult(this, new ReleaseInfo[0], false);
|
||||
|
||||
if (query.Cache)
|
||||
if (queryCopy.Cache)
|
||||
{
|
||||
var cachedReleases = cacheService.Search(this, query);
|
||||
var cachedReleases = cacheService.Search(this, queryCopy);
|
||||
if (cachedReleases != null)
|
||||
return new IndexerResult(this, cachedReleases, true);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var results = await PerformQuery(query);
|
||||
results = FilterResults(query, results);
|
||||
results = FixResults(query, results);
|
||||
cacheService.CacheResults(this, query, results.ToList());
|
||||
var results = await PerformQuery(queryCopy);
|
||||
results = FilterResults(queryCopy, results);
|
||||
results = FixResults(queryCopy, results);
|
||||
cacheService.CacheResults(this, queryCopy, results.ToList());
|
||||
errorCount = 0;
|
||||
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
||||
return new IndexerResult(this, results, false);
|
||||
|
|
|
@ -72,7 +72,7 @@ namespace Jackett.Common.Indexers.Meta
|
|||
|
||||
var fallbackStrategies = fallbackStrategyProvider.FallbackStrategiesForQuery(query);
|
||||
var fallbackQueries = fallbackStrategies.Select(async f => await f.FallbackQueries()).SelectMany(t => t.Result);
|
||||
var fallbackTasks = fallbackQueries.SelectMany(q => indexers.Where(i => !i.CanHandleQuery(query) && i.CanHandleQuery(q)).Select(i => i.ResultsForQuery(q.Clone(), true)));
|
||||
var fallbackTasks = fallbackQueries.SelectMany(q => indexers.Where(i => !i.CanHandleQuery(query) && i.CanHandleQuery(q)).Select(i => i.ResultsForQuery(q, true)));
|
||||
var tasks = supportedTasks.Concat(fallbackTasks.ToList()); // explicit conversion to List to execute LINQ query
|
||||
|
||||
// When there are many indexers used by a metaindexer querying each and every one of them can take very very
|
||||
|
|
Loading…
Reference in New Issue