diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-09-10 14:12:52 -0400 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-09-10 15:02:07 -0400 |
commit | e293c204a07f5a7a862e835f8a5f54f5435f8b91 (patch) | |
tree | 5b58eb733e383c9acb00594973b5bc50580ac738 /src | |
parent | 35bc9ddf636734a424b8f69ca7a49af071193002 (diff) |
Support async futures that have empty response.
Diffstat (limited to 'src')
-rw-r--r-- | src/handlers.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/handlers.rs b/src/handlers.rs index 586f3dbbf..2fff5a06f 100644 --- a/src/handlers.rs +++ b/src/handlers.rs @@ -97,13 +97,20 @@ pub extern "C" fn msg_from_js(d: *const DenoC, buf: deno_buf) { let future = future.and_then(move |maybe_box_u8| { let buf = match maybe_box_u8 { Some(box_u8) => deno_buf_from(box_u8), - // Send back null deno_buf. - None => deno_buf { - alloc_ptr: 0 as *mut u8, - alloc_len: 0, - data_ptr: 0 as *mut u8, - data_len: 0, - }, + None => { + // async RPCs that return None still need to + // send a message back to signal completion. + let builder = &mut FlatBufferBuilder::new(); + deno_buf_from( + serialize_response( + cmd_id, + builder, + msg::BaseArgs { + ..Default::default() + }, + ).unwrap(), + ) + } }; // TODO(ry) make this thread safe. unsafe { libdeno::deno_send(d, buf) }; |