Merge pull request #1487 from mempool/nymkappa/bugfix/invalid-pool-handling

Send 404 when accessing non existing mining pool
This commit is contained in:
softsimon 2022-04-03 17:37:09 +04:00 committed by GitHub
commit ba92284e44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 4 deletions

View File

@ -81,7 +81,7 @@ class PoolsRepository {
/** /**
* Get mining pool statistics for one pool * Get mining pool statistics for one pool
*/ */
public async $getPool(slug: string): Promise<PoolTag> { public async $getPool(slug: string): Promise<PoolTag | null> {
const query = ` const query = `
SELECT * SELECT *
FROM pools FROM pools
@ -94,6 +94,11 @@ class PoolsRepository {
const [rows] = await connection.query(query, [slug]); const [rows] = await connection.query(query, [slug]);
connection.release(); connection.release();
if (rows.length < 1) {
logger.debug(`$getPool(): slug does not match any known pool`);
return null;
}
rows[0].regexes = JSON.parse(rows[0].regexes); rows[0].regexes = JSON.parse(rows[0].regexes);
if (['testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { if (['testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) {
rows[0].addresses = []; // pools.json only contains mainnet addresses rows[0].addresses = []; // pools.json only contains mainnet addresses

View File

@ -545,7 +545,11 @@ class Routes {
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(stats); res.json(stats);
} catch (e) { } catch (e) {
res.status(500).send(e instanceof Error ? e.message : e); if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
} }
} }
@ -560,7 +564,11 @@ class Routes {
res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString());
res.json(poolBlocks); res.json(poolBlocks);
} catch (e) { } catch (e) {
res.status(500).send(e instanceof Error ? e.message : e); if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
} }
} }
@ -604,7 +612,11 @@ class Routes {
hashrates: hashrates, hashrates: hashrates,
}); });
} catch (e) { } catch (e) {
res.status(500).send(e instanceof Error ? e.message : e); if (e instanceof Error && e.message.indexOf('This mining pool does not exist') > -1) {
res.status(404).send(e.message);
} else {
res.status(500).send(e instanceof Error ? e.message : e);
}
} }
} }