@@ -223,7 +223,7 @@ int exm_set_change_keys(TPROPVAL_ARRAY *props, eid_t change_num,
223223 return -ENOMEM;
224224 }
225225 std::unique_ptr<BINARY, gi_delete> pclbin (pcl.serialize ());
226- if (pclbin == nullptr ){
226+ if (pclbin == nullptr ) {
227227 fprintf (stderr, " exm: pcl_serialize: ENOMEM\n " );
228228 return -ENOMEM;
229229 }
@@ -377,38 +377,17 @@ int exm_create_msg(uint64_t parent_fld, MESSAGE_CONTENT *ctnt)
377377 fprintf (stderr, " exm: allocate_cn(msg) RPC failed\n " );
378378 return -EIO;
379379 }
380-
381- XID zxid{g_public_folder ? rop_util_make_domain_guid (g_user_id) :
382- rop_util_make_user_guid (g_user_id), change_num};
383- char tmp_buff[22 ];
384- BINARY bxid;
385- EXT_PUSH ep;
386- if (!ep.init (tmp_buff, std::size (tmp_buff), 0 ) ||
387- ep.p_xid (zxid) != pack_result::ok) {
388- fprintf (stderr, " exm: ext_push: ENOMEM\n " );
389- return -ENOMEM;
390- }
391- bxid.pv = tmp_buff;
392- bxid.cb = ep.m_offset ;
393- PCL pcl;
394- if (!pcl.append (zxid)) {
395- fprintf (stderr, " exm: pcl_append: ENOMEM\n " );
396- return -ENOMEM;
397- }
398- std::unique_ptr<BINARY, gi_delete> pclbin (pcl.serialize ());
399- if (pclbin == nullptr ){
400- fprintf (stderr, " exm: pcl_serialize: ENOMEM\n " );
401- return -ENOMEM;
402- }
403- auto props = &ctnt->proplist ;
404380 ec_error_t ret;
405- if ((ret = props->set (PidTagMid, &msg_id)) != ecSuccess ||
406- (ret = props->set (PidTagChangeNumber, &change_num)) != ecSuccess ||
407- (ret = props->set (PR_CHANGE_KEY, &bxid)) != ecSuccess ||
408- (ret = props->set (PR_PREDECESSOR_CHANGE_LIST, pclbin.get ())) != ecSuccess) {
381+ if ((ret = ctnt->proplist .set (PidTagMid, &msg_id)) != ecSuccess) {
409382 fprintf (stderr, " exm: tpropval: %s\n " , mapi_strerror (ret));
410383 return ece2nerrno (ret);
411384 }
385+ auto iret = exm_set_change_keys (&ctnt->proplist , change_num);
386+ if (iret != 0 ) {
387+ fprintf (stderr, " exm: tpropval: %s\n " , strerror (-iret));
388+ return iret;
389+ }
390+
412391 if (!exmdb_client->write_message (g_storedir, CP_UTF8, parent_fld, ctnt, &ret)) {
413392 fprintf (stderr, " exm: write_message RPC failed\n " );
414393 return -EIO;
0 commit comments