diff --git a/api/src/security/api-keys.js b/api/src/security/api-keys.js index 0e24c48d..d534999c 100644 --- a/api/src/security/api-keys.js +++ b/api/src/security/api-keys.js @@ -117,6 +117,10 @@ const formatKeys = (keyData) => { return formatted; } +const updateKeys = (newKeys) => { + keys = formatKeys(newKeys); +} + const loadKeys = async (source) => { let updated; if (source.protocol === 'file:') { @@ -138,10 +142,6 @@ const loadKeys = async (source) => { updateKeys(updated); } -const updateKeys = (newKeys) => { - keys = formatKeys(newKeys); -} - const wrapLoad = (url, initial = false) => { loadKeys(url) .then(() => { diff --git a/api/src/security/secrets.js b/api/src/security/secrets.js index 2973043b..fff24f84 100644 --- a/api/src/security/secrets.js +++ b/api/src/security/secrets.js @@ -15,15 +15,19 @@ export const syncSecrets = () => { return new Promise((resolve, reject) => { if (cluster.isPrimary) { let remaining = Object.values(cluster.workers).length; + const handleReady = (worker, m) => { + if (m.ready) + worker.send({ rateSalt, streamSalt }); + + if (!--remaining) + resolve(); + } for (const worker of Object.values(cluster.workers)) { - worker.once('message', (m) => { - if (m.ready) - worker.send({ rateSalt, streamSalt }); - - if (!--remaining) - resolve(); - }); + worker.once( + 'message', + (m) => handleReady(worker, m) + ); } } else if (cluster.isWorker) { if (rateSalt || streamSalt) diff --git a/api/src/store/base-store.js b/api/src/store/base-store.js index 9938c852..c2a59ff8 100644 --- a/api/src/store/base-store.js +++ b/api/src/store/base-store.js @@ -13,7 +13,7 @@ export class Store { this.id = name; } - async _has(_key) { throw "needs implementation" } + async _has(_key) { await Promise.reject("needs implementation"); } has(key) { if (typeof key !== 'string') { key = key.toString(); @@ -22,7 +22,7 @@ export class Store { return this._has(key); } - async _get(_key) { throw "needs implementation" } + async _get(_key) { await Promise.reject("needs implementation"); } async get(key) { if (typeof key !== 'string') { key = key.toString(); @@ -35,7 +35,7 @@ export class Store { return val; } - async _set(_key, _val, _exp_sec = -1) { throw "needs implementation" } + async _set(_key, _val, _exp_sec = -1) { await Promise.reject("needs implementation") } set(key, val, exp_sec = -1) { if (typeof key !== 'string') { key = key.toString(); diff --git a/api/src/store/memory-store.js b/api/src/store/memory-store.js index b30908d5..549f6e6f 100644 --- a/api/src/store/memory-store.js +++ b/api/src/store/memory-store.js @@ -14,17 +14,17 @@ export default class MemoryStore extends Store { super(name); } - async _has(key) { + _has(key) { return this.#store.has(key); } - async _get(key) { + _get(key) { const val = this.#store.get(key); return val === undefined ? null : val; } - async _set(key, val, exp_sec = -1) { + _set(key, val, exp_sec = -1) { if (this.#store.has(key)) { this.#timeouts.remove(o => o.k === key); }