This commit is contained in:
varjolintu 2023-08-21 08:44:19 +03:00
parent eea5b78f98
commit e6dfb5bd16
2 changed files with 7 additions and 17 deletions

View file

@ -56,7 +56,7 @@ const messageBuffer = {
},
removeMessageFromIndex(index) {
if (this.buffer.length >= index + 1) {
if (index >= 0 && index < this.buffer.length) {
this.buffer.splice(index, 1);
}
}
@ -95,17 +95,16 @@ class Message {
//--------------------------------------------------------------------------
keepassClient.sendNativeMessage = async function(request, enableTimeout = false, timeoutValue) {
if (!keepassClient.nativePort) {
return;
}
const message = new Message(request, enableTimeout, timeoutValue);
await navigator.locks.request('messageBuffer', async (lock) => {
messageBuffer.addMessage({ request: request, message: message });
});
// Send the request
if (keepassClient.nativePort) {
keepassClient.nativePort.postMessage(request);
}
// Wait for response
keepassClient.nativePort.postMessage(request);
return await message.promise;
};
@ -115,7 +114,7 @@ keepassClient.handleNativeMessage = async function(response) {
// Parse through the message buffer to find the corresponding Promise.
await navigator.locks.request('messageBuffer', async (lock) => {
for (let i = 0; i < messageBuffer.buffer.length; ++i) {
if (! messageBuffer.buffer[i]) {
if (!messageBuffer.buffer[i]) {
continue;
}

View file

@ -15,7 +15,6 @@ keepass.latestVersionUrl = 'https://api.github.com/repos/keepassxreboot/keepassx
keepass.cacheTimeout = 30 * 1000; // Milliseconds
keepass.databaseHash = '';
keepass.previousDatabaseHash = '';
keepass.passwordRequestSent = false;
keepass.reconnectLoop = null;
const kpActions = {
@ -169,13 +168,7 @@ keepass.retrieveCredentials = async function(tab, args = []) {
keepass.generatePassword = async function(tab) {
if (!keepass.isConnected) {
return '';
}
if (keepass.passwordRequestSent) {
return undefined;
} else {
keepass.passwordRequestSent = true;
}
try {
@ -208,11 +201,9 @@ keepass.generatePassword = async function(tab) {
logError('generatePassword rejected');
}
keepass.passwordRequestSent = false;
return password;
} catch (err) {
logError(`generatePassword failed: ${err}`);
keepass.passwordRequestSent = false;
return undefined;
}
};