mirror of
https://github.com/chatmail/core.git
synced 2026-04-18 22:16:30 +03:00
limit rate of webxdc updates (#3417)
* more flexible render_webxdc_status_update_object() * delay webxdc updates when ratelimit is reached * inject updates messages to the SMTP loop as needed this avoids starting several tasks and allows sending updates out after a restart of the app. * use mutex to prevent race conditions in status updates * check ratelimiter only before the sending loop; it won't change until messages are actually sent out * fix typo * prefer standard type declaration over turbofish syntax * use UNIQUE and ON CONFLICT for query smtp_status_updates * combine DELETE+SELECT to one atomic statement * as all operations on smtp_status_updates are now atomic, a mutex is no longer needed * test DELETE+RETURNING statement * simplify calls to can_send() * comment about ratelimit boolean in send_smtp_messages()
This commit is contained in:
@@ -637,6 +637,19 @@ CREATE INDEX smtp_messageid ON imap(rfc724_mid);
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
if dbversion < 91 {
|
||||
info!(context, "[migration] v91");
|
||||
sql.execute_migration(
|
||||
r#"CREATE TABLE smtp_status_updates (
|
||||
msg_id INTEGER NOT NULL UNIQUE, -- msg_id of the webxdc instance with pending updates
|
||||
first_serial INTEGER NOT NULL, -- id in msgs_status_updates
|
||||
last_serial INTEGER NOT NULL, -- id in msgs_status_updates
|
||||
descr TEXT NOT NULL -- text to send along with the updates
|
||||
);"#,
|
||||
91,
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
|
||||
Ok((
|
||||
recalc_fingerprints,
|
||||
|
||||
Reference in New Issue
Block a user