mirror of
https://github.com/chatmail/core.git
synced 2026-05-23 00:36:32 +03:00
Make Peerstate.save_to_db atomic
This should prevent creation of acpeerstate entries using default values (empty strings) for fingerprint columns.
This commit is contained in:
committed by
link2xt
parent
dc4fa1de65
commit
d106a027c7
@@ -403,21 +403,20 @@ impl<'a> Peerstate<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn save_to_db(&self, sql: &Sql, create: bool) -> crate::sql::Result<()> {
|
pub async fn save_to_db(&self, sql: &Sql, create: bool) -> crate::sql::Result<()> {
|
||||||
if create {
|
|
||||||
sql.execute(
|
|
||||||
"INSERT INTO acpeerstates (addr) VALUES(?);",
|
|
||||||
paramsv![self.addr],
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.to_save == Some(ToSave::All) || create {
|
if self.to_save == Some(ToSave::All) || create {
|
||||||
sql.execute(
|
sql.execute(
|
||||||
|
if create {
|
||||||
|
"INSERT INTO acpeerstates (last_seen, last_seen_autocrypt, prefer_encrypted, \
|
||||||
|
public_key, gossip_timestamp, gossip_key, public_key_fingerprint, gossip_key_fingerprint, \
|
||||||
|
verified_key, verified_key_fingerprint, addr \
|
||||||
|
) VALUES(?,?,?,?,?,?,?,?,?,?,?)"
|
||||||
|
} else {
|
||||||
"UPDATE acpeerstates \
|
"UPDATE acpeerstates \
|
||||||
SET last_seen=?, last_seen_autocrypt=?, prefer_encrypted=?, \
|
SET last_seen=?, last_seen_autocrypt=?, prefer_encrypted=?, \
|
||||||
public_key=?, gossip_timestamp=?, gossip_key=?, public_key_fingerprint=?, gossip_key_fingerprint=?, \
|
public_key=?, gossip_timestamp=?, gossip_key=?, public_key_fingerprint=?, gossip_key_fingerprint=?, \
|
||||||
verified_key=?, verified_key_fingerprint=? \
|
verified_key=?, verified_key_fingerprint=? \
|
||||||
WHERE addr=?;",
|
WHERE addr=?"
|
||||||
|
},
|
||||||
paramsv![
|
paramsv![
|
||||||
self.last_seen,
|
self.last_seen,
|
||||||
self.last_seen_autocrypt,
|
self.last_seen_autocrypt,
|
||||||
|
|||||||
Reference in New Issue
Block a user