Fixed invalid cursor iteration within the connection history

master
WolverinDEV 2021-06-11 12:15:14 +02:00
parent 253f537bb2
commit 7601ac2e07
1 changed files with 15 additions and 20 deletions

View File

@ -479,35 +479,30 @@ export class ConnectionHistory {
const transaction = this.database.transaction(["attempt-history"], "readonly"); const transaction = this.database.transaction(["attempt-history"], "readonly");
const store = transaction.objectStore("attempt-history"); const store = transaction.objectStore("attempt-history");
const cursor = await new Promise<IDBCursorWithValue | null>((resolve, reject) => { const cursor = store.index(targetType === "server-unique-id" ? "serverUniqueId" : "targetAddress").openCursor(target, "prev");
const cursor = store.index(targetType === "server-unique-id" ? "serverUniqueId" : "targetAddress").openCursor(target, "prev");
cursor.onsuccess = () => resolve(cursor.result);
cursor.onerror = () => reject(cursor.error);
});
if(!cursor) {
/* We did not find any entry */
return undefined;
}
while(true) { while(true) {
if(!cursor.value) { const entry = await new Promise<IDBCursorWithValue | null>((resolve, reject) => {
cursor.onsuccess = () => resolve(cursor.result);
cursor.onerror = () => reject(cursor.error);
});
if(!entry) {
return undefined; return undefined;
} }
if(cursor.value.serverUniqueId === kUnknownHistoryServerUniqueId && onlySucceeded) { if(entry.value.serverUniqueId === kUnknownHistoryServerUniqueId && onlySucceeded) {
cursor.continue(); entry.continue();
continue; continue;
} }
return { return {
id: cursor.value.id, id: entry.value.id,
timestamp: cursor.value.timestamp, timestamp: entry.value.timestamp,
serverUniqueId: cursor.value.serverUniqueId, serverUniqueId: entry.value.serverUniqueId,
nickname: cursor.value.nickname, nickname: entry.value.nickname,
hashedPassword: cursor.value.hashedPassword, hashedPassword: entry.value.hashedPassword,
targetAddress: cursor.value.targetAddress, targetAddress: entry.value.targetAddress,
}; };
} }
} }