diff --git a/src/bake-bulk-rpc.h b/src/bake-bulk-rpc.h index 421fe5fbecc7b93c052a86c4e04ffb0133e9ad32..8503e08ed7411cbf425e319e06ba692727b270f1 100644 --- a/src/bake-bulk-rpc.h +++ b/src/bake-bulk-rpc.h @@ -131,7 +131,16 @@ static inline hg_return_t hg_proc_bake_bulk_eager_write_in_t(hg_proc_t proc, voi hg_proc_bake_bulk_region_id_t(proc, &in->rid); hg_proc_uint64_t(proc, &in->region_offset); hg_proc_uint32_t(proc, &in->size); + if(hg_proc_get_op(proc) == HG_DECODE) + { + in->buffer = malloc(in->size); + } hg_proc_memcpy(proc, in->buffer, in->size); + if(hg_proc_get_op(proc) == HG_FREE) + { + if(in->buffer) + free(in->buffer); + } return(HG_SUCCESS); } diff --git a/src/bake-bulk-server.c b/src/bake-bulk-server.c index 52beb323aef7497fb03283933c672e8f5e90b347..cac3fff2567ea99e28c32bcd112fb30f9f72aa1b 100644 --- a/src/bake-bulk-server.c +++ b/src/bake-bulk-server.c @@ -127,6 +127,9 @@ int main(int argc, char **argv) MERCURY_REGISTER(hg_class, "bake_bulk_write_rpc", bake_bulk_write_in_t, bake_bulk_write_out_t, bake_bulk_write_ult_handler); + MERCURY_REGISTER(hg_class, "bake_bulk_eager_write_rpc", bake_bulk_eager_write_in_t, + bake_bulk_eager_write_out_t, + bake_bulk_eager_write_ult_handler); MERCURY_REGISTER(hg_class, "bake_bulk_persist_rpc", bake_bulk_persist_in_t, bake_bulk_persist_out_t, bake_bulk_persist_ult_handler);