diff --git a/examples/repl/cmdline.rs b/examples/repl/cmdline.rs index 0dc4156bc..9622b0e6a 100644 --- a/examples/repl/cmdline.rs +++ b/examples/repl/cmdline.rs @@ -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 { diff --git a/examples/repl/main.rs b/examples/repl/main.rs index d225a6b55..43feb7ced 100644 --- a/examples/repl/main.rs +++ b/examples/repl/main.rs @@ -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; diff --git a/src/dc_apeerstate.rs b/src/dc_apeerstate.rs index 170383ff3..9404dc9cf 100644 --- a/src/dc_apeerstate.rs +++ b/src/dc_apeerstate.rs @@ -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; diff --git a/src/dc_chat.rs b/src/dc_chat.rs index b0fb5ab15..ad8606611 100644 --- a/src/dc_chat.rs +++ b/src/dc_chat.rs @@ -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, diff --git a/src/dc_chatlist.rs b/src/dc_chatlist.rs index b254801e9..03312fdca 100644 --- a/src/dc_chatlist.rs +++ b/src/dc_chatlist.rs @@ -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, ); } diff --git a/src/dc_configure.rs b/src/dc_configure.rs index fb61b9d5e..8dc380343 100644 --- a/src/dc_configure.rs +++ b/src/dc_configure.rs @@ -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*/ diff --git a/src/dc_contact.rs b/src/dc_contact.rs index 4f2186173..fd74a7e18 100644 --- a/src/dc_contact.rs +++ b/src/dc_contact.rs @@ -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>, + pub sql: Arc>, pub inbox: Arc>, pub perform_inbox_jobs_needed: Arc>, pub probe_imap_network: Arc>, @@ -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"\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"\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, ); diff --git a/src/dc_e2ee.rs b/src/dc_e2ee.rs index a9734ca8a..a917c260c 100644 --- a/src/dc_e2ee.rs +++ b/src/dc_e2ee.rs @@ -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, ); diff --git a/src/dc_imap.rs b/src/dc_imap.rs index b1197abc6..c225e22f7 100644 --- a/src/dc_imap.rs +++ b/src/dc_imap.rs @@ -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 } diff --git a/src/dc_imex.rs b/src/dc_imex.rs index cb3f2b191..8bd30b127 100644 --- a/src/dc_imex.rs +++ b/src/dc_imex.rs @@ -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, ); diff --git a/src/dc_job.rs b/src/dc_job.rs index eb531139c..5eb397e3c 100644 --- a/src/dc_job.rs +++ b/src/dc_job.rs @@ -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); diff --git a/src/dc_jobthread.rs b/src/dc_jobthread.rs index 101678c7f..c911c43f5 100644 --- a/src/dc_jobthread.rs +++ b/src/dc_jobthread.rs @@ -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, ); diff --git a/src/dc_key.rs b/src/dc_key.rs index a3196629d..a3ba5f3df 100644 --- a/src/dc_key.rs +++ b/src/dc_key.rs @@ -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; diff --git a/src/dc_keyring.rs b/src/dc_keyring.rs index 7a757bfa0..38cc40cd9 100644 --- a/src/dc_keyring.rs +++ b/src/dc_keyring.rs @@ -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; diff --git a/src/dc_location.rs b/src/dc_location.rs index a55d2892b..07cfeac76 100644 --- a/src/dc_location.rs +++ b/src/dc_location.rs @@ -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); diff --git a/src/dc_loginparam.rs b/src/dc_loginparam.rs index d6da6418a..a8860369e 100644 --- a/src/dc_loginparam.rs +++ b/src/dc_loginparam.rs @@ -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; diff --git a/src/dc_mimefactory.rs b/src/dc_mimefactory.rs index aece87bc0..1e8fbc666 100644 --- a/src/dc_mimefactory.rs +++ b/src/dc_mimefactory.rs @@ -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, )) { diff --git a/src/dc_move.rs b/src/dc_move.rs index c1a5da10c..880ea7ab0 100644 --- a/src/dc_move.rs +++ b/src/dc_move.rs @@ -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) diff --git a/src/dc_msg.rs b/src/dc_msg.rs index aeb4f738d..fcc60ccbf 100644 --- a/src/dc_msg.rs +++ b/src/dc_msg.rs @@ -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, ); diff --git a/src/dc_oauth2.rs b/src/dc_oauth2.rs index 7ce61f823..3efbafbea 100644 --- a/src/dc_oauth2.rs +++ b/src/dc_oauth2.rs @@ -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; diff --git a/src/dc_qr.rs b/src/dc_qr.rs index 23e60c1c6..597615e9d 100644 --- a/src/dc_qr.rs +++ b/src/dc_qr.rs @@ -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; diff --git a/src/dc_receive_imf.rs b/src/dc_receive_imf.rs index 9c34a99b5..a2668e2d7 100644 --- a/src/dc_receive_imf.rs +++ b/src/dc_receive_imf.rs @@ -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, ); diff --git a/src/dc_securejoin.rs b/src/dc_securejoin.rs index 46528cbb7..61ca43a93 100644 --- a/src/dc_securejoin.rs +++ b/src/dc_securejoin.rs @@ -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); diff --git a/src/dc_sqlite3.rs b/src/dc_sqlite3.rs index 735d289e8..b7cdce76c 100644 --- a/src/dc_sqlite3.rs +++ b/src/dc_sqlite3.rs @@ -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); diff --git a/src/dc_token.rs b/src/dc_token.rs index 78b9924e7..37881ae6f 100644 --- a/src/dc_token.rs +++ b/src/dc_token.rs @@ -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, );