mirror of
https://github.com/chatmail/core.git
synced 2026-04-27 18:36:30 +03:00
fix: allow concurrent access to dc_sqlite3_t
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
134
src/dc_chat.rs
134
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,
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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*/
|
||||
|
||||
@@ -32,7 +32,7 @@ pub struct dc_contact_t<'a> {
|
||||
pub unsafe fn dc_marknoticed_contact(context: &dc_context_t, contact_id: uint32_t) {
|
||||
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE msgs SET state=13 WHERE from_id=? AND state=10;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -77,7 +77,7 @@ pub unsafe fn dc_lookup_contact_id_by_addr(
|
||||
addr_normalized = dc_addr_normalize(addr);
|
||||
addr_self = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_addr\x00" as *const u8 as *const libc::c_char,
|
||||
b"\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -86,7 +86,7 @@ pub unsafe fn dc_lookup_contact_id_by_addr(
|
||||
} else {
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"SELECT id FROM contacts WHERE addr=?1 COLLATE NOCASE AND id>?2 AND origin>=?3 AND blocked=0;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
sqlite3_bind_text(
|
||||
@@ -161,15 +161,12 @@ pub unsafe fn dc_block_contact(
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !(contact_id <= 9i32 as libc::c_uint) {
|
||||
if 0 != dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
contact_id,
|
||||
) && (*contact).blocked != new_blocking
|
||||
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)
|
||||
&& (*contact).blocked != new_blocking
|
||||
{
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE contacts SET blocked=? WHERE id=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -182,7 +179,7 @@ pub unsafe fn dc_block_contact(
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE chats SET blocked=? WHERE type=? AND id IN (SELECT chat_id FROM chats_contacts WHERE contact_id=?);\x00"
|
||||
as *const u8 as
|
||||
*const libc::c_char);
|
||||
@@ -289,7 +286,7 @@ pub unsafe fn dc_contact_empty(mut contact: *mut dc_contact_t) {
|
||||
/* contacts with at least this origin value start a new "normal" chat, defaults to off */
|
||||
pub unsafe fn dc_contact_load_from_db(
|
||||
contact: *mut dc_contact_t,
|
||||
sql: &mut dc_sqlite3_t,
|
||||
sql: &dc_sqlite3_t,
|
||||
contact_id: uint32_t,
|
||||
) -> libc::c_int {
|
||||
let mut current_block: u64;
|
||||
@@ -341,11 +338,7 @@ pub unsafe fn dc_is_contact_blocked(
|
||||
) -> libc::c_int {
|
||||
let mut is_blocked: libc::c_int = 0i32;
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
if 0 != dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
contact_id,
|
||||
) {
|
||||
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id) {
|
||||
if 0 != (*contact).blocked {
|
||||
is_blocked = 1i32
|
||||
}
|
||||
@@ -377,7 +370,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
addr = dc_addr_normalize(addr__);
|
||||
addr_self = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_addr\x00" as *const u8 as *const libc::c_char,
|
||||
b"\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -398,7 +391,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
} else {
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"SELECT id, name, addr, origin, authname FROM contacts WHERE addr=? COLLATE NOCASE;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
sqlite3_bind_text(stmt, 1i32, addr as *const libc::c_char, -1i32, None);
|
||||
@@ -436,7 +429,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
{
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE contacts SET name=?, addr=?, origin=?, authname=? WHERE id=?;\x00"
|
||||
as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -481,7 +474,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
if 0 != update_name {
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE chats SET name=? WHERE type=? AND id IN(SELECT chat_id FROM chats_contacts WHERE contact_id=?);\x00"
|
||||
as *const u8 as
|
||||
*const libc::c_char);
|
||||
@@ -497,7 +490,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"INSERT INTO contacts (name, addr, origin) VALUES(?, ?, ?);\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -517,7 +510,7 @@ pub unsafe fn dc_add_or_lookup_contact(
|
||||
if sqlite3_step(stmt) == 101i32 {
|
||||
row_id = dc_sqlite3_get_rowid(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"contacts\x00" as *const u8 as *const libc::c_char,
|
||||
b"addr\x00" as *const u8 as *const libc::c_char,
|
||||
addr,
|
||||
@@ -630,7 +623,7 @@ pub unsafe fn dc_get_contacts(
|
||||
|
||||
self_addr = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_addr\x00" as *const u8 as *const libc::c_char,
|
||||
b"\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -648,7 +641,7 @@ pub unsafe fn dc_get_contacts(
|
||||
} else {
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"SELECT c.id FROM contacts c LEFT JOIN acpeerstates ps ON c.addr=ps.addr WHERE c.addr!=?1 AND c.id>?2 AND c.origin>=?3 AND c.blocked=0 AND (c.name LIKE ?4 OR c.addr LIKE ?5) AND (1=?6 OR LENGTH(ps.verified_key_fingerprint)!=0) ORDER BY LOWER(c.name||c.addr),c.id;\x00"
|
||||
as *const u8 as
|
||||
*const libc::c_char);
|
||||
@@ -668,7 +661,7 @@ pub unsafe fn dc_get_contacts(
|
||||
);
|
||||
self_name = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"displayname\x00" as *const u8 as *const libc::c_char,
|
||||
b"\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -685,7 +678,7 @@ pub unsafe fn dc_get_contacts(
|
||||
} else {
|
||||
stmt =
|
||||
dc_sqlite3_prepare(
|
||||
context,&mut context.sql.clone().lock().unwrap(),
|
||||
context,&context.sql.clone().read().unwrap(),
|
||||
b"SELECT id FROM contacts WHERE addr!=?1 AND id>?2 AND origin>=?3 AND blocked=0 ORDER BY LOWER(name||addr),id;\x00"
|
||||
as *const u8 as *const libc::c_char);
|
||||
sqlite3_bind_text(stmt, 1i32, self_addr, -1i32, None);
|
||||
@@ -720,7 +713,7 @@ pub unsafe fn dc_get_blocked_cnt(context: &dc_context_t) -> libc::c_int {
|
||||
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM contacts WHERE id>? AND blocked!=0\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -739,7 +732,7 @@ pub unsafe fn dc_get_blocked_contacts(mut context: &dc_context_t) -> *mut dc_arr
|
||||
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT id FROM contacts WHERE id>? AND blocked!=0 ORDER BY LOWER(name||addr),id;\x00"
|
||||
as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -777,29 +770,23 @@ pub unsafe fn dc_get_contact_encrinfo(
|
||||
eos: 0 as *mut libc::c_char,
|
||||
};
|
||||
dc_strbuilder_init(&mut ret, 0i32);
|
||||
if !(0
|
||||
== dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
contact_id,
|
||||
))
|
||||
{
|
||||
if !(0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)) {
|
||||
dc_apeerstate_load_by_addr(
|
||||
peerstate,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
(*contact).addr,
|
||||
);
|
||||
dc_loginparam_read(
|
||||
context,
|
||||
loginparam,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
dc_key_load_self_public(
|
||||
context,
|
||||
self_key,
|
||||
(*loginparam).addr,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
);
|
||||
if !dc_apeerstate_peek_key(peerstate, 0i32).is_null() {
|
||||
p = dc_stock_str(
|
||||
@@ -818,7 +805,7 @@ pub unsafe fn dc_get_contact_encrinfo(
|
||||
context,
|
||||
self_key,
|
||||
(*loginparam).addr,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
);
|
||||
}
|
||||
dc_strbuilder_cat(&mut ret, b" \x00" as *const u8 as *const libc::c_char);
|
||||
@@ -923,7 +910,7 @@ pub unsafe fn dc_delete_contact(
|
||||
if !contact_id <= 9i32 as libc::c_uint {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM chats_contacts WHERE contact_id=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -933,7 +920,7 @@ pub unsafe fn dc_delete_contact(
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM msgs WHERE from_id=? OR to_id=?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
@@ -944,7 +931,7 @@ pub unsafe fn dc_delete_contact(
|
||||
stmt = 0 as *mut sqlite3_stmt;
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"DELETE FROM contacts WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, contact_id as libc::c_int);
|
||||
@@ -968,7 +955,7 @@ pub unsafe fn dc_get_contact(
|
||||
mut contact_id: uint32_t,
|
||||
) -> *mut dc_contact_t {
|
||||
let mut ret: *mut dc_contact_t = dc_contact_new(context);
|
||||
if 0 == dc_contact_load_from_db(ret, &mut context.sql.clone().lock().unwrap(), contact_id) {
|
||||
if 0 == dc_contact_load_from_db(ret, &context.sql.clone().read().unwrap(), contact_id) {
|
||||
dc_contact_unref(ret);
|
||||
ret = 0 as *mut dc_contact_t
|
||||
}
|
||||
@@ -1085,7 +1072,7 @@ pub unsafe fn dc_contact_is_verified_ex<'a>(
|
||||
peerstate_to_delete = dc_apeerstate_new((*contact).context);
|
||||
if 0 == dc_apeerstate_load_by_addr(
|
||||
peerstate_to_delete,
|
||||
&mut (*contact).context.sql.clone().lock().unwrap(),
|
||||
&mut (*contact).context.sql.clone().read().unwrap(),
|
||||
(*contact).addr,
|
||||
) {
|
||||
current_block = 8667923638376902112;
|
||||
@@ -1134,7 +1121,7 @@ pub unsafe fn dc_addr_equals_self(
|
||||
normalized_addr = dc_addr_normalize(addr);
|
||||
self_addr = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_addr\x00" as *const u8 as *const libc::c_char,
|
||||
0 as *const libc::c_char,
|
||||
);
|
||||
@@ -1158,11 +1145,7 @@ pub unsafe fn dc_addr_equals_contact(
|
||||
let mut addr_are_equal: libc::c_int = 0i32;
|
||||
if !addr.is_null() {
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
if 0 != dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
contact_id,
|
||||
) {
|
||||
if 0 != dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id) {
|
||||
if !(*contact).addr.is_null() {
|
||||
let mut normalized_addr: *mut libc::c_char = dc_addr_normalize(addr);
|
||||
if strcasecmp((*contact).addr, normalized_addr) == 0i32 {
|
||||
@@ -1179,10 +1162,10 @@ pub unsafe fn dc_addr_equals_contact(
|
||||
pub unsafe fn dc_get_real_contact_cnt(mut context: &dc_context_t) -> size_t {
|
||||
let mut ret: size_t = 0i32 as size_t;
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
if !context.sql.clone().lock().unwrap().cobj.is_null() {
|
||||
if !context.sql.clone().read().unwrap().cobj.is_null() {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM contacts WHERE id>?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, 9i32);
|
||||
@@ -1205,13 +1188,7 @@ pub unsafe fn dc_get_contact_origin(
|
||||
}
|
||||
let mut contact: *mut dc_contact_t = dc_contact_new(context);
|
||||
*ret_blocked = 0i32;
|
||||
if !(0
|
||||
== dc_contact_load_from_db(
|
||||
contact,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
contact_id,
|
||||
))
|
||||
{
|
||||
if !(0 == dc_contact_load_from_db(contact, &context.sql.clone().read().unwrap(), contact_id)) {
|
||||
/* we could optimize this by loading only the needed fields */
|
||||
if 0 != (*contact).blocked {
|
||||
*ret_blocked = 1i32
|
||||
@@ -1228,10 +1205,10 @@ pub unsafe fn dc_real_contact_exists(
|
||||
) -> libc::c_int {
|
||||
let mut stmt: *mut sqlite3_stmt = 0 as *mut sqlite3_stmt;
|
||||
let mut ret: libc::c_int = 0i32;
|
||||
if !(context.sql.clone().lock().unwrap().cobj.is_null() || contact_id <= 9i32 as libc::c_uint) {
|
||||
if !(context.sql.clone().read().unwrap().cobj.is_null() || contact_id <= 9i32 as libc::c_uint) {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT id FROM contacts WHERE id=?;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_bind_int(stmt, 1i32, contact_id as libc::c_int);
|
||||
@@ -1249,7 +1226,7 @@ pub unsafe fn dc_scaleup_contact_origin(
|
||||
) {
|
||||
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"UPDATE contacts SET origin=? WHERE id=? AND origin<?;\x00" as *const u8
|
||||
as *const libc::c_char,
|
||||
);
|
||||
|
||||
@@ -28,7 +28,7 @@ pub struct dc_context_t {
|
||||
pub userdata: *mut libc::c_void,
|
||||
pub dbfile: *mut libc::c_char,
|
||||
pub blobdir: *mut libc::c_char,
|
||||
pub sql: Arc<Mutex<dc_sqlite3_t>>,
|
||||
pub sql: Arc<RwLock<dc_sqlite3_t>>,
|
||||
pub inbox: Arc<Mutex<dc_imap_t>>,
|
||||
pub perform_inbox_jobs_needed: Arc<RwLock<i32>>,
|
||||
pub probe_imap_network: Arc<RwLock<i32>>,
|
||||
@@ -126,7 +126,7 @@ pub fn dc_context_new(
|
||||
cb,
|
||||
os_name: unsafe { dc_strdup_keep_null(os_name) },
|
||||
running_state: Arc::new(RwLock::new(Default::default())),
|
||||
sql: Arc::new(Mutex::new(dc_sqlite3_new())),
|
||||
sql: Arc::new(RwLock::new(dc_sqlite3_new())),
|
||||
smtp: Arc::new(Mutex::new(Smtp::new())),
|
||||
smtp_state: Arc::new((Mutex::new(Default::default()), Condvar::new())),
|
||||
oauth2_critical: Arc::new(Mutex::new(())),
|
||||
@@ -240,12 +240,7 @@ unsafe fn cb_set_config(
|
||||
key: *const libc::c_char,
|
||||
value: *const libc::c_char,
|
||||
) {
|
||||
dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
value,
|
||||
);
|
||||
dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
|
||||
}
|
||||
/* *
|
||||
* The following three callback are given to dc_imap_new() to read/write configuration
|
||||
@@ -259,7 +254,7 @@ unsafe fn cb_get_config(
|
||||
key: *const libc::c_char,
|
||||
def: *const libc::c_char,
|
||||
) -> *mut libc::c_char {
|
||||
dc_sqlite3_get_config(context, &mut context.sql.clone().lock().unwrap(), key, def)
|
||||
dc_sqlite3_get_config(context, &context.sql.clone().read().unwrap(), key, def)
|
||||
}
|
||||
|
||||
pub unsafe fn dc_context_unref(context: &mut dc_context_t) {
|
||||
@@ -292,7 +287,7 @@ pub unsafe fn dc_context_unref(context: &mut dc_context_t) {
|
||||
.unwrap(),
|
||||
);
|
||||
|
||||
dc_sqlite3_unref(context, &mut context.sql.clone().lock().unwrap());
|
||||
dc_sqlite3_unref(context, &mut context.sql.clone().write().unwrap());
|
||||
|
||||
dc_jobthread_exit(&mut context.sentbox_thread.clone().lock().unwrap());
|
||||
dc_jobthread_exit(&mut context.mvbox_thread.clone().lock().unwrap());
|
||||
@@ -328,8 +323,8 @@ pub unsafe fn dc_close(context: &mut dc_context_t) {
|
||||
);
|
||||
context.smtp.clone().lock().unwrap().disconnect();
|
||||
|
||||
if 0 != dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap()) {
|
||||
dc_sqlite3_close(context, &mut context.sql.clone().lock().unwrap());
|
||||
if 0 != dc_sqlite3_is_open(&context.sql.clone().read().unwrap()) {
|
||||
dc_sqlite3_close(context, &mut context.sql.clone().write().unwrap());
|
||||
}
|
||||
free(context.dbfile as *mut libc::c_void);
|
||||
context.dbfile = 0 as *mut libc::c_char;
|
||||
@@ -338,7 +333,7 @@ pub unsafe fn dc_close(context: &mut dc_context_t) {
|
||||
}
|
||||
|
||||
pub unsafe fn dc_is_open(context: &dc_context_t) -> libc::c_int {
|
||||
dc_sqlite3_is_open(&mut context.sql.clone().lock().unwrap())
|
||||
dc_sqlite3_is_open(&context.sql.clone().read().unwrap())
|
||||
}
|
||||
|
||||
pub unsafe fn dc_get_userdata(context: &mut dc_context_t) -> *mut libc::c_void {
|
||||
@@ -368,7 +363,7 @@ pub unsafe fn dc_open(
|
||||
if !(0
|
||||
== dc_sqlite3_open(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&mut context.sql.clone().write().unwrap(),
|
||||
dbfile,
|
||||
0i32,
|
||||
))
|
||||
@@ -400,46 +395,27 @@ pub unsafe fn dc_set_config(
|
||||
if strcmp(key, b"selfavatar\x00" as *const u8 as *const libc::c_char) == 0 && !value.is_null() {
|
||||
rel_path = dc_strdup(value);
|
||||
if !(0 == dc_make_rel_and_copy(context, &mut rel_path)) {
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
rel_path,
|
||||
)
|
||||
ret =
|
||||
dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, rel_path)
|
||||
}
|
||||
} else if strcmp(key, b"inbox_watch\x00" as *const u8 as *const libc::c_char) == 0 {
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
value,
|
||||
);
|
||||
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
|
||||
dc_interrupt_imap_idle(context);
|
||||
} else if strcmp(
|
||||
key,
|
||||
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
|
||||
) == 0
|
||||
{
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
value,
|
||||
);
|
||||
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
|
||||
dc_interrupt_sentbox_idle(context);
|
||||
} else if strcmp(key, b"mvbox_watch\x00" as *const u8 as *const libc::c_char) == 0 {
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
value,
|
||||
);
|
||||
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
|
||||
dc_interrupt_mvbox_idle(context);
|
||||
} else if strcmp(key, b"selfstatus\x00" as *const u8 as *const libc::c_char) == 0 {
|
||||
let mut def = dc_stock_str(context, 13);
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
key,
|
||||
if value.is_null() || strcmp(value, def) == 0 {
|
||||
0 as *const libc::c_char
|
||||
@@ -449,12 +425,7 @@ pub unsafe fn dc_set_config(
|
||||
);
|
||||
free(def as *mut libc::c_void);
|
||||
} else {
|
||||
ret = dc_sqlite3_set_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
key,
|
||||
value,
|
||||
);
|
||||
ret = dc_sqlite3_set_config(context, &context.sql.clone().read().unwrap(), key, value);
|
||||
}
|
||||
free(rel_path as *mut libc::c_void);
|
||||
ret
|
||||
@@ -532,7 +503,7 @@ pub unsafe fn dc_get_config(context: &dc_context_t, key: *const libc::c_char) ->
|
||||
if strcmp(key, b"selfavatar\x00" as *const u8 as *const libc::c_char) == 0 {
|
||||
let mut rel_path: *mut libc::c_char = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
key,
|
||||
0 as *const libc::c_char,
|
||||
);
|
||||
@@ -543,7 +514,7 @@ pub unsafe fn dc_get_config(context: &dc_context_t, key: *const libc::c_char) ->
|
||||
} else {
|
||||
value = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
key,
|
||||
0 as *const libc::c_char,
|
||||
)
|
||||
@@ -702,18 +673,18 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
|
||||
dc_loginparam_read(
|
||||
context,
|
||||
l,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
dc_loginparam_read(
|
||||
context,
|
||||
l2,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
displayname = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"displayname\x00" as *const u8 as *const libc::c_char,
|
||||
0 as *const libc::c_char,
|
||||
);
|
||||
@@ -723,31 +694,31 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
|
||||
contacts = dc_get_real_contact_cnt(context) as libc::c_int;
|
||||
is_configured = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured\x00" as *const u8 as *const libc::c_char,
|
||||
0,
|
||||
);
|
||||
dbversion = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"dbversion\x00" as *const u8 as *const libc::c_char,
|
||||
0,
|
||||
);
|
||||
e2ee_enabled = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"e2ee_enabled\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
mdns_enabled = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"mdns_enabled\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
let mut stmt: *mut sqlite3_stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM keypairs;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_step(stmt);
|
||||
@@ -755,7 +726,7 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
|
||||
sqlite3_finalize(stmt);
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT COUNT(*) FROM acpeerstates;\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
sqlite3_step(stmt);
|
||||
@@ -765,7 +736,7 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
|
||||
context,
|
||||
self_public,
|
||||
(*l2).addr,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
) {
|
||||
fingerprint_str = dc_key_get_fingerprint(context, self_public)
|
||||
} else {
|
||||
@@ -775,43 +746,43 @@ pub unsafe fn dc_get_info(context: &dc_context_t) -> *mut libc::c_char {
|
||||
l2_readable_str = dc_loginparam_get_readable(l2);
|
||||
inbox_watch = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"inbox_watch\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
sentbox_watch = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"sentbox_watch\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
mvbox_watch = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"mvbox_watch\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
mvbox_move = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"mvbox_move\x00" as *const u8 as *const libc::c_char,
|
||||
1,
|
||||
);
|
||||
folders_configured = dc_sqlite3_get_config_int(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"folders_configured\x00" as *const u8 as *const libc::c_char,
|
||||
0,
|
||||
);
|
||||
configured_sentbox_folder = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
|
||||
b"<unset>\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
configured_mvbox_folder = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
|
||||
b"<unset>\x00" as *const u8 as *const libc::c_char,
|
||||
);
|
||||
@@ -924,7 +895,7 @@ pub unsafe fn dc_get_fresh_msgs(context: &dc_context_t) -> *mut dc_array_t {
|
||||
if !ret.is_null() {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT m.id FROM msgs m LEFT JOIN contacts ct \
|
||||
ON m.from_id=ct.id LEFT JOIN chats c ON m.chat_id=c.id WHERE m.state=? \
|
||||
AND m.hidden=0 \
|
||||
@@ -970,7 +941,7 @@ pub unsafe fn dc_search_msgs(
|
||||
if 0 != chat_id {
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN contacts ct ON m.from_id=ct.id WHERE m.chat_id=? \
|
||||
AND m.hidden=0 \
|
||||
AND ct.blocked=0 AND (txt LIKE ? OR ct.name LIKE ?) ORDER BY m.timestamp,m.id;\x00"
|
||||
@@ -983,7 +954,7 @@ pub unsafe fn dc_search_msgs(
|
||||
let mut show_deaddrop = 0;
|
||||
stmt = dc_sqlite3_prepare(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"SELECT m.id, m.timestamp FROM msgs m LEFT JOIN contacts ct ON m.from_id=ct.id \
|
||||
LEFT JOIN chats c ON m.chat_id=c.id WHERE m.chat_id>9 AND m.hidden=0 \
|
||||
AND (c.blocked=0 OR c.blocked=?) \
|
||||
@@ -1041,7 +1012,7 @@ pub unsafe fn dc_is_sentbox(
|
||||
) -> libc::c_int {
|
||||
let mut sentbox_name = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_sentbox_folder\x00" as *const u8 as *const libc::c_char,
|
||||
0 as *const libc::c_char,
|
||||
);
|
||||
@@ -1060,7 +1031,7 @@ pub unsafe fn dc_is_sentbox(
|
||||
pub unsafe fn dc_is_mvbox(context: &dc_context_t, folder_name: *const libc::c_char) -> libc::c_int {
|
||||
let mut mvbox_name = dc_sqlite3_get_config(
|
||||
context,
|
||||
&mut context.sql.clone().lock().unwrap(),
|
||||
&context.sql.clone().read().unwrap(),
|
||||
b"configured_mvbox_folder\x00" as *const u8 as *const libc::c_char,
|
||||
0 as *const libc::c_char,
|
||||
);
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user