fix: allow concurrent access to dc_sqlite3_t

This commit is contained in:
dignifiedquire
2019-05-02 23:33:00 +02:00
parent 1a0808e243
commit e187f0f250
26 changed files with 383 additions and 440 deletions

View File

@@ -70,7 +70,7 @@ pub unsafe extern "C" fn dc_reset_tables(
if 0 != bits & 1i32 {
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM jobs;\x00" as *const u8 as *const libc::c_char,
);
dc_log_info(
@@ -82,7 +82,7 @@ pub unsafe extern "C" fn dc_reset_tables(
if 0 != bits & 2i32 {
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM acpeerstates;\x00" as *const u8 as *const libc::c_char,
);
dc_log_info(
@@ -94,7 +94,7 @@ pub unsafe extern "C" fn dc_reset_tables(
if 0 != bits & 4i32 {
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM keypairs;\x00" as *const u8 as *const libc::c_char,
);
dc_log_info(
@@ -106,33 +106,33 @@ pub unsafe extern "C" fn dc_reset_tables(
if 0 != bits & 8i32 {
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM contacts WHERE id>9;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM chats WHERE id>9;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM chats_contacts;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM msgs WHERE id>9;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM config WHERE keyname LIKE \'imap.%\' OR keyname LIKE \'configured%\';\x00"
as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM leftgrps;\x00" as *const u8 as *const libc::c_char,
);
dc_log_info(
@@ -165,7 +165,7 @@ unsafe extern "C" fn dc_cleanup_contacts(mut context: &dc_context_t) -> libc::c_
0i32,
b"Cleaning up contacts ...\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_execute(context, &mut context.sql.clone().lock().unwrap(),
dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(),
b"DELETE FROM contacts WHERE id>9 AND blocked=0 AND NOT EXISTS (SELECT contact_id FROM chats_contacts where contacts.id = chats_contacts.contact_id) AND NOT EXISTS (select from_id from msgs WHERE msgs.from_id = contacts.id);\x00"
as *const u8 as *const libc::c_char);
return 1i32;
@@ -223,14 +223,14 @@ unsafe extern "C" fn poke_public_key(
} else {
if 0 != dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
addr,
) {
dc_apeerstate_apply_header(peerstate, header, time(0 as *mut time_t));
dc_apeerstate_save_to_db(peerstate, &mut context.sql.clone().lock().unwrap(), 0i32);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 0i32);
} else {
dc_apeerstate_init_from_header(peerstate, header, time(0 as *mut time_t));
dc_apeerstate_save_to_db(peerstate, &mut context.sql.clone().lock().unwrap(), 1i32);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 1i32);
}
success = 1i32
}
@@ -261,7 +261,7 @@ unsafe extern "C" fn poke_spec(
let mut dir_entry: *mut dirent = 0 as *mut dirent;
let mut read_cnt: libc::c_int = 0i32;
let mut name: *mut libc::c_char = 0 as *mut libc::c_char;
if 0 == dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap()) {
if 0 == dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
dc_log_error(
context,
0i32,
@@ -273,7 +273,7 @@ unsafe extern "C" fn poke_spec(
real_spec = dc_strdup(spec);
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"import_spec\x00" as *const u8 as *const libc::c_char,
real_spec,
);
@@ -281,7 +281,7 @@ unsafe extern "C" fn poke_spec(
} else {
real_spec = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"import_spec\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -543,11 +543,8 @@ unsafe extern "C" fn log_contactlist(mut context: &dc_context_t, mut contacts: *
b"addr unset\x00" as *const u8 as *const libc::c_char
},
);
let mut peerstate_ok: libc::c_int = dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
addr,
);
let mut peerstate_ok: libc::c_int =
dc_apeerstate_load_by_addr(peerstate, &context.sql.clone().read().unwrap(), addr);
if 0 != peerstate_ok && contact_id != 1i32 as libc::c_uint {
let mut pe: *mut libc::c_char = 0 as *mut libc::c_char;
match (*peerstate).prefer_encrypt {

View File

@@ -403,8 +403,7 @@ unsafe fn main_0(mut argc: libc::c_int, mut argv: *mut *mut libc::c_char) -> lib
arg1 = arg1.offset(1isize)
}
if strcmp(cmd, b"connect\x00" as *const u8 as *const libc::c_char) == 0i32 {
let ctx = ctx.clone();
handles = Some(start_threads(ctx));
handles = Some(start_threads(ctx.clone()));
} else if strcmp(cmd, b"disconnect\x00" as *const u8 as *const libc::c_char) == 0i32 {
stop_threads(&ctx.read().unwrap(), handles);
handles = None;

View File

@@ -314,7 +314,7 @@ pub unsafe fn dc_apeerstate_set_verified(
}
pub unsafe fn dc_apeerstate_load_by_addr(
mut peerstate: *mut dc_apeerstate_t,
mut sql: &mut dc_sqlite3_t,
mut sql: &dc_sqlite3_t,
mut addr: *const libc::c_char,
) -> libc::c_int {
let mut success: libc::c_int = 0i32;
@@ -366,7 +366,7 @@ unsafe fn dc_apeerstate_set_from_stmt(
}
pub unsafe fn dc_apeerstate_load_by_fingerprint(
mut peerstate: *mut dc_apeerstate_t,
mut sql: &mut dc_sqlite3_t,
mut sql: &dc_sqlite3_t,
mut fingerprint: *const libc::c_char,
) -> libc::c_int {
let mut success: libc::c_int = 0i32;
@@ -392,7 +392,7 @@ pub unsafe fn dc_apeerstate_load_by_fingerprint(
}
pub unsafe fn dc_apeerstate_save_to_db(
mut peerstate: *const dc_apeerstate_t,
mut sql: &mut dc_sqlite3_t,
mut sql: &dc_sqlite3_t,
mut create: libc::c_int,
) -> libc::c_int {
let mut current_block: u64;

View File

@@ -124,7 +124,7 @@ pub unsafe fn dc_block_chat(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET blocked=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, new_blocking);
@@ -140,7 +140,7 @@ pub unsafe fn dc_chat_load_from_db(mut chat: *mut dc_chat_t, mut chat_id: uint32
stmt =
dc_sqlite3_prepare(
(*chat).context,
&mut (*chat).context.sql.lock().unwrap(),
&(*chat).context.sql.read().unwrap(),
b"SELECT c.id,c.type,c.name, c.grpid,c.param,c.archived, c.blocked, c.gossiped_timestamp, c.locations_send_until FROM chats c WHERE c.id=?;\x00"
as *const u8 as *const libc::c_char
);
@@ -278,7 +278,7 @@ pub unsafe fn dc_create_or_lookup_nchat_by_contact_id(
if !ret_chat_blocked.is_null() {
*ret_chat_blocked = 0i32
}
if context.sql.lock().unwrap().cobj.is_null() {
if context.sql.read().unwrap().cobj.is_null() {
return;
}
if contact_id == 0i32 as libc::c_uint {
@@ -295,7 +295,7 @@ pub unsafe fn dc_create_or_lookup_nchat_by_contact_id(
return;
}
contact = dc_contact_new(context);
if !(0 == dc_contact_load_from_db(contact, &mut context.sql.lock().unwrap(), contact_id)) {
if !(0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)) {
chat_name =
if !(*contact).name.is_null() && 0 != *(*contact).name.offset(0isize) as libc::c_int {
(*contact).name
@@ -327,12 +327,12 @@ pub unsafe fn dc_create_or_lookup_nchat_by_contact_id(
);
} else {
};
stmt = dc_sqlite3_prepare(context, &mut context.sql.lock().unwrap(), q);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q);
if !stmt.is_null() {
if !(sqlite3_step(stmt) != 101i32) {
chat_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"chats\x00" as *const u8 as *const libc::c_char,
b"grpid\x00" as *const u8 as *const libc::c_char,
(*contact).addr,
@@ -347,7 +347,7 @@ pub unsafe fn dc_create_or_lookup_nchat_by_contact_id(
chat_id,
contact_id,
);
stmt = dc_sqlite3_prepare(context, &mut context.sql.lock().unwrap(), q);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q);
if !(sqlite3_step(stmt) != 101i32) {
sqlite3_free(q as *mut libc::c_void);
q = 0 as *mut libc::c_char;
@@ -381,13 +381,13 @@ pub unsafe fn dc_lookup_real_nchat_by_contact_id(
if !ret_chat_blocked.is_null() {
*ret_chat_blocked = 0i32
}
if context.sql.lock().unwrap().cobj.is_null() {
if context.sql.clone().read().unwrap().cobj.is_null() {
return;
}
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT c.id, c.blocked FROM chats c INNER JOIN chats_contacts j ON c.id=j.chat_id WHERE c.type=100 AND c.id>9 AND j.contact_id=?;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, contact_id as libc::c_int);
@@ -569,7 +569,7 @@ unsafe fn prepare_msg_raw(
} else {
let mut from: *mut libc::c_char = dc_sqlite3_get_config(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -592,7 +592,7 @@ unsafe fn prepare_msg_raw(
if (*chat).type_0 == 100i32 {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT contact_id FROM chats_contacts WHERE chat_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -631,7 +631,7 @@ unsafe fn prepare_msg_raw(
do_guarantee_e2ee = 0i32;
e2ee_enabled = dc_sqlite3_get_config_int(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -640,7 +640,7 @@ unsafe fn prepare_msg_raw(
let mut can_encrypt: libc::c_int = 1i32;
let mut all_mutual: libc::c_int = 1i32;
stmt =
dc_sqlite3_prepare(context, &mut context.sql.lock().unwrap(),
dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(),
b"SELECT ps.prefer_encrypted, c.addr FROM chats_contacts cc LEFT JOIN contacts c ON cc.contact_id=c.id LEFT JOIN acpeerstates ps ON c.addr=ps.addr WHERE cc.chat_id=? AND cc.contact_id>9;\x00"
as *const u8 as
*const libc::c_char);
@@ -684,7 +684,7 @@ unsafe fn prepare_msg_raw(
} else if 0
!= last_msg_in_chat_encrypted(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*chat).id,
)
{
@@ -752,7 +752,7 @@ unsafe fn prepare_msg_raw(
if 0 != dc_param_exists((*msg).param, DC_PARAM_SET_LATITUDE as libc::c_int) {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO locations \
(timestamp,from_id,chat_id, latitude,longitude,independent)\
VALUES (?,?,?, ?,?,1);\x00" as *const u8
@@ -785,7 +785,7 @@ unsafe fn prepare_msg_raw(
location_id = dc_sqlite3_get_rowid2(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"locations\x00" as *const u8 as *const libc::c_char,
b"timestamp\x00" as *const u8 as *const libc::c_char,
timestamp as u64,
@@ -798,7 +798,7 @@ unsafe fn prepare_msg_raw(
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"INSERT INTO msgs (rfc724_mid, chat_id, from_id, to_id, timestamp, type, state, txt, param, hidden, mime_in_reply_to, mime_references, location_id) VALUES (?,?,?,?,?, ?,?,?,?,?, ?,?,?);\x00"
as *const u8 as
*const libc::c_char);
@@ -836,7 +836,7 @@ unsafe fn prepare_msg_raw(
} else {
msg_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"msgs\x00" as *const u8 as *const libc::c_char,
b"rfc724_mid\x00" as *const u8 as *const libc::c_char,
new_rfc724_mid,
@@ -870,7 +870,7 @@ unsafe fn get_parent_mime_headers(
{
stmt =
dc_sqlite3_prepare(
(*chat).context,&mut (*chat).context.sql.lock().unwrap(),
(*chat).context,&mut (*chat).context.sql.clone().read().unwrap(),
b"SELECT rfc724_mid, mime_in_reply_to, mime_references FROM msgs WHERE timestamp=(SELECT max(timestamp) FROM msgs WHERE chat_id=? AND from_id!=?);\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, (*chat).id as libc::c_int);
@@ -886,7 +886,7 @@ unsafe fn get_parent_mime_headers(
if 0 == success {
stmt =
dc_sqlite3_prepare(
(*chat).context,&mut (*chat).context.sql.lock().unwrap(),
(*chat).context,&mut (*chat).context.sql.clone().read().unwrap(),
b"SELECT rfc724_mid, mime_in_reply_to, mime_references FROM msgs WHERE timestamp=(SELECT min(timestamp) FROM msgs WHERE chat_id=? AND from_id==?);\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, (*chat).id as libc::c_int);
@@ -916,7 +916,7 @@ pub unsafe fn dc_chat_is_self_talk(mut chat: *const dc_chat_t) -> libc::c_int {
******************************************************************************/
unsafe fn last_msg_in_chat_encrypted(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
chat_id: uint32_t,
) -> libc::c_int {
let mut last_is_encrypted: libc::c_int = 0i32;
@@ -944,7 +944,7 @@ pub unsafe fn dc_chat_update_param(mut chat: *mut dc_chat_t) -> libc::c_int {
let mut success: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
(*chat).context,
&mut (*chat).context.sql.lock().unwrap(),
&mut (*chat).context.sql.clone().read().unwrap(),
b"UPDATE chats SET param=? WHERE id=?\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_text(stmt, 1i32, (*(*chat).param).packed, -1i32, None);
@@ -969,7 +969,7 @@ pub unsafe fn dc_is_contact_in_chat(
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT contact_id FROM chats_contacts WHERE chat_id=? AND contact_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -988,7 +988,7 @@ pub unsafe fn dc_is_contact_in_chat(
pub unsafe fn dc_unarchive_chat(mut context: &dc_context_t, mut chat_id: uint32_t) {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET archived=0 WHERE id=?\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1135,7 +1135,7 @@ unsafe fn set_draft_raw(
_ => {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"INSERT INTO msgs (chat_id, from_id, timestamp, type, state, txt, param, hidden) VALUES (?,?,?, ?,?,?,?,?);\x00"
as *const u8 as
*const libc::c_char);
@@ -1171,7 +1171,7 @@ unsafe fn get_draft_msg_id(mut context: &dc_context_t, mut chat_id: uint32_t) ->
let mut draft_msg_id: uint32_t = 0i32 as uint32_t;
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM msgs WHERE chat_id=? AND state=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1218,26 +1218,26 @@ pub unsafe fn dc_get_chat_msgs(
if chat_id == 1i32 as libc::c_uint {
let mut show_emails: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"show_emails\x00" as *const u8 as *const libc::c_char,
0i32,
);
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN chats ON m.chat_id=chats.id LEFT JOIN contacts ON m.from_id=contacts.id WHERE m.from_id!=1 AND m.from_id!=2 AND m.hidden=0 AND chats.blocked=2 AND contacts.blocked=0 AND m.msgrmsg>=? ORDER BY m.timestamp,m.id;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, if show_emails == 2i32 { 0i32 } else { 1i32 });
} else if chat_id == 5i32 as libc::c_uint {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN contacts ct ON m.from_id=ct.id WHERE m.starred=1 AND m.hidden=0 AND ct.blocked=0 ORDER BY m.timestamp,m.id;\x00"
as *const u8 as *const libc::c_char)
} else {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT m.id, m.timestamp FROM msgs m WHERE m.chat_id=? AND m.hidden=0 ORDER BY m.timestamp,m.id;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1274,7 +1274,7 @@ pub unsafe fn dc_get_msg_cnt(mut context: &dc_context_t, mut chat_id: uint32_t)
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs WHERE chat_id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1293,7 +1293,7 @@ pub unsafe fn dc_get_fresh_msg_cnt(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs WHERE state=10 AND hidden=0 AND chat_id=?;\x00"
as *const u8 as *const libc::c_char,
);
@@ -1310,7 +1310,7 @@ pub unsafe fn dc_marknoticed_chat(mut context: &dc_context_t, mut chat_id: uint3
check = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM msgs WHERE chat_id=? AND state=10;\x00" as *const u8
as *const libc::c_char,
);
@@ -1318,7 +1318,7 @@ pub unsafe fn dc_marknoticed_chat(mut context: &dc_context_t, mut chat_id: uint3
if !(sqlite3_step(check) != 100i32) {
update = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=13 WHERE chat_id=? AND state=10;\x00" as *const u8
as *const libc::c_char,
);
@@ -1341,13 +1341,13 @@ pub unsafe fn dc_marknoticed_all_chats(mut context: &dc_context_t) {
check = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM msgs WHERE state=10;\x00" as *const u8 as *const libc::c_char,
);
if !(sqlite3_step(check) != 100i32) {
update = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=13 WHERE state=10;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_step(update);
@@ -1372,7 +1372,7 @@ pub unsafe fn dc_get_chat_media(
let mut ret: *mut dc_array_t = dc_array_new(100i32 as size_t);
let mut stmt: *mut sqlite3_stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT id FROM msgs WHERE chat_id=? AND (type=? OR type=? OR type=?) ORDER BY timestamp, id;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1464,7 +1464,7 @@ pub unsafe fn dc_archive_chat(
if 0 != archive {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=13 WHERE chat_id=? AND state=10;\x00" as *const u8
as *const libc::c_char,
);
@@ -1474,7 +1474,7 @@ pub unsafe fn dc_archive_chat(
}
let mut stmt_0: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET archived=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt_0, 1i32, archive);
@@ -1499,14 +1499,14 @@ pub unsafe fn dc_delete_chat(mut context: &dc_context_t, mut chat_id: uint32_t)
as *const u8 as *const libc::c_char,
chat_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3)) {
if !(0 == dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(), q3)) {
sqlite3_free(q3 as *mut libc::c_void);
q3 = 0 as *mut libc::c_char;
q3 = sqlite3_mprintf(
b"DELETE FROM msgs WHERE chat_id=%i;\x00" as *const u8 as *const libc::c_char,
chat_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3)) {
if !(0 == dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(), q3)) {
sqlite3_free(q3 as *mut libc::c_void);
q3 = 0 as *mut libc::c_char;
q3 = sqlite3_mprintf(
@@ -1514,7 +1514,8 @@ pub unsafe fn dc_delete_chat(mut context: &dc_context_t, mut chat_id: uint32_t)
as *const libc::c_char,
chat_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3)) {
if !(0 == dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(), q3))
{
sqlite3_free(q3 as *mut libc::c_void);
q3 = 0 as *mut libc::c_char;
q3 = sqlite3_mprintf(
@@ -1522,7 +1523,12 @@ pub unsafe fn dc_delete_chat(mut context: &dc_context_t, mut chat_id: uint32_t)
as *const libc::c_char,
chat_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3))
if !(0
== dc_sqlite3_execute(
context,
&context.sql.clone().read().unwrap(),
q3,
))
{
sqlite3_free(q3 as *mut libc::c_void);
q3 = 0 as *mut libc::c_char;
@@ -1556,7 +1562,7 @@ pub unsafe fn dc_get_chat_contacts(
/* we could also create a list for all contacts in the deaddrop by searching contacts belonging to chats with chats.blocked=2, however, currently this is not needed */
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT cc.contact_id FROM chats_contacts cc LEFT JOIN contacts c ON c.id=cc.contact_id WHERE cc.chat_id=? ORDER BY c.id=1, LOWER(c.name||c.addr), c.id;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -1601,7 +1607,7 @@ pub unsafe fn dc_create_group_chat(
grpid = dc_create_id();
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO chats (type, name, grpid, param) VALUES(?, ?, ?, \'U=1\');\x00" as *const u8
as *const libc::c_char,
);
@@ -1611,7 +1617,7 @@ pub unsafe fn dc_create_group_chat(
if !(sqlite3_step(stmt) != 101i32) {
chat_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"chats\x00" as *const u8 as *const libc::c_char,
b"grpid\x00" as *const u8 as *const libc::c_char,
grpid,
@@ -1649,7 +1655,7 @@ pub unsafe fn dc_add_to_chat_contacts_table(
let mut ret: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO chats_contacts (chat_id, contact_id) VALUES(?, ?)\x00" as *const u8
as *const libc::c_char,
);
@@ -1707,7 +1713,7 @@ pub unsafe fn dc_add_contact_to_chat_ex(
}
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -1794,12 +1800,12 @@ unsafe fn real_group_exists(mut context: &dc_context_t, mut chat_id: uint32_t) -
// check if a group or a verified group exists under the given ID
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
let mut ret: libc::c_int = 0i32;
if (*context.sql.lock().unwrap()).cobj.is_null() || chat_id <= 9i32 as libc::c_uint {
if (*context.sql.clone().read().unwrap()).cobj.is_null() || chat_id <= 9i32 as libc::c_uint {
return 0i32;
}
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM chats WHERE id=? AND (type=120 OR type=130);\x00" as *const u8
as *const libc::c_char,
);
@@ -1829,7 +1835,7 @@ pub unsafe fn dc_set_gossiped_timestamp(
);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET gossiped_timestamp=? WHERE id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1844,7 +1850,7 @@ pub unsafe fn dc_set_gossiped_timestamp(
);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET gossiped_timestamp=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int64(stmt, 1i32, timestamp as sqlite3_int64);
@@ -1918,7 +1924,7 @@ pub unsafe fn dc_remove_contact_from_chat(
chat_id,
contact_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3)) {
if !(0 == dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(), q3)) {
(context.cb)(
context,
Event::CHAT_MODIFIED,
@@ -1943,7 +1949,7 @@ pub unsafe fn dc_set_group_explicitly_left(
if 0 == dc_is_group_explicitly_left(context, grpid) {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO leftgrps (grpid) VALUES(?);\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_text(stmt, 1i32, grpid, -1i32, None);
@@ -1957,7 +1963,7 @@ pub unsafe fn dc_is_group_explicitly_left(
) -> libc::c_int {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM leftgrps WHERE grpid=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_text(stmt, 1i32, grpid, -1i32, None);
@@ -2000,7 +2006,7 @@ pub unsafe fn dc_set_chat_name(
new_name,
chat_id,
);
if !(0 == dc_sqlite3_execute(context, &mut context.sql.lock().unwrap(), q3)) {
if !(0 == dc_sqlite3_execute(context, &context.sql.clone().read().unwrap(), q3)) {
if dc_param_get_int((*chat).param, 'U' as i32, 0i32) == 0i32 {
(*msg).type_0 = 10i32;
(*msg).text = dc_stock_system_msg(
@@ -2141,7 +2147,7 @@ pub unsafe fn dc_forward_msgs(
as *const libc::c_char,
idsstr,
);
stmt = dc_sqlite3_prepare(context, &mut context.sql.lock().unwrap(), q3);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q3);
loop {
if !(sqlite3_step(stmt) == 100i32) {
break;
@@ -2252,7 +2258,7 @@ pub unsafe extern "C" fn dc_chat_get_subtitle(mut chat: *const dc_chat_t) -> *mu
let mut r: libc::c_int = 0;
let mut stmt: *mut sqlite3_stmt =
dc_sqlite3_prepare(
(*chat).context,&mut (*chat).context.sql.lock().unwrap(),
(*chat).context,&mut (*chat).context.sql.clone().read().unwrap(),
b"SELECT c.addr FROM chats_contacts cc LEFT JOIN contacts c ON c.id=cc.contact_id WHERE cc.chat_id=?;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, (*chat).id as libc::c_int);
@@ -2283,7 +2289,7 @@ pub unsafe fn dc_get_chat_contact_cnt(
let mut ret: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM chats_contacts WHERE chat_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -2368,11 +2374,11 @@ pub unsafe fn dc_chat_is_sending_locations(mut chat: *const dc_chat_t) -> libc::
pub unsafe fn dc_get_chat_cnt(mut context: &dc_context_t) -> size_t {
let mut ret: size_t = 0i32 as size_t;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
if !(*context.sql.lock().unwrap()).cobj.is_null() {
if !(*context.sql.clone().read().unwrap()).cobj.is_null() {
/* no database, no chats - this is no error (needed eg. for information) */
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM chats WHERE id>9 AND blocked=0;\x00" as *const u8
as *const libc::c_char,
);
@@ -2400,7 +2406,7 @@ pub unsafe fn dc_get_chat_id_by_grpid(
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, blocked, type FROM chats WHERE grpid=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -2432,7 +2438,7 @@ pub unsafe fn dc_add_device_msg(
if !text.is_null() {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"INSERT INTO msgs (chat_id,from_id,to_id, timestamp,type,state, txt,rfc724_mid) VALUES (?,?,?, ?,?,?, ?,?);\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -2450,7 +2456,7 @@ pub unsafe fn dc_add_device_msg(
if !(sqlite3_step(stmt) != 101i32) {
msg_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"msgs\x00" as *const u8 as *const libc::c_char,
b"rfc724_mid\x00" as *const u8 as *const libc::c_char,
rfc724_mid,

View File

@@ -145,7 +145,7 @@ unsafe fn dc_chatlist_load_from_db(
stmt =
dc_sqlite3_prepare(
(*chatlist).context,
&mut (*chatlist).context.sql.lock().unwrap(),
&mut (*chatlist).context.sql.clone().read().unwrap(),
b"SELECT c.id, m.id FROM chats c LEFT JOIN msgs m ON c.id=m.chat_id AND m.timestamp=( SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id AND (hidden=0 OR (hidden=1 AND state=19))) WHERE c.id>9 AND c.blocked=0 AND c.id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?) GROUP BY c.id ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;\x00"
as *const u8 as *const libc::c_char
);
@@ -155,7 +155,7 @@ unsafe fn dc_chatlist_load_from_db(
stmt =
dc_sqlite3_prepare(
(*chatlist).context,
&mut (*chatlist).context.sql.lock().unwrap(),
&mut (*chatlist).context.sql.clone().read().unwrap(),
b"SELECT c.id, m.id FROM chats c LEFT JOIN msgs m ON c.id=m.chat_id AND m.timestamp=( SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id AND (hidden=0 OR (hidden=1 AND state=19))) WHERE c.id>9 AND c.blocked=0 AND c.archived=1 GROUP BY c.id ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;\x00"
as *const u8 as *const libc::c_char);
current_block = 3437258052017859086;
@@ -172,7 +172,7 @@ unsafe fn dc_chatlist_load_from_db(
stmt =
dc_sqlite3_prepare(
(*chatlist).context,
&mut (*chatlist).context.sql.lock().unwrap(),
&mut (*chatlist).context.sql.clone().read().unwrap(),
b"SELECT c.id, m.id FROM chats c LEFT JOIN msgs m ON c.id=m.chat_id AND m.timestamp=( SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id AND (hidden=0 OR (hidden=1 AND state=19))) WHERE c.id>9 AND c.blocked=0 AND c.archived=0 GROUP BY c.id ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;\x00"
as *const u8 as *const libc::c_char);
current_block = 3437258052017859086;
@@ -187,7 +187,7 @@ unsafe fn dc_chatlist_load_from_db(
stmt =
dc_sqlite3_prepare(
(*chatlist).context,
&mut (*chatlist).context.sql.lock().unwrap(),
&mut (*chatlist).context.sql.clone().read().unwrap(),
b"SELECT c.id, m.id FROM chats c LEFT JOIN msgs m ON c.id=m.chat_id AND m.timestamp=( SELECT MAX(timestamp) FROM msgs WHERE chat_id=c.id AND (hidden=0 OR (hidden=1 AND state=19))) WHERE c.id>9 AND c.blocked=0 AND c.name LIKE ? GROUP BY c.id ORDER BY IFNULL(m.timestamp,0) DESC, m.id DESC;\x00"
as *const u8 as
*const libc::c_char);
@@ -233,7 +233,7 @@ pub unsafe fn dc_get_archived_cnt(mut context: &dc_context_t) -> libc::c_int {
let mut ret: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM chats WHERE blocked=0 AND archived=1;\x00" as *const u8
as *const libc::c_char,
);
@@ -249,7 +249,7 @@ unsafe fn get_last_deaddrop_fresh_msg(mut context: &dc_context_t) -> uint32_t {
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.state=10 AND m.hidden=0 AND c.blocked=2 ORDER BY m.timestamp DESC, m.id DESC;\x00"
as *const u8 as *const libc::c_char);
/* we have an index over the state-column, this should be sufficient as there are typically only few fresh messages */
@@ -346,7 +346,7 @@ pub unsafe fn dc_chatlist_get_summary<'a>(
lastcontact = dc_contact_new((*chatlist).context);
dc_contact_load_from_db(
lastcontact,
&mut (*chatlist).context.sql.lock().unwrap(),
&mut (*chatlist).context.sql.clone().read().unwrap(),
(*lastmsg).from_id,
);
}

View File

@@ -84,7 +84,7 @@ pub unsafe fn dc_is_configured(mut context: &dc_context_t) -> libc::c_int {
return if 0
!= dc_sqlite3_get_config_int(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured\x00" as *const u8 as *const libc::c_char,
0i32,
) {
@@ -129,7 +129,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
if !(0 == dc_alloc_ongoing(context)) {
ongoing_allocated_here = 1i32;
if 0 == dc_sqlite3_is_open(&mut context.sql.lock().unwrap()) {
if 0 == dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
dc_log_error(
context,
0i32,
@@ -208,7 +208,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
dc_loginparam_read(
context,
param,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"\x00" as *const u8 as *const libc::c_char,
);
if (*param).addr.is_null() {
@@ -245,7 +245,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
(*param).addr = oauth2_addr;
dc_sqlite3_set_config(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"addr\x00" as *const u8 as *const libc::c_char,
(*param).addr,
);
@@ -1162,7 +1162,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
=
if 0
!=
dc_sqlite3_get_config_int(context, &mut context.sql.lock().unwrap(),
dc_sqlite3_get_config_int(context, &context.sql.clone().read().unwrap(),
b"mvbox_watch\x00"
as
*const u8
@@ -1172,7 +1172,7 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
||
0
!=
dc_sqlite3_get_config_int(context, &mut context.sql.lock().unwrap(),
dc_sqlite3_get_config_int(context, &context.sql.clone().read().unwrap(),
b"mvbox_move\x00"
as
*const u8
@@ -1215,13 +1215,13 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &dc_context_t, _job: *mut
as
uintptr_t);
dc_loginparam_write(context, param,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00"
as
*const u8
as
*const libc::c_char);
dc_sqlite3_set_config_int(context, &mut context.sql.lock().unwrap(),
dc_sqlite3_set_config_int(context, &context.sql.clone().read().unwrap(),
b"configured\x00"
as
*const u8
@@ -1427,19 +1427,19 @@ pub unsafe fn dc_configure_folders(
}
dc_sqlite3_set_config_int(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"folders_configured\x00" as *const u8 as *const libc::c_char,
3i32,
);
dc_sqlite3_set_config(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
mvbox_folder,
);
dc_sqlite3_set_config(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
sentbox_folder,
);
@@ -2104,7 +2104,7 @@ pub unsafe fn dc_connect_to_configured_imap(
ret_connected = 1i32
} else if dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured\x00" as *const u8 as *const libc::c_char,
0i32,
) == 0i32
@@ -2118,7 +2118,7 @@ pub unsafe fn dc_connect_to_configured_imap(
dc_loginparam_read(
context,
param,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00" as *const u8 as *const libc::c_char,
);
/*the trailing underscore is correct*/

View File

@@ -32,7 +32,7 @@ pub struct dc_contact_t<'a> {
pub unsafe fn dc_marknoticed_contact(context: &dc_context_t, contact_id: uint32_t) {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=13 WHERE from_id=? AND state=10;\x00" as *const u8
as *const libc::c_char,
);
@@ -77,7 +77,7 @@ pub unsafe fn dc_lookup_contact_id_by_addr(
addr_normalized = dc_addr_normalize(addr);
addr_self = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -86,7 +86,7 @@ pub unsafe fn dc_lookup_contact_id_by_addr(
} else {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT id FROM contacts WHERE addr=?1 COLLATE NOCASE AND id>?2 AND origin>=?3 AND blocked=0;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_text(
@@ -161,15 +161,12 @@ pub unsafe fn dc_block_contact(
let mut contact: *mut dc_contact_t = dc_contact_new(context);
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
if !(contact_id <= 9i32 as libc::c_uint) {
if 0 != dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
contact_id,
) && (*contact).blocked != new_blocking
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)
&& (*contact).blocked != new_blocking
{
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE contacts SET blocked=? WHERE id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -182,7 +179,7 @@ pub unsafe fn dc_block_contact(
stmt = 0 as *mut sqlite3_stmt;
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"UPDATE chats SET blocked=? WHERE type=? AND id IN (SELECT chat_id FROM chats_contacts WHERE contact_id=?);\x00"
as *const u8 as
*const libc::c_char);
@@ -289,7 +286,7 @@ pub unsafe fn dc_contact_empty(mut contact: *mut dc_contact_t) {
/* contacts with at least this origin value start a new "normal" chat, defaults to off */
pub unsafe fn dc_contact_load_from_db(
contact: *mut dc_contact_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
contact_id: uint32_t,
) -> libc::c_int {
let mut current_block: u64;
@@ -341,11 +338,7 @@ pub unsafe fn dc_is_contact_blocked(
) -> libc::c_int {
let mut is_blocked: libc::c_int = 0i32;
let mut contact: *mut dc_contact_t = dc_contact_new(context);
if 0 != dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
contact_id,
) {
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id) {
if 0 != (*contact).blocked {
is_blocked = 1i32
}
@@ -377,7 +370,7 @@ pub unsafe fn dc_add_or_lookup_contact(
addr = dc_addr_normalize(addr__);
addr_self = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -398,7 +391,7 @@ pub unsafe fn dc_add_or_lookup_contact(
} else {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT id, name, addr, origin, authname FROM contacts WHERE addr=? COLLATE NOCASE;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_text(stmt, 1i32, addr as *const libc::c_char, -1i32, None);
@@ -436,7 +429,7 @@ pub unsafe fn dc_add_or_lookup_contact(
{
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE contacts SET name=?, addr=?, origin=?, authname=? WHERE id=?;\x00"
as *const u8 as *const libc::c_char,
);
@@ -481,7 +474,7 @@ pub unsafe fn dc_add_or_lookup_contact(
if 0 != update_name {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"UPDATE chats SET name=? WHERE type=? AND id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?);\x00"
as *const u8 as
*const libc::c_char);
@@ -497,7 +490,7 @@ pub unsafe fn dc_add_or_lookup_contact(
stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO contacts (name, addr, origin) VALUES(?, ?, ?);\x00" as *const u8
as *const libc::c_char,
);
@@ -517,7 +510,7 @@ pub unsafe fn dc_add_or_lookup_contact(
if sqlite3_step(stmt) == 101i32 {
row_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"contacts\x00" as *const u8 as *const libc::c_char,
b"addr\x00" as *const u8 as *const libc::c_char,
addr,
@@ -630,7 +623,7 @@ pub unsafe fn dc_get_contacts(
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -648,7 +641,7 @@ pub unsafe fn dc_get_contacts(
} else {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT c.id FROM contacts c LEFT JOIN acpeerstates ps ON c.addr=ps.addr WHERE c.addr!=?1 AND c.id>?2 AND c.origin>=?3 AND c.blocked=0 AND (c.name LIKE ?4 OR c.addr LIKE ?5) AND (1=?6 OR LENGTH(ps.verified_key_fingerprint)!=0) ORDER BY LOWER(c.name||c.addr),c.id;\x00"
as *const u8 as
*const libc::c_char);
@@ -668,7 +661,7 @@ pub unsafe fn dc_get_contacts(
);
self_name = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"displayname\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -685,7 +678,7 @@ pub unsafe fn dc_get_contacts(
} else {
stmt =
dc_sqlite3_prepare(
context,&mut context.sql.clone().lock().unwrap(),
context,&context.sql.clone().read().unwrap(),
b"SELECT id FROM contacts WHERE addr!=?1 AND id>?2 AND origin>=?3 AND blocked=0 ORDER BY LOWER(name||addr),id;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_text(stmt, 1i32, self_addr, -1i32, None);
@@ -720,7 +713,7 @@ pub unsafe fn dc_get_blocked_cnt(context: &dc_context_t) -> libc::c_int {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM contacts WHERE id>? AND blocked!=0\x00" as *const u8
as *const libc::c_char,
);
@@ -739,7 +732,7 @@ pub unsafe fn dc_get_blocked_contacts(mut context: &dc_context_t) -> *mut dc_arr
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM contacts WHERE id>? AND blocked!=0 ORDER BY LOWER(name||addr),id;\x00"
as *const u8 as *const libc::c_char,
);
@@ -777,29 +770,23 @@ pub unsafe fn dc_get_contact_encrinfo(
eos: 0 as *mut libc::c_char,
};
dc_strbuilder_init(&mut ret, 0i32);
if !(0
== dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
contact_id,
))
{
if !(0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)) {
dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*contact).addr,
);
dc_loginparam_read(
context,
loginparam,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00" as *const u8 as *const libc::c_char,
);
dc_key_load_self_public(
context,
self_key,
(*loginparam).addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
);
if !dc_apeerstate_peek_key(peerstate, 0i32).is_null() {
p = dc_stock_str(
@@ -818,7 +805,7 @@ pub unsafe fn dc_get_contact_encrinfo(
context,
self_key,
(*loginparam).addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
);
}
dc_strbuilder_cat(&mut ret, b" \x00" as *const u8 as *const libc::c_char);
@@ -923,7 +910,7 @@ pub unsafe fn dc_delete_contact(
if !contact_id <= 9i32 as libc::c_uint {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM chats_contacts WHERE contact_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -933,7 +920,7 @@ pub unsafe fn dc_delete_contact(
stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs WHERE from_id=? OR to_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -944,7 +931,7 @@ pub unsafe fn dc_delete_contact(
stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM contacts WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, contact_id as libc::c_int);
@@ -968,7 +955,7 @@ pub unsafe fn dc_get_contact(
mut contact_id: uint32_t,
) -> *mut dc_contact_t {
let mut ret: *mut dc_contact_t = dc_contact_new(context);
if 0 == dc_contact_load_from_db(ret, &mut context.sql.clone().lock().unwrap(), contact_id) {
if 0 == dc_contact_load_from_db(ret, &context.sql.clone().read().unwrap(), contact_id) {
dc_contact_unref(ret);
ret = 0 as *mut dc_contact_t
}
@@ -1085,7 +1072,7 @@ pub unsafe fn dc_contact_is_verified_ex<'a>(
peerstate_to_delete = dc_apeerstate_new((*contact).context);
if 0 == dc_apeerstate_load_by_addr(
peerstate_to_delete,
&mut (*contact).context.sql.clone().lock().unwrap(),
&mut (*contact).context.sql.clone().read().unwrap(),
(*contact).addr,
) {
current_block = 8667923638376902112;
@@ -1134,7 +1121,7 @@ pub unsafe fn dc_addr_equals_self(
normalized_addr = dc_addr_normalize(addr);
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -1158,11 +1145,7 @@ pub unsafe fn dc_addr_equals_contact(
let mut addr_are_equal: libc::c_int = 0i32;
if !addr.is_null() {
let mut contact: *mut dc_contact_t = dc_contact_new(context);
if 0 != dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
contact_id,
) {
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id) {
if !(*contact).addr.is_null() {
let mut normalized_addr: *mut libc::c_char = dc_addr_normalize(addr);
if strcasecmp((*contact).addr, normalized_addr) == 0i32 {
@@ -1179,10 +1162,10 @@ pub unsafe fn dc_addr_equals_contact(
pub unsafe fn dc_get_real_contact_cnt(mut context: &dc_context_t) -> size_t {
let mut ret: size_t = 0i32 as size_t;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
if !context.sql.clone().lock().unwrap().cobj.is_null() {
if !context.sql.clone().read().unwrap().cobj.is_null() {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM contacts WHERE id>?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, 9i32);
@@ -1205,13 +1188,7 @@ pub unsafe fn dc_get_contact_origin(
}
let mut contact: *mut dc_contact_t = dc_contact_new(context);
*ret_blocked = 0i32;
if !(0
== dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
contact_id,
))
{
if !(0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)) {
/* we could optimize this by loading only the needed fields */
if 0 != (*contact).blocked {
*ret_blocked = 1i32
@@ -1228,10 +1205,10 @@ pub unsafe fn dc_real_contact_exists(
) -> libc::c_int {
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
let mut ret: libc::c_int = 0i32;
if !(context.sql.clone().lock().unwrap().cobj.is_null() || contact_id <= 9i32 as libc::c_uint) {
if !(context.sql.clone().read().unwrap().cobj.is_null() || contact_id <= 9i32 as libc::c_uint) {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM contacts WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, contact_id as libc::c_int);
@@ -1249,7 +1226,7 @@ pub unsafe fn dc_scaleup_contact_origin(
) {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE contacts SET origin=? WHERE id=? AND origin<?;\x00" as *const u8
as *const libc::c_char,
);

View File

@@ -28,7 +28,7 @@ pub struct dc_context_t {
pub userdata: *mut libc::c_void,
pub dbfile: *mut libc::c_char,
pub blobdir: *mut libc::c_char,
pub sql: Arc<Mutex<dc_sqlite3_t>>,
pub sql: Arc<RwLock<dc_sqlite3_t>>,
pub inbox: Arc<Mutex<dc_imap_t>>,
pub perform_inbox_jobs_needed: Arc<RwLock<i32>>,
pub probe_imap_network: Arc<RwLock<i32>>,
@@ -126,7 +126,7 @@ pub fn dc_context_new(
cb,
os_name: unsafe { dc_strdup_keep_null(os_name) },
running_state: Arc::new(RwLock::new(Default::default())),
sql: Arc::new(Mutex::new(dc_sqlite3_new())),
sql: Arc::new(RwLock::new(dc_sqlite3_new())),
smtp: Arc::new(Mutex::new(Smtp::new())),
smtp_state: Arc::new((Mutex::new(Default::default()), Condvar::new())),
oauth2_critical: Arc::new(Mutex::new(())),
@@ -240,12 +240,7 @@ unsafe fn cb_set_config(
key: *const libc::c_char,
value: *const libc::c_char,
) {
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
value,
);
dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
}
/* *
* The following three callback are given to dc_imap_new() to read/write configuration
@@ -259,7 +254,7 @@ unsafe fn cb_get_config(
key: *const libc::c_char,
def: *const libc::c_char,
) -> *mut libc::c_char {
dc_sqlite3_get_config(context, &mut context.sql.clone().lock().unwrap(), key, def)
dc_sqlite3_get_config(context, &context.sql.clone().read().unwrap(), key, def)
}
pub unsafe fn dc_context_unref(context: &mut dc_context_t) {
@@ -292,7 +287,7 @@ pub unsafe fn dc_context_unref(context: &mut dc_context_t) {
.unwrap(),
);
dc_sqlite3_unref(context, &mut context.sql.clone().lock().unwrap());
dc_sqlite3_unref(context, &mut context.sql.clone().write().unwrap());
dc_jobthread_exit(&mut context.sentbox_thread.clone().lock().unwrap());
dc_jobthread_exit(&mut context.mvbox_thread.clone().lock().unwrap());
@@ -328,8 +323,8 @@ pub unsafe fn dc_close(context: &mut dc_context_t) {
);
context.smtp.clone().lock().unwrap().disconnect();
if 0 != dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap()) {
dc_sqlite3_close(context, &mut context.sql.clone().lock().unwrap());
if 0 != dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
dc_sqlite3_close(context, &mut context.sql.clone().write().unwrap());
}
free(context.dbfile as *mut libc::c_void);
context.dbfile = 0 as *mut libc::c_char;
@@ -338,7 +333,7 @@ pub unsafe fn dc_close(context: &mut dc_context_t) {
}
pub unsafe fn dc_is_open(context: &dc_context_t) -> libc::c_int {
dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap())
dc_sqlite3_is_open(&context.sql.clone().read().unwrap())
}
pub unsafe fn dc_get_userdata(context: &mut dc_context_t) -> *mut libc::c_void {
@@ -368,7 +363,7 @@ pub unsafe fn dc_open(
if !(0
== dc_sqlite3_open(
context,
&mut context.sql.clone().lock().unwrap(),
&mut context.sql.clone().write().unwrap(),
dbfile,
0i32,
))
@@ -400,46 +395,27 @@ pub unsafe fn dc_set_config(
if strcmp(key, b"selfavatar\x00" as *const u8 as *const libc::c_char) == 0 && !value.is_null() {
rel_path = dc_strdup(value);
if !(0 == dc_make_rel_and_copy(context, &mut rel_path)) {
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
rel_path,
)
ret =
dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, rel_path)
}
} else if strcmp(key, b"inbox_watch\x00" as *const u8 as *const libc::c_char) == 0 {
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
value,
);
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
dc_interrupt_imap_idle(context);
} else if strcmp(
key,
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
) == 0
{
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
value,
);
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
dc_interrupt_sentbox_idle(context);
} else if strcmp(key, b"mvbox_watch\x00" as *const u8 as *const libc::c_char) == 0 {
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
value,
);
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
dc_interrupt_mvbox_idle(context);
} else if strcmp(key, b"selfstatus\x00" as *const u8 as *const libc::c_char) == 0 {
let mut def = dc_stock_str(context, 13);
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
key,
if value.is_null() || strcmp(value, def) == 0 {
0 as *const libc::c_char
@@ -449,12 +425,7 @@ pub unsafe fn dc_set_config(
);
free(def as *mut libc::c_void);
} else {
ret = dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
key,
value,
);
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
}
free(rel_path as *mut libc::c_void);
ret
@@ -532,7 +503,7 @@ pub unsafe fn dc_get_config(context: &dc_context_t, key: *const libc::c_char) ->
if strcmp(key, b"selfavatar\x00" as *const u8 as *const libc::c_char) == 0 {
let mut rel_path: *mut libc::c_char = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
key,
0 as *const libc::c_char,
);
@@ -543,7 +514,7 @@ pub unsafe fn dc_get_config(context: &dc_context_t, key: *const libc::c_char) ->
} else {
value = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
key,
0 as *const libc::c_char,
)
@@ -702,18 +673,18 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
dc_loginparam_read(
context,
l,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"\x00" as *const u8 as *const libc::c_char,
);
dc_loginparam_read(
context,
l2,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00" as *const u8 as *const libc::c_char,
);
displayname = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"displayname\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -723,31 +694,31 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
contacts = dc_get_real_contact_cnt(context) as libc::c_int;
is_configured = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured\x00" as *const u8 as *const libc::c_char,
0,
);
dbversion = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"dbversion\x00" as *const u8 as *const libc::c_char,
0,
);
e2ee_enabled = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
1,
);
mdns_enabled = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1,
);
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM keypairs;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_step(stmt);
@@ -755,7 +726,7 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
sqlite3_finalize(stmt);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM acpeerstates;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_step(stmt);
@@ -765,7 +736,7 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
context,
self_public,
(*l2).addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
) {
fingerprint_str = dc_key_get_fingerprint(context, self_public)
} else {
@@ -775,43 +746,43 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
l2_readable_str = dc_loginparam_get_readable(l2);
inbox_watch = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"inbox_watch\x00" as *const u8 as *const libc::c_char,
1,
);
sentbox_watch = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
1,
);
mvbox_watch = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_watch\x00" as *const u8 as *const libc::c_char,
1,
);
mvbox_move = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_move\x00" as *const u8 as *const libc::c_char,
1,
);
folders_configured = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"folders_configured\x00" as *const u8 as *const libc::c_char,
0,
);
configured_sentbox_folder = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
b"<unset>\x00" as *const u8 as *const libc::c_char,
);
configured_mvbox_folder = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
b"<unset>\x00" as *const u8 as *const libc::c_char,
);
@@ -924,7 +895,7 @@ pub unsafe fn dc_get_fresh_msgs(context: &dc_context_t) -> *mut dc_array_t {
if !ret.is_null() {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id FROM msgs m LEFT JOIN contacts ct \
ON m.from_id=ct.id LEFT JOIN chats c ON m.chat_id=c.id WHERE m.state=? \
AND m.hidden=0 \
@@ -970,7 +941,7 @@ pub unsafe fn dc_search_msgs(
if 0 != chat_id {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN contacts ct ON m.from_id=ct.id WHERE m.chat_id=? \
AND m.hidden=0 \
AND ct.blocked=0 AND (txt LIKE ? OR ct.name LIKE ?) ORDER BY m.timestamp,m.id;\x00"
@@ -983,7 +954,7 @@ pub unsafe fn dc_search_msgs(
let mut show_deaddrop = 0;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN contacts ct ON m.from_id=ct.id \
LEFT JOIN chats c ON m.chat_id=c.id WHERE m.chat_id>9 AND m.hidden=0 \
AND (c.blocked=0 OR c.blocked=?) \
@@ -1041,7 +1012,7 @@ pub unsafe fn dc_is_sentbox(
) -> libc::c_int {
let mut sentbox_name = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -1060,7 +1031,7 @@ pub unsafe fn dc_is_sentbox(
pub unsafe fn dc_is_mvbox(context: &dc_context_t, folder_name: *const libc::c_char) -> libc::c_int {
let mut mvbox_name = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);

View File

@@ -75,7 +75,7 @@ pub unsafe fn dc_e2ee_encrypt(
(*autocryptheader).prefer_encrypt = 0i32;
if 0 != dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
) {
@@ -83,7 +83,7 @@ pub unsafe fn dc_e2ee_encrypt(
}
(*autocryptheader).addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -113,7 +113,7 @@ pub unsafe fn dc_e2ee_encrypt(
if !(strcasecmp(recipient_addr, (*autocryptheader).addr) == 0i32) {
if 0 != dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
recipient_addr,
) && {
key_to_use = dc_apeerstate_peek_key(peerstate, min_verified);
@@ -142,7 +142,7 @@ pub unsafe fn dc_e2ee_encrypt(
context,
sign_key,
(*autocryptheader).addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
) {
do_encrypt = 0i32
}
@@ -522,7 +522,7 @@ unsafe fn load_or_generate_self_public_key(
context,
public_key,
self_addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
) {
/* create the keypair - this may take a moment, however, as this is in a thread, this is no big deal */
if 0 != s_in_key_creation {
@@ -583,7 +583,7 @@ unsafe fn load_or_generate_self_public_key(
private_key,
self_addr,
1i32,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
)
{
/*set default*/
@@ -677,35 +677,27 @@ pub unsafe fn dc_e2ee_decrypt(
if message_time > 0i32 as libc::c_long && !from.is_null() {
if 0 != dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
from,
) {
if !autocryptheader.is_null() {
dc_apeerstate_apply_header(peerstate, autocryptheader, message_time);
dc_apeerstate_save_to_db(
peerstate,
&mut context.sql.clone().lock().unwrap(),
0i32,
);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 0i32);
} else if message_time > (*peerstate).last_seen_autocrypt
&& 0 == contains_report(in_out_message)
{
dc_apeerstate_degrade_encryption(peerstate, message_time);
dc_apeerstate_save_to_db(
peerstate,
&mut context.sql.clone().lock().unwrap(),
0i32,
);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 0i32);
}
} else if !autocryptheader.is_null() {
dc_apeerstate_init_from_header(peerstate, autocryptheader, message_time);
dc_apeerstate_save_to_db(peerstate, &mut context.sql.clone().lock().unwrap(), 1i32);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 1i32);
}
}
/* load private key for decryption */
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -715,13 +707,13 @@ pub unsafe fn dc_e2ee_decrypt(
context,
private_keyring,
self_addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
))
{
if (*peerstate).last_seen == 0i32 as libc::c_long {
dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
from,
);
}
@@ -812,20 +804,20 @@ unsafe fn update_gossip_peerstates(
let mut peerstate: *mut dc_apeerstate_t = dc_apeerstate_new(context);
if 0 == dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*gossip_header).addr,
) {
dc_apeerstate_init_from_gossip(peerstate, gossip_header, message_time);
dc_apeerstate_save_to_db(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
1i32,
);
} else {
dc_apeerstate_apply_gossip(peerstate, gossip_header, message_time);
dc_apeerstate_save_to_db(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
0i32,
);
}
@@ -1226,7 +1218,7 @@ pub unsafe fn dc_ensure_secret_key_exists(mut context: &dc_context_t) -> libc::c
if !public_key.is_null() {
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);

View File

@@ -487,8 +487,8 @@ pub unsafe fn dc_imap_is_connected(imap: &dc_imap_t) -> libc::c_int {
}
pub unsafe fn dc_imap_fetch(context: &dc_context_t, imap: &mut dc_imap_t) -> libc::c_int {
let mut success: libc::c_int = 0;
if !0 == imap.connected {
let mut success = 0;
if 0 != imap.connected {
setup_handle_if_needed(context, imap);
while fetch_from_single_folder(context, imap, imap.watch_folder) > 0 {}
success = 1;
@@ -781,6 +781,7 @@ unsafe fn fetch_from_single_folder(
mailimap_fetch_list_free(fetch_result);
fetch_result = 0 as *mut clist
}
read_cnt as libc::c_int
}

View File

@@ -133,7 +133,7 @@ pub unsafe fn dc_check_password(
dc_loginparam_read(
context,
loginparam,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00" as *const u8 as *const libc::c_char,
);
if ((*loginparam).mail_pw.is_null()
@@ -292,7 +292,7 @@ pub unsafe extern "C" fn dc_render_setup_file(
if !(0 == dc_ensure_secret_key_exists(context)) {
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -300,11 +300,11 @@ pub unsafe extern "C" fn dc_render_setup_file(
context,
curr_private_key,
self_addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
);
let mut e2ee_enabled: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -522,7 +522,7 @@ unsafe fn set_self_key(
} else {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM keypairs WHERE public_key=? OR private_key=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -540,13 +540,13 @@ unsafe fn set_self_key(
if 0 != set_default {
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE keypairs SET is_default=0;\x00" as *const u8 as *const libc::c_char,
);
}
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -556,7 +556,7 @@ unsafe fn set_self_key(
private_key,
self_addr,
set_default,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
) {
dc_log_error(
context,
@@ -572,7 +572,7 @@ unsafe fn set_self_key(
{
dc_sqlite3_set_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
0i32,
);
@@ -583,7 +583,7 @@ unsafe fn set_self_key(
{
dc_sqlite3_set_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -733,7 +733,7 @@ pub unsafe fn dc_job_do_DC_JOB_IMEX_IMAP(mut context: &dc_context_t, mut job: *m
10i32 as uintptr_t,
0i32 as uintptr_t,
);
if 0 == dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap()) {
if 0 == dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
dc_log_error(
context,
0i32,
@@ -986,8 +986,8 @@ unsafe fn import_backup(
b"Cannot import backups to accounts in use.\x00" as *const u8 as *const libc::c_char,
);
} else {
if 0 != dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap()) {
dc_sqlite3_close(context, &mut context.sql.clone().lock().unwrap());
if 0 != dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
dc_sqlite3_close(context, &mut context.sql.clone().write().unwrap());
}
dc_delete_file(context, context.dbfile);
if 0 != dc_file_exist(context, context.dbfile) {
@@ -1003,14 +1003,14 @@ unsafe fn import_backup(
if !(0
== dc_sqlite3_open(
context,
&mut context.sql.clone().lock().unwrap(),
&mut context.sql.clone().write().unwrap(),
context.dbfile,
0i32,
))
{
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM backup_blobs;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_step(stmt);
@@ -1019,7 +1019,7 @@ unsafe fn import_backup(
stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT file_name, file_content FROM backup_blobs ORDER BY id;\x00"
as *const u8 as *const libc::c_char,
);
@@ -1094,12 +1094,12 @@ unsafe fn import_backup(
stmt = 0 as *mut sqlite3_stmt;
dc_sqlite3_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DROP TABLE backup_blobs;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_try_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"VACUUM;\x00" as *const u8 as *const libc::c_char,
);
success = 1i32
@@ -1159,10 +1159,10 @@ unsafe fn export_backup(mut context: &dc_context_t, mut dir: *const libc::c_char
dc_housekeeping(context);
dc_sqlite3_try_execute(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"VACUUM;\x00" as *const u8 as *const libc::c_char,
);
dc_sqlite3_close(context, &mut context.sql.clone().lock().unwrap());
dc_sqlite3_close(context, &mut context.sql.clone().write().unwrap());
closed = 1i32;
dc_log_info(
context,
@@ -1175,7 +1175,7 @@ unsafe fn export_backup(mut context: &dc_context_t, mut dir: *const libc::c_char
/* error already logged */
dc_sqlite3_open(
context,
&mut context.sql.clone().lock().unwrap(),
&mut context.sql.clone().write().unwrap(),
context.dbfile,
0i32,
);
@@ -1394,7 +1394,7 @@ unsafe fn export_backup(mut context: &dc_context_t, mut dir: *const libc::c_char
if 0 != closed {
dc_sqlite3_open(
context,
&mut context.sql.clone().lock().unwrap(),
&mut context.sql.clone().write().unwrap(),
context.dbfile,
0i32,
);
@@ -1558,7 +1558,7 @@ unsafe fn export_self_keys(
let mut private_key: *mut dc_key_t = dc_key_new();
let stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, public_key, private_key, is_default FROM keypairs;\x00" as *const u8
as *const libc::c_char,
);

View File

@@ -91,7 +91,7 @@ unsafe fn dc_job_perform(
select_stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, action, foreign_id, param, added_timestamp, desired_timestamp, tries FROM jobs WHERE thread=? AND desired_timestamp<=? ORDER BY action DESC, added_timestamp;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int64(select_stmt, 1i32, thread as sqlite3_int64);
@@ -100,7 +100,7 @@ unsafe fn dc_job_perform(
select_stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, action, foreign_id, param, added_timestamp, desired_timestamp, tries FROM jobs WHERE thread=? AND tries>0 ORDER BY desired_timestamp, action DESC;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int64(select_stmt, 1i32, thread as sqlite3_int64);
@@ -268,7 +268,7 @@ unsafe fn dc_job_perform(
unsafe fn dc_job_delete(mut context: &dc_context_t, mut job: *const dc_job_t) {
let mut delete_stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM jobs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(delete_stmt, 1i32, (*job).job_id as libc::c_int);
@@ -293,7 +293,7 @@ unsafe fn get_backoff_time_offset(mut c_tries: libc::c_int) -> time_t {
unsafe fn dc_job_update(mut context: &dc_context_t, mut job: *const dc_job_t) {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE jobs SET desired_timestamp=?, tries=?, param=? WHERE id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -328,7 +328,7 @@ unsafe extern "C" fn dc_job_do_DC_JOB_SEND(mut context: &dc_context_t, mut job:
dc_loginparam_read(
context,
loginparam,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_\x00" as *const u8 as *const libc::c_char,
);
let mut connected = context
@@ -422,7 +422,7 @@ unsafe extern "C" fn dc_job_do_DC_JOB_SEND(mut context: &dc_context_t, mut job:
dc_update_msg_state(context, (*job).foreign_id, 26i32);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT chat_id FROM msgs WHERE id=?\x00" as *const u8
as *const libc::c_char,
);
@@ -486,7 +486,7 @@ unsafe fn dc_job_do_DC_JOB_MOVE_MSG(mut context: &dc_context_t, mut job: *mut dc
if !(0 == dc_msg_load_from_db(msg, context, (*job).foreign_id)) {
if dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"folders_configured\x00" as *const u8 as *const libc::c_char,
0i32,
) < 3i32
@@ -499,7 +499,7 @@ unsafe fn dc_job_do_DC_JOB_MOVE_MSG(mut context: &dc_context_t, mut job: *mut dc
}
dest_folder = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -604,7 +604,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MDN_ON_IMAP(
if 0 != dc_param_get_int((*job).param, 'M' as i32, 0i32) {
if dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"folders_configured\x00" as *const u8 as *const libc::c_char,
0i32,
) < 3i32
@@ -617,7 +617,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MDN_ON_IMAP(
}
dest_folder = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -680,7 +680,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MSG_ON_IMAP(
if 0 != dc_param_get_int((*msg).param, 'r' as i32, 0i32)
&& 0 != dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
)
@@ -738,7 +738,7 @@ unsafe fn dc_job_do_DC_JOB_MARKSEEN_MSG_ON_IMAP(
if 0 != dc_param_get_int((*msg).param, 'r' as i32, 0i32)
&& 0 != dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
)
@@ -919,7 +919,7 @@ pub unsafe fn dc_job_add(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO jobs (added_timestamp, thread, action, foreign_id, param, desired_timestamp) VALUES (?,?,?,?,?,?);\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int64(stmt, 1i32, timestamp as sqlite3_int64);
@@ -1041,7 +1041,7 @@ unsafe fn dc_job_do_DC_JOB_DELETE_MSG_ON_IMAP(mut context: &dc_context_t, mut jo
pub unsafe fn dc_job_kill_action(mut context: &dc_context_t, mut action: libc::c_int) {
let mut stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM jobs WHERE action=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, action);
@@ -1056,7 +1056,7 @@ pub unsafe fn dc_perform_imap_fetch(mut context: &dc_context_t) {
}
if dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"inbox_watch\x00" as *const u8 as *const libc::c_char,
1i32,
) == 0i32
@@ -1117,7 +1117,7 @@ pub unsafe fn dc_perform_imap_idle(context: &dc_context_t) {
pub unsafe fn dc_perform_mvbox_fetch(context: &dc_context_t) {
let mut use_network: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_watch\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -1131,7 +1131,7 @@ pub unsafe fn dc_perform_mvbox_fetch(context: &dc_context_t) {
pub unsafe fn dc_perform_mvbox_idle(context: &dc_context_t) {
let mut use_network: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_watch\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -1149,7 +1149,7 @@ pub unsafe fn dc_interrupt_mvbox_idle(context: &dc_context_t) {
pub unsafe fn dc_perform_sentbox_fetch(context: &dc_context_t) {
let mut use_network: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -1163,7 +1163,7 @@ pub unsafe fn dc_perform_sentbox_fetch(context: &dc_context_t) {
pub unsafe fn dc_perform_sentbox_idle(context: &dc_context_t) {
let mut use_network: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -1263,7 +1263,7 @@ pub unsafe fn dc_perform_smtp_idle(mut context: &dc_context_t) {
unsafe fn get_next_wakeup_time(context: &dc_context_t, thread: libc::c_int) -> Duration {
let stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT MIN(desired_timestamp) FROM jobs WHERE thread=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1308,7 +1308,7 @@ pub unsafe fn dc_job_action_exists(
let mut stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM jobs WHERE action=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, action);

View File

@@ -181,7 +181,7 @@ unsafe fn connect_to_imap(context: &dc_context_t, jobthread: &mut dc_jobthread_t
if !(0 == ret_connected) {
if dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"folders_configured\x00" as *const u8 as *const libc::c_char,
0,
) < 3
@@ -190,7 +190,7 @@ unsafe fn connect_to_imap(context: &dc_context_t, jobthread: &mut dc_jobthread_t
}
mvbox_name = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
jobthread.folder_config_name,
0 as *const libc::c_char,
);

View File

@@ -257,7 +257,7 @@ pub unsafe fn dc_key_save_self_keypair(
private_key: *const dc_key_t,
addr: *const libc::c_char,
is_default: libc::c_int,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
) -> libc::c_int {
let mut success: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
@@ -295,7 +295,7 @@ pub unsafe fn dc_key_load_self_public(
context: &dc_context_t,
key: *mut dc_key_t,
self_addr: *const libc::c_char,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
) -> libc::c_int {
let mut success: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
@@ -320,7 +320,7 @@ pub unsafe fn dc_key_load_self_private(
context: &dc_context_t,
key: *mut dc_key_t,
self_addr: *const libc::c_char,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
) -> libc::c_int {
let mut success: libc::c_int = 0i32;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;

View File

@@ -58,7 +58,7 @@ pub unsafe fn dc_keyring_load_self_private_for_decrypting(
context: &dc_context_t,
keyring: *mut dc_keyring_t,
self_addr: *const libc::c_char,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
) -> libc::c_int {
if keyring.is_null() || self_addr.is_null() {
return 0i32;

View File

@@ -56,7 +56,7 @@ pub unsafe fn dc_send_locations_to_chat(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET locations_send_begin=?, locations_send_until=? WHERE id=?\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int64(
@@ -138,7 +138,7 @@ pub unsafe extern "C" fn dc_is_sending_locations_to_chat(
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM chats WHERE (? OR id=?) AND locations_send_until>?;\x00" as *const u8
as *const libc::c_char,
);
@@ -174,7 +174,7 @@ pub unsafe fn dc_set_location(
} else {
stmt_chats = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM chats WHERE locations_send_until>?;\x00" as *const u8
as *const libc::c_char,
);
@@ -184,7 +184,7 @@ pub unsafe fn dc_set_location(
stmt_insert =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO locations (latitude, longitude, accuracy, timestamp, chat_id, from_id) VALUES (?,?,?,?,?,?);\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_double(stmt_insert, 1i32, latitude);
@@ -225,7 +225,7 @@ pub unsafe fn dc_get_locations(
}
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT l.id, l.latitude, l.longitude, l.accuracy, l.timestamp, l.independent \
m.id, l.from_id, l.chat_id, m.txt \
FROM locations l LEFT JOIN msgs m ON l.id=m.location_id WHERE (? OR l.chat_id=?) \
@@ -299,7 +299,7 @@ pub unsafe fn dc_delete_all_locations(mut context: &dc_context_t) {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM locations;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_step(stmt);
@@ -335,14 +335,14 @@ pub unsafe fn dc_get_location_kml(
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT locations_send_begin, locations_send_until, locations_last_sent FROM chats WHERE id=?;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -359,7 +359,7 @@ pub unsafe fn dc_get_location_kml(
self_addr);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, latitude, longitude, accuracy, timestamp\
FROM locations WHERE from_id=? \
AND timestamp>=? \
@@ -489,7 +489,7 @@ pub unsafe fn dc_set_kml_sent_timestamp(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET locations_last_sent=? WHERE id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -506,7 +506,7 @@ pub unsafe fn dc_set_msg_location_id(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET location_id=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int64(stmt, 1i32, location_id as sqlite3_int64);
@@ -528,13 +528,13 @@ pub unsafe fn dc_save_locations(
if !(chat_id <= 9i32 as libc::c_uint || locations.is_null()) {
stmt_test = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM locations WHERE timestamp=? AND from_id=?\x00" as *const u8
as *const libc::c_char,
);
stmt_insert = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO locations\
(timestamp, from_id, chat_id, latitude, longitude, accuracy, independent) \
VALUES (?,?,?,?,?,?,?);\x00" as *const u8 as *const libc::c_char,
@@ -561,7 +561,7 @@ pub unsafe fn dc_save_locations(
newest_timestamp = (*location).timestamp;
newest_location_id = dc_sqlite3_get_rowid2(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"locations\x00" as *const u8 as *const libc::c_char,
b"timestamp\x00" as *const u8 as *const libc::c_char,
(*location).timestamp as uint64_t,
@@ -774,7 +774,7 @@ pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &dc_context_t, _job
);
stmt_chats = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id, locations_send_begin, locations_last_sent\
FROM chats\
WHERE locations_send_until>?;\x00" as *const u8 as *const libc::c_char,
@@ -792,7 +792,7 @@ pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOCATIONS(context: &dc_context_t, _job
if stmt_locations.is_null() {
stmt_locations = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id \
FROM locations \
WHERE from_id=? \
@@ -847,7 +847,7 @@ pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOC_ENDED(
let mut stock_str: *mut libc::c_char = 0 as *mut libc::c_char;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT locations_send_begin, locations_send_until FROM chats WHERE id=?\x00"
as *const u8 as *const libc::c_char,
);
@@ -870,7 +870,7 @@ pub unsafe fn dc_job_do_DC_JOB_MAYBE_SEND_LOC_ENDED(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET locations_send_begin=0, locations_send_until=0 WHERE id=?\x00"
as *const u8 as
*const libc::c_char);

View File

@@ -63,7 +63,7 @@ pub unsafe fn dc_loginparam_empty(mut loginparam: *mut dc_loginparam_t) {
pub unsafe fn dc_loginparam_read(
context: &dc_context_t,
loginparam: *mut dc_loginparam_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
prefix: *const libc::c_char,
) {
let mut key: *mut libc::c_char = 0 as *mut libc::c_char;
@@ -143,7 +143,7 @@ pub unsafe fn dc_loginparam_read(
pub unsafe fn dc_loginparam_write(
context: &dc_context_t,
loginparam: *const dc_loginparam_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
prefix: *const libc::c_char,
) {
let mut key: *mut libc::c_char = 0 as *mut libc::c_char;

View File

@@ -134,7 +134,7 @@ pub unsafe fn dc_mimefactory_load_msg(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT c.authname, c.addr FROM chats_contacts cc LEFT JOIN contacts c ON cc.contact_id=c.id WHERE cc.chat_id=? AND cc.contact_id>9;\x00"
as *const u8 as
*const libc::c_char);
@@ -174,7 +174,7 @@ pub unsafe fn dc_mimefactory_load_msg(
);
let mut self_addr: *mut libc::c_char = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -201,7 +201,7 @@ pub unsafe fn dc_mimefactory_load_msg(
&& command != 7i32
&& 0 != dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
)
@@ -211,7 +211,7 @@ pub unsafe fn dc_mimefactory_load_msg(
}
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT mime_in_reply_to, mime_references FROM msgs WHERE id=?\x00" as *const u8
as *const libc::c_char,
);
@@ -239,19 +239,19 @@ pub unsafe fn dc_mimefactory_load_msg(
unsafe fn load_from(mut factory: *mut dc_mimefactory_t) {
(*factory).from_addr = dc_sqlite3_get_config(
(*factory).context,
&mut (*factory).context.sql.clone().lock().unwrap(),
&mut (*factory).context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
(*factory).from_displayname = dc_sqlite3_get_config(
(*factory).context,
&mut (*factory).context.sql.clone().lock().unwrap(),
&mut (*factory).context.sql.clone().read().unwrap(),
b"displayname\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
(*factory).selfstatus = dc_sqlite3_get_config(
(*factory).context,
&mut (*factory).context.sql.clone().lock().unwrap(),
&mut (*factory).context.sql.clone().read().unwrap(),
b"selfstatus\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -272,7 +272,7 @@ pub unsafe fn dc_mimefactory_load_mdn(
if !(0
== dc_sqlite3_get_config_int(
(*factory).context,
&mut (*factory).context.sql.clone().lock().unwrap(),
&mut (*factory).context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
))
@@ -282,7 +282,7 @@ pub unsafe fn dc_mimefactory_load_mdn(
if !(0 == dc_msg_load_from_db((*factory).msg, (*factory).context, msg_id)
|| 0 == dc_contact_load_from_db(
contact,
&mut (*factory).context.sql.clone().lock().unwrap(),
&mut (*factory).context.sql.clone().read().unwrap(),
(*(*factory).msg).from_id,
))
{

View File

@@ -16,7 +16,7 @@ pub unsafe fn dc_do_heuristics_moves(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
if !(dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_move\x00" as *const u8 as *const libc::c_char,
1i32,
) == 0i32)

View File

@@ -71,12 +71,12 @@ pub unsafe fn dc_get_msg_info(
dc_msg_load_from_db(msg, context, msg_id);
dc_contact_load_from_db(
contact_from,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*msg).from_id,
);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT txt_raw FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
@@ -123,7 +123,7 @@ pub unsafe fn dc_get_msg_info(
// device-internal message, no further details needed
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT contact_id, timestamp_sent FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -137,7 +137,7 @@ pub unsafe fn dc_get_msg_info(
let mut contact: *mut dc_contact_t = dc_contact_new(context);
dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
sqlite3_column_int64(stmt, 0i32) as uint32_t,
);
p = dc_contact_get_name_n_addr(contact);
@@ -513,7 +513,7 @@ pub unsafe fn dc_msg_load_from_db<'a>(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id,rfc724_mid,m.mime_in_reply_to,m.server_folder,m.server_uid,m.move_state,m.chat_id, m.from_id,m.to_id,m.timestamp,m.timestamp_sent,m.timestamp_rcvd, m.type,m.state,m.msgrmsg,m.txt, m.param,m.starred,m.hidden,m.location_id, c.blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id=?;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_int(stmt, 1i32, id as libc::c_int);
@@ -614,7 +614,7 @@ pub unsafe fn dc_get_mime_headers(
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT mime_headers FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
@@ -664,7 +664,7 @@ pub unsafe fn dc_update_msg_chat_id(
) {
let stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET chat_id=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, chat_id as libc::c_int);
@@ -684,7 +684,7 @@ pub unsafe fn dc_markseen_msgs(
let mut stmt = 0 as *mut sqlite3_stmt;
if !(msg_ids.is_null() || msg_cnt <= 0i32) {
stmt =
dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(),
dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(),
b"SELECT m.state, c.blocked FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id=? AND m.chat_id>9\x00"
as *const u8 as *const libc::c_char);
i = 0i32;
@@ -738,7 +738,7 @@ pub unsafe fn dc_update_msg_state(
) {
let mut stmt = dc_sqlite3_prepare(
context,
&mut context.sql.lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, state);
@@ -757,7 +757,7 @@ pub unsafe fn dc_star_msgs(
}
let mut stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET starred=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
let mut i: libc::c_int = 0i32;
@@ -1189,7 +1189,7 @@ pub unsafe fn dc_msg_save_param_to_disk(mut msg: *mut dc_msg_t) {
}
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
(*msg).context,
&mut (*msg).context.sql.clone().lock().unwrap(),
&mut (*msg).context.sql.clone().read().unwrap(),
b"UPDATE msgs SET param=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_text(stmt, 1i32, (*(*msg).param).packed, -1i32, None);
@@ -1212,7 +1212,7 @@ pub unsafe fn dc_delete_msg_from_db(context: &dc_context_t, mut msg_id: uint32_t
if !(0 == dc_msg_load_from_db(msg, context, msg_id)) {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, (*msg).id as libc::c_int);
@@ -1221,7 +1221,7 @@ pub unsafe fn dc_delete_msg_from_db(context: &dc_context_t, mut msg_id: uint32_t
stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, (*msg).id as libc::c_int);
@@ -1243,7 +1243,7 @@ pub unsafe fn dc_msg_exists(mut context: &dc_context_t, mut msg_id: uint32_t) ->
if !msg_id <= 9i32 as libc::c_uint {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT chat_id FROM msgs WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, msg_id as libc::c_int);
@@ -1266,7 +1266,7 @@ pub unsafe fn dc_update_msg_move_state(
// so that the state stay intact when parts are deleted
let mut stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET move_state=? WHERE rfc724_mid=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, state as libc::c_int);
@@ -1296,7 +1296,7 @@ pub unsafe fn dc_set_msg_failed(
}
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET state=?, param=? WHERE id=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_int(stmt, 1i32, (*msg).state);
@@ -1339,7 +1339,7 @@ pub unsafe fn dc_mdn_from_ext(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT m.id, c.id, c.type, m.state FROM msgs m LEFT JOIN chats c ON m.chat_id=c.id WHERE rfc724_mid=? AND from_id=1 ORDER BY m.id;\x00"
as *const u8 as *const libc::c_char
);
@@ -1355,7 +1355,7 @@ pub unsafe fn dc_mdn_from_ext(
/* eg. already marked as MDNS_RCVD. however, it is importent, that the message ID is set above as this will allow the caller eg. to move the message away */
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT contact_id FROM msgs_mdns WHERE msg_id=? AND contact_id=?;\x00"
as *const u8 as *const libc::c_char,
);
@@ -1372,7 +1372,7 @@ pub unsafe fn dc_mdn_from_ext(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO msgs_mdns (msg_id, contact_id, timestamp_sent) VALUES (?, ?, ?);\x00"
as *const u8 as
*const libc::c_char);
@@ -1391,7 +1391,7 @@ pub unsafe fn dc_mdn_from_ext(
/* send event about new state */
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs_mdns WHERE msg_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1432,17 +1432,17 @@ pub unsafe fn dc_mdn_from_ext(
pub unsafe fn dc_get_real_msg_cnt(mut context: &dc_context_t) -> size_t {
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
let mut ret: size_t = 0i32 as size_t;
if !(*&mut context.sql.clone().lock().unwrap()).cobj.is_null() {
if !(*&context.sql.clone().read().unwrap()).cobj.is_null() {
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE m.id>9 AND m.chat_id>9 AND c.blocked=0;\x00"
as *const u8 as *const libc::c_char);
if sqlite3_step(stmt) != 100i32 {
dc_sqlite3_log_error(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"dc_get_real_msg_cnt() failed.\x00" as *const u8 as *const libc::c_char,
);
} else {
@@ -1455,9 +1455,9 @@ pub unsafe fn dc_get_real_msg_cnt(mut context: &dc_context_t) -> size_t {
pub unsafe fn dc_get_deaddrop_msg_cnt(mut context: &dc_context_t) -> size_t {
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
let mut ret: size_t = 0i32 as size_t;
if !context.sql.clone().lock().unwrap().cobj.is_null() {
if !context.sql.clone().read().unwrap().cobj.is_null() {
stmt =
dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(),
dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs m LEFT JOIN chats c ON c.id=m.chat_id WHERE c.blocked=2;\x00"
as *const u8 as *const libc::c_char);
if !(sqlite3_step(stmt) != 100i32) {
@@ -1474,10 +1474,10 @@ pub unsafe fn dc_rfc724_mid_cnt(
/* check the number of messages with the same rfc724_mid */
let mut ret: libc::c_int = 0i32;
let mut stmt = 0 as *mut sqlite3_stmt;
if !context.sql.clone().lock().unwrap().cobj.is_null() {
if !context.sql.clone().read().unwrap().cobj.is_null() {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT COUNT(*) FROM msgs WHERE rfc724_mid=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1500,7 +1500,7 @@ pub unsafe fn dc_rfc724_mid_exists(
if !(rfc724_mid.is_null() || *rfc724_mid.offset(0isize) as libc::c_int == 0i32) {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT server_folder, server_uid, id FROM msgs WHERE rfc724_mid=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1533,7 +1533,7 @@ pub unsafe fn dc_update_server_uid(
) {
let mut stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE msgs SET server_folder=?, server_uid=? WHERE rfc724_mid=?;\x00" as *const u8
as *const libc::c_char,
);

View File

@@ -33,7 +33,7 @@ pub unsafe fn dc_get_oauth2_url(
if !oauth2.is_null() {
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_pending_redirect_uri\x00" as *const u8 as *const libc::c_char,
redirect_uri,
);
@@ -173,7 +173,7 @@ pub unsafe fn dc_get_oauth2_access_token(
if 0 == flags & 0x1i32 && 0 == is_expired(context) {
access_token = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_access_token\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -191,13 +191,13 @@ pub unsafe fn dc_get_oauth2_access_token(
_ => {
refresh_token = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_refresh_token\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
refresh_token_for = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_refresh_token_for\x00" as *const u8 as *const libc::c_char,
b"unset\x00" as *const u8 as *const libc::c_char,
);
@@ -210,7 +210,7 @@ pub unsafe fn dc_get_oauth2_access_token(
);
redirect_uri = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_pending_redirect_uri\x00" as *const u8 as *const libc::c_char,
b"unset\x00" as *const u8 as *const libc::c_char,
);
@@ -225,7 +225,7 @@ pub unsafe fn dc_get_oauth2_access_token(
);
redirect_uri = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_redirect_uri\x00" as *const u8 as *const libc::c_char,
b"unset\x00" as *const u8 as *const libc::c_char,
);
@@ -380,13 +380,13 @@ pub unsafe fn dc_get_oauth2_access_token(
{
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_refresh_token\x00" as *const u8 as *const libc::c_char,
refresh_token,
);
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_refresh_token_for\x00" as *const u8
as *const libc::c_char,
code,
@@ -406,13 +406,13 @@ pub unsafe fn dc_get_oauth2_access_token(
} else {
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_access_token\x00" as *const u8 as *const libc::c_char,
access_token,
);
dc_sqlite3_set_config_int64(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_timestamp_expires\x00" as *const u8
as *const libc::c_char,
(if 0 != expires_in {
@@ -424,7 +424,7 @@ pub unsafe fn dc_get_oauth2_access_token(
if 0 != update_redirect_uri_on_success {
dc_sqlite3_set_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_redirect_uri\x00" as *const u8
as *const libc::c_char,
redirect_uri,
@@ -483,7 +483,7 @@ unsafe extern "C" fn jsoneq(
unsafe fn is_expired(mut context: &dc_context_t) -> libc::c_int {
let mut expire_timestamp: time_t = dc_sqlite3_get_config_int64(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"oauth2_timestamp_expires\x00" as *const u8 as *const libc::c_char,
0i32 as int64_t,
) as time_t;

View File

@@ -247,7 +247,7 @@ pub unsafe fn dc_check_qr(
if addr.is_null() || invitenumber.is_null() || auth.is_null() {
if 0 != dc_apeerstate_load_by_fingerprint(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
fingerprint,
) {
(*qr_parsed).state = 210i32;

View File

@@ -251,7 +251,7 @@ pub unsafe fn dc_receive_imf(
if msgrmsg == 0i32 {
let mut show_emails: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"show_emails\x00" as *const u8 as *const libc::c_char,
0i32,
);
@@ -464,7 +464,7 @@ pub unsafe fn dc_receive_imf(
// (the mime-header ends with an empty line)
let mut save_mime_headers: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"save_mime_headers\x00" as *const u8 as *const libc::c_char,
0i32,
);
@@ -530,7 +530,7 @@ pub unsafe fn dc_receive_imf(
stmt =
dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO msgs (rfc724_mid, server_folder, server_uid, chat_id, from_id, to_id, timestamp, timestamp_sent, timestamp_rcvd, type, state, msgrmsg, txt, txt_raw, param, bytes, hidden, mime_headers, mime_in_reply_to, mime_references) VALUES (?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?);\x00"
as *const u8 as
*const libc::c_char);
@@ -648,7 +648,7 @@ pub unsafe fn dc_receive_imf(
txt_raw = 0 as *mut libc::c_char;
insert_msg_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"msgs\x00" as *const u8 as *const libc::c_char,
b"rfc724_mid\x00" as *const u8 as *const libc::c_char,
rfc724_mid,
@@ -709,7 +709,7 @@ pub unsafe fn dc_receive_imf(
if carray_count((*mime_parser).reports) > 0i32 as libc::c_uint {
let mut mdns_enabled: libc::c_int = dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
1i32,
);
@@ -901,7 +901,7 @@ pub unsafe fn dc_receive_imf(
if 0 != (*mime_parser).is_send_by_messenger
&& 0 != dc_sqlite3_get_config_int(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"mvbox_move\x00" as *const u8
as *const libc::c_char,
1i32,
@@ -1055,7 +1055,7 @@ unsafe fn calc_timestamps(
if 0 != is_fresh_msg {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT MAX(timestamp) FROM msgs WHERE chat_id=? and from_id!=? AND timestamp>=?\x00"
as *const u8 as *const libc::c_char,
);
@@ -1318,7 +1318,7 @@ unsafe fn create_or_lookup_group(
group_explicitly_left = dc_is_group_explicitly_left(context, grpid);
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -1397,7 +1397,7 @@ unsafe fn create_or_lookup_group(
{
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"UPDATE chats SET name=? WHERE id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1467,7 +1467,7 @@ unsafe fn create_or_lookup_group(
};
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"DELETE FROM chats_contacts WHERE chat_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -1600,7 +1600,7 @@ unsafe fn create_or_lookup_adhoc_group(
sqlite3_mprintf(b"SELECT c.id, c.blocked FROM chats c LEFT JOIN msgs m ON m.chat_id=c.id WHERE c.id IN(%s) ORDER BY m.timestamp DESC, m.id DESC LIMIT 1;\x00"
as *const u8 as *const libc::c_char,
chat_ids_str);
stmt = dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(), q3);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q3);
if sqlite3_step(stmt) == 100i32 {
chat_id = sqlite3_column_int(stmt, 0i32) as uint32_t;
chat_id_blocked = sqlite3_column_int(stmt, 1i32);
@@ -1682,7 +1682,7 @@ unsafe fn create_group_record(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO chats (type, name, grpid, blocked) VALUES(?, ?, ?, ?);\x00" as *const u8
as *const libc::c_char,
);
@@ -1697,7 +1697,7 @@ unsafe fn create_group_record(
if !(sqlite3_step(stmt) != 101i32) {
chat_id = dc_sqlite3_get_rowid(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"chats\x00" as *const u8 as *const libc::c_char,
b"grpid\x00" as *const u8 as *const libc::c_char,
grpid,
@@ -1737,10 +1737,10 @@ unsafe fn create_adhoc_grp_id(
as *const libc::c_char,
member_ids_str,
);
stmt = dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(), q3);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q3);
addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"no-self\x00" as *const u8 as *const libc::c_char,
);
@@ -1825,7 +1825,7 @@ unsafe fn search_chat_ids_by_contact_ids(
sqlite3_mprintf(b"SELECT DISTINCT cc.chat_id, cc.contact_id FROM chats_contacts cc LEFT JOIN chats c ON c.id=cc.chat_id WHERE cc.chat_id IN(SELECT chat_id FROM chats_contacts WHERE contact_id IN(%s)) AND c.type=120 AND cc.contact_id!=1 ORDER BY cc.chat_id, cc.contact_id;\x00"
as *const u8 as *const libc::c_char,
contact_ids_str);
stmt = dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(), q3);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q3);
let mut last_chat_id = 0;
let mut matches = 0;
let mut mismatches = 0;
@@ -1874,7 +1874,7 @@ unsafe fn check_verified_properties(
let mut to_ids_str: *mut libc::c_char = 0 as *mut libc::c_char;
let mut q3: *mut libc::c_char = 0 as *mut libc::c_char;
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
if 0 == dc_contact_load_from_db(contact, &mut context.sql.clone().lock().unwrap(), from_id) {
if 0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), from_id) {
*failure_reason = dc_mprintf(
b"%s. See \"Info\" for details.\x00" as *const u8 as *const libc::c_char,
b"Internal Error; cannot load contact.\x00" as *const u8 as *const libc::c_char,
@@ -1894,7 +1894,7 @@ unsafe fn check_verified_properties(
if from_id != 1i32 as libc::c_uint {
if 0 == dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*contact).addr,
) || dc_contact_is_verified_ex(contact, peerstate) != 2i32
{
@@ -1933,7 +1933,7 @@ unsafe fn check_verified_properties(
sqlite3_mprintf(b"SELECT c.addr, LENGTH(ps.verified_key_fingerprint) FROM contacts c LEFT JOIN acpeerstates ps ON c.addr=ps.addr WHERE c.id IN(%s) \x00"
as *const u8 as *const libc::c_char,
to_ids_str);
stmt = dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(), q3);
stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), q3);
loop {
if !(sqlite3_step(stmt) == 100i32) {
current_block = 2604890879466389055;
@@ -1950,7 +1950,7 @@ unsafe fn check_verified_properties(
.is_null()
&& 0 != dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
to_addr,
)
{
@@ -1979,7 +1979,7 @@ unsafe fn check_verified_properties(
);
dc_apeerstate_save_to_db(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
0i32,
);
is_verified = 1i32
@@ -2116,7 +2116,7 @@ unsafe fn is_known_rfc724_mid(
let mut is_known: libc::c_int = 0i32;
if !rfc724_mid.is_null() {
let mut stmt: *mut sqlite3_stmt =
dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(),
dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(),
b"SELECT m.id FROM msgs m LEFT JOIN chats c ON m.chat_id=c.id WHERE m.rfc724_mid=? AND m.chat_id>9 AND c.blocked=0;\x00"
as *const u8 as *const libc::c_char);
sqlite3_bind_text(stmt, 1i32, rfc724_mid, -1i32, None);
@@ -2206,7 +2206,7 @@ unsafe fn is_msgrmsg_rfc724_mid(
if !rfc724_mid.is_null() {
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM msgs WHERE rfc724_mid=? AND msgrmsg!=0 AND chat_id>9;\x00"
as *const u8 as *const libc::c_char,
);
@@ -2324,7 +2324,7 @@ unsafe fn add_or_lookup_contact_by_addr(
*check_self = 0i32;
let mut self_addr: *mut libc::c_char = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);

View File

@@ -58,7 +58,7 @@ pub unsafe fn dc_get_securejoin_qr(
}
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -71,7 +71,7 @@ pub unsafe fn dc_get_securejoin_qr(
} else {
self_name = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"displayname\x00" as *const u8 as *const libc::c_char,
b"\x00" as *const u8 as *const libc::c_char,
);
@@ -153,7 +153,7 @@ unsafe fn get_self_fingerprint(mut context: &dc_context_t) -> *mut libc::c_char
let mut fingerprint: *mut libc::c_char = 0 as *mut libc::c_char;
self_addr = dc_sqlite3_get_config(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"configured_addr\x00" as *const u8 as *const libc::c_char,
0 as *const libc::c_char,
);
@@ -162,7 +162,7 @@ unsafe fn get_self_fingerprint(mut context: &dc_context_t) -> *mut libc::c_char
context,
self_key,
self_addr,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
))
{
fingerprint = dc_key_get_fingerprint(context, self_key);
@@ -367,12 +367,12 @@ unsafe fn fingerprint_equals_sender(
if !(0
== dc_contact_load_from_db(
contact,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
dc_array_get_id(contacts, 0i32 as size_t),
)
|| 0 == dc_apeerstate_load_by_addr(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
(*contact).addr,
))
{
@@ -978,14 +978,14 @@ unsafe fn mark_peer_as_verified(
if !(0
== dc_apeerstate_load_by_fingerprint(
peerstate,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
fingerprint,
))
{
if !(0 == dc_apeerstate_set_verified(peerstate, 1i32, fingerprint, 2i32)) {
(*peerstate).prefer_encrypt = 1i32;
(*peerstate).to_save |= 0x2i32;
dc_apeerstate_save_to_db(peerstate, &mut context.sql.clone().lock().unwrap(), 0i32);
dc_apeerstate_save_to_db(peerstate, &context.sql.clone().read().unwrap(), 0i32);
success = 1i32
}
}
@@ -1057,7 +1057,7 @@ pub unsafe fn dc_handle_degrade_event(
if 0 != (*peerstate).degrade_event & 0x2i32 {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM contacts WHERE addr=?;\x00" as *const u8 as *const libc::c_char,
);
sqlite3_bind_text(stmt, 1i32, (*peerstate).addr, -1i32, None);

View File

@@ -1014,7 +1014,7 @@ pub unsafe fn dc_sqlite3_open(
// handle configurations, private
pub unsafe fn dc_sqlite3_set_config(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
value: *const libc::c_char,
) -> libc::c_int {
@@ -1103,7 +1103,7 @@ pub unsafe fn dc_sqlite3_set_config(
/* the result mus be freed using sqlite3_finalize() */
pub unsafe fn dc_sqlite3_prepare(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
querystr: *const libc::c_char,
) -> *mut sqlite3_stmt {
let mut stmt = 0 as *mut sqlite3_stmt;
@@ -1170,7 +1170,7 @@ pub unsafe fn dc_sqlite3_is_open(sql: &dc_sqlite3_t) -> libc::c_int {
/* the returned string must be free()'d, returns NULL on errors */
pub unsafe fn dc_sqlite3_get_config(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
def: *const libc::c_char,
) -> *mut libc::c_char {
@@ -1198,7 +1198,7 @@ pub unsafe fn dc_sqlite3_get_config(
pub unsafe fn dc_sqlite3_execute(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
querystr: *const libc::c_char,
) -> libc::c_int {
let mut success = 0;
@@ -1223,7 +1223,7 @@ pub unsafe fn dc_sqlite3_execute(
pub unsafe fn dc_sqlite3_set_config_int(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
value: int32_t,
) -> libc::c_int {
@@ -1242,7 +1242,7 @@ pub unsafe fn dc_sqlite3_set_config_int(
pub unsafe fn dc_sqlite3_get_config_int(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
def: int32_t,
) -> int32_t {
@@ -1257,7 +1257,7 @@ pub unsafe fn dc_sqlite3_get_config_int(
pub unsafe fn dc_sqlite3_table_exists(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
name: *const libc::c_char,
) -> libc::c_int {
let mut ret = 0;
@@ -1296,7 +1296,7 @@ pub unsafe fn dc_sqlite3_table_exists(
pub unsafe fn dc_sqlite3_set_config_int64(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
value: int64_t,
) -> libc::c_int {
@@ -1314,7 +1314,7 @@ pub unsafe fn dc_sqlite3_set_config_int64(
pub unsafe fn dc_sqlite3_get_config_int64(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
key: *const libc::c_char,
def: int64_t,
) -> int64_t {
@@ -1334,7 +1334,7 @@ pub unsafe fn dc_sqlite3_get_config_int64(
pub unsafe fn dc_sqlite3_try_execute(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
querystr: *const libc::c_char,
) -> libc::c_int {
// same as dc_sqlite3_execute() but does not pass error to ui
@@ -1361,7 +1361,7 @@ pub unsafe fn dc_sqlite3_try_execute(
pub unsafe fn dc_sqlite3_get_rowid(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
table: *const libc::c_char,
field: *const libc::c_char,
value: *const libc::c_char,
@@ -1387,7 +1387,7 @@ pub unsafe fn dc_sqlite3_get_rowid(
pub unsafe fn dc_sqlite3_get_rowid2(
context: &dc_context_t,
sql: &mut dc_sqlite3_t,
sql: &dc_sqlite3_t,
table: *const libc::c_char,
field: *const libc::c_char,
value: uint64_t,
@@ -1462,7 +1462,7 @@ pub unsafe fn dc_housekeeping(context: &dc_context_t) {
);
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT value FROM config;\x00" as *const u8 as *const libc::c_char,
);
while sqlite3_step(stmt) == 100 {
@@ -1626,7 +1626,7 @@ unsafe fn maybe_add_from_param(
param_id: libc::c_int,
) {
let mut param = dc_param_new();
let mut stmt = dc_sqlite3_prepare(context, &mut context.sql.clone().lock().unwrap(), query);
let mut stmt = dc_sqlite3_prepare(context, &context.sql.clone().read().unwrap(), query);
while sqlite3_step(stmt) == 100 {
dc_param_set_packed(param, sqlite3_column_text(stmt, 0) as *const libc::c_char);
let mut file = dc_param_get(param, param_id, 0 as *const libc::c_char);

View File

@@ -22,7 +22,7 @@ pub unsafe fn dc_token_save(
// foreign_id may be 0
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"INSERT INTO tokens (namespc, foreign_id, token, timestamp) VALUES (?, ?, ?, ?);\x00"
as *const u8 as *const libc::c_char,
);
@@ -43,7 +43,7 @@ pub unsafe fn dc_token_lookup(
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT token FROM tokens WHERE namespc=? AND foreign_id=?;\x00" as *const u8
as *const libc::c_char,
);
@@ -66,7 +66,7 @@ pub unsafe fn dc_token_exists(
if !token.is_null() {
stmt = dc_sqlite3_prepare(
context,
&mut context.sql.clone().lock().unwrap(),
&context.sql.clone().read().unwrap(),
b"SELECT id FROM tokens WHERE namespc=? AND token=?;\x00" as *const u8
as *const libc::c_char,
);