mirror of
https://github.com/Jackett/Jackett.git
synced 2025-09-17 17:34:09 +02:00
@@ -289,22 +289,26 @@ namespace Jackett.Common.Indexers
|
|||||||
|
|
||||||
public virtual async Task<IndexerResult> ResultsForQuery(TorznabQuery query, bool isMetaIndexer)
|
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);
|
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)
|
if (cachedReleases != null)
|
||||||
return new IndexerResult(this, cachedReleases, true);
|
return new IndexerResult(this, cachedReleases, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var results = await PerformQuery(query);
|
var results = await PerformQuery(queryCopy);
|
||||||
results = FilterResults(query, results);
|
results = FilterResults(queryCopy, results);
|
||||||
results = FixResults(query, results);
|
results = FixResults(queryCopy, results);
|
||||||
cacheService.CacheResults(this, query, results.ToList());
|
cacheService.CacheResults(this, queryCopy, results.ToList());
|
||||||
errorCount = 0;
|
errorCount = 0;
|
||||||
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
expireAt = DateTime.Now.Add(HealthyStatusValidity);
|
||||||
return new IndexerResult(this, results, false);
|
return new IndexerResult(this, results, false);
|
||||||
|
@@ -72,7 +72,7 @@ namespace Jackett.Common.Indexers.Meta
|
|||||||
|
|
||||||
var fallbackStrategies = fallbackStrategyProvider.FallbackStrategiesForQuery(query);
|
var fallbackStrategies = fallbackStrategyProvider.FallbackStrategiesForQuery(query);
|
||||||
var fallbackQueries = fallbackStrategies.Select(async f => await f.FallbackQueries()).SelectMany(t => t.Result);
|
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
|
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
|
// When there are many indexers used by a metaindexer querying each and every one of them can take very very
|
||||||
|
Reference in New Issue
Block a user