mirror of
https://github.com/deltachat/deltachat-core.git
synced 2025-10-06 03:50:08 +02:00
move get-mime-headers to a separate function
This commit is contained in:
parent
2c562c051a
commit
ce90f5c063
1 changed files with 39 additions and 13 deletions
|
@ -1984,8 +1984,43 @@ static int last_msg_in_chat_encrypted(dc_sqlite3_t* sql, uint32_t chat_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int get_parent_mime_headers(const dc_chat_t* chat,
|
||||||
|
char** parent_rfc724_mid,
|
||||||
|
char** parent_in_reply_to,
|
||||||
|
char** parent_references)
|
||||||
|
{
|
||||||
|
int success = 0;
|
||||||
|
sqlite3_stmt* stmt = NULL;
|
||||||
|
|
||||||
|
if (chat==NULL
|
||||||
|
|| parent_rfc724_mid==NULL || parent_in_reply_to==NULL || parent_references==NULL) {
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
stmt = dc_sqlite3_prepare(chat->context->sql,
|
||||||
|
"SELECT rfc724_mid, mime_in_reply_to, mime_references"
|
||||||
|
" FROM msgs"
|
||||||
|
" WHERE timestamp=(SELECT max(timestamp) FROM msgs WHERE chat_id=? AND from_id!=?);");
|
||||||
|
sqlite3_bind_int (stmt, 1, chat->id);
|
||||||
|
sqlite3_bind_int (stmt, 2, DC_CONTACT_ID_SELF);
|
||||||
|
if (sqlite3_step(stmt)) {
|
||||||
|
*parent_rfc724_mid = dc_strdup((const char*)sqlite3_column_text(stmt, 0));
|
||||||
|
*parent_in_reply_to = dc_strdup((const char*)sqlite3_column_text(stmt, 1));
|
||||||
|
*parent_references = dc_strdup((const char*)sqlite3_column_text(stmt, 2));
|
||||||
|
success = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
sqlite3_finalize(stmt);
|
||||||
|
return success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static uint32_t send_msg_raw(dc_context_t* context, dc_chat_t* chat, const dc_msg_t* msg, time_t timestamp)
|
static uint32_t send_msg_raw(dc_context_t* context, dc_chat_t* chat, const dc_msg_t* msg, time_t timestamp)
|
||||||
{
|
{
|
||||||
|
char* parent_rfc724_mid = NULL;
|
||||||
|
char* parent_references = NULL;
|
||||||
|
char* parent_in_reply_to = NULL;
|
||||||
char* new_rfc724_mid = NULL;
|
char* new_rfc724_mid = NULL;
|
||||||
char* new_references = NULL;
|
char* new_references = NULL;
|
||||||
char* new_in_reply_to = NULL;
|
char* new_in_reply_to = NULL;
|
||||||
|
@ -2089,17 +2124,7 @@ static uint32_t send_msg_raw(dc_context_t* context, dc_chat_t* chat, const dc_ms
|
||||||
|
|
||||||
// setup In-Reply-To: and corresponding fields
|
// setup In-Reply-To: and corresponding fields
|
||||||
// according to RFC 5322 3.6.4, page 25
|
// according to RFC 5322 3.6.4, page 25
|
||||||
stmt = dc_sqlite3_prepare(context->sql,
|
if (get_parent_mime_headers(chat, &parent_rfc724_mid, &parent_in_reply_to, &parent_references)) {
|
||||||
"SELECT rfc724_mid, mime_in_reply_to, mime_references"
|
|
||||||
" FROM msgs"
|
|
||||||
" WHERE timestamp=(SELECT max(timestamp) FROM msgs WHERE chat_id=? AND from_id!=?);");
|
|
||||||
sqlite3_bind_int (stmt, 1, chat->id);
|
|
||||||
sqlite3_bind_int (stmt, 2, DC_CONTACT_ID_SELF);
|
|
||||||
if (sqlite3_step(stmt)) {
|
|
||||||
const char* parent_rfc724_mid = (const char*)sqlite3_column_text(stmt, 0);
|
|
||||||
const char* parent_in_reply_to = (const char*)sqlite3_column_text(stmt, 1);
|
|
||||||
const char* parent_references = (const char*)sqlite3_column_text(stmt, 2);
|
|
||||||
|
|
||||||
if (parent_rfc724_mid && parent_rfc724_mid[0]) {
|
if (parent_rfc724_mid && parent_rfc724_mid[0]) {
|
||||||
new_in_reply_to = dc_strdup(parent_rfc724_mid);
|
new_in_reply_to = dc_strdup(parent_rfc724_mid);
|
||||||
}
|
}
|
||||||
|
@ -2120,8 +2145,6 @@ static uint32_t send_msg_raw(dc_context_t* context, dc_chat_t* chat, const dc_ms
|
||||||
new_references = dc_strdup(parent_in_reply_to);
|
new_references = dc_strdup(parent_in_reply_to);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sqlite3_finalize(stmt);
|
|
||||||
stmt = NULL;
|
|
||||||
|
|
||||||
/* add message to the database */
|
/* add message to the database */
|
||||||
stmt = dc_sqlite3_prepare(context->sql,
|
stmt = dc_sqlite3_prepare(context->sql,
|
||||||
|
@ -2150,6 +2173,9 @@ static uint32_t send_msg_raw(dc_context_t* context, dc_chat_t* chat, const dc_ms
|
||||||
dc_job_add(context, DC_JOB_SEND_MSG_TO_SMTP, msg_id, NULL, 0);
|
dc_job_add(context, DC_JOB_SEND_MSG_TO_SMTP, msg_id, NULL, 0);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
free(parent_rfc724_mid);
|
||||||
|
free(parent_in_reply_to);
|
||||||
|
free(parent_references);
|
||||||
free(new_rfc724_mid);
|
free(new_rfc724_mid);
|
||||||
free(new_in_reply_to);
|
free(new_in_reply_to);
|
||||||
free(new_references);
|
free(new_references);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue