Skip to content

Commit 95867fa

Browse files
committed
exmdb: make EXRPC write_message_v2 fill in return MID/CN values
Fixes: gromox-2.27-37-gefb9b1722
1 parent 095ab7b commit 95867fa

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

exch/exmdb/message.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3825,10 +3825,7 @@ BOOL exmdb_server::write_message_v2(const char *dir, cpid_t cpid,
38253825
uint64_t folder_id, const MESSAGE_CONTENT *pmsgctnt,
38263826
uint64_t *outmid, uint64_t *outcn, ec_error_t *pe_result)
38273827
{
3828-
BOOL b_exist;
3829-
uint64_t mid_val = 0, cn_val = 0, fid_val1 = 0;
3830-
3831-
b_exist = FALSE;
3828+
BOOL b_exist = false;
38323829
auto pmid = pmsgctnt->proplist.get<uint64_t>(PidTagMid);
38333830
auto pdb = db_engine_get_db(dir);
38343831
if (!pdb)
@@ -3843,12 +3840,13 @@ BOOL exmdb_server::write_message_v2(const char *dir, cpid_t cpid,
38433840
}
38443841
auto fid_val = rop_util_get_gc_value(folder_id);
38453842
if (NULL != pmid) {
3843+
uint64_t parent_fid = 0;
38463844
if (!common_util_get_message_parent_folder(pdb->psqlite,
3847-
rop_util_get_gc_value(*pmid), &fid_val1))
3845+
rop_util_get_gc_value(*pmid), &parent_fid))
38483846
return FALSE;
3849-
if (0 != fid_val1) {
3847+
if (parent_fid != 0) {
38503848
b_exist = TRUE;
3851-
if (fid_val != fid_val1) {
3849+
if (fid_val != parent_fid) {
38523850
*pe_result = ecRpcFailed;
38533851
return TRUE;
38543852
}
@@ -3861,9 +3859,9 @@ BOOL exmdb_server::write_message_v2(const char *dir, cpid_t cpid,
38613859

38623860
bool partial = false;
38633861
if (!message_write_message(false, pdb->psqlite, cpid, false,
3864-
fid_val, pmsgctnt, &mid_val, &cn_val, &partial))
3862+
fid_val, pmsgctnt, outmid, outcn, &partial))
38653863
return FALSE;
3866-
if (0 == mid_val) {
3864+
if (*outmid == 0) {
38673865
// auto rollback at end of scope
38683866
*pe_result = ecRpcFailed;
38693867
return false;
@@ -3873,12 +3871,12 @@ BOOL exmdb_server::write_message_v2(const char *dir, cpid_t cpid,
38733871
db_conn::NOTIFQ notifq;
38743872
if (b_exist) {
38753873
pdb->proc_dynamic_event(cpid, dynamic_event::modify_msg,
3876-
fid_val, mid_val, 0, *dbase, notifq);
3877-
pdb->notify_message_modification(fid_val, mid_val, *dbase, notifq);
3874+
fid_val, *outmid, 0, *dbase, notifq);
3875+
pdb->notify_message_modification(fid_val, *outmid, *dbase, notifq);
38783876
} else {
38793877
pdb->proc_dynamic_event(cpid, dynamic_event::new_msg, fid_val,
3880-
mid_val, 0, *dbase, notifq);
3881-
pdb->notify_message_creation(fid_val, mid_val, *dbase, notifq);
3878+
*outmid, 0, *dbase, notifq);
3879+
pdb->notify_message_creation(fid_val, *outmid, *dbase, notifq);
38823880
}
38833881
if (sql_transact.commit() != SQLITE_OK)
38843882
return false;

0 commit comments

Comments
 (0)