diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index acc13bc45..ab64eb898 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -83,6 +83,19 @@ static void _tf_ssb_rpc_blobs_get_after_work(tf_ssb_connection_t* connection, in tf_free(work); } +static void _tf_ssb_blobs_get_callback(tf_ssb_connection_t* connection, bool skip, void* user_data) +{ + blobs_get_work_t* work = user_data; + if (!skip) + { + tf_ssb_connection_run_work(connection, _tf_ssb_rpc_blobs_get_work, _tf_ssb_rpc_blobs_get_after_work, work); + } + else + { + _tf_ssb_rpc_blobs_get_after_work(connection, -1, work); + } +} + static void _tf_ssb_rpc_blobs_get(tf_ssb_connection_t* connection, uint8_t flags, int32_t request_number, JSValue args, const uint8_t* message, size_t size, void* user_data) { if (flags & k_ssb_rpc_flag_end_error) @@ -122,7 +135,7 @@ static void _tf_ssb_rpc_blobs_get(tf_ssb_connection_t* connection, uint8_t flags .request_number = request_number, }; snprintf(work->id, sizeof(work->id), "%s", id); - tf_ssb_connection_run_work(connection, _tf_ssb_rpc_blobs_get_work, _tf_ssb_rpc_blobs_get_after_work, work); + tf_ssb_connection_schedule_idle(connection, id, _tf_ssb_blobs_get_callback, work); JS_FreeCString(context, id); JS_FreeValue(context, arg);