diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index b2f03710..3710b350 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -1024,27 +1024,31 @@ static void _tf_ssb_rpc_ebt_replicate(tf_ssb_connection_t* connection, uint8_t f JSValue name = JS_GetPropertyStr(context, args, "name"); JSValue in_clock = JS_IsUndefined(name) ? args : JS_UNDEFINED; + bool resend_clock = false; + if (!JS_IsUndefined(author)) { /* Looks like a message. */ tf_ssb_connection_adjust_read_backpressure(connection, 1); tf_ssb_verify_strip_and_store_message(ssb, args, _tf_ssb_rpc_ebt_replicate_store_callback, connection); - if (!tf_ssb_is_shutting_down(ssb) && !tf_ssb_connection_is_closing(connection)) - { - resend_clock_t* resend = tf_malloc(sizeof(resend_clock_t)); - *resend = (resend_clock_t) { - .connection = connection, - .request_number = request_number, - }; - tf_ssb_connection_schedule_idle(connection, "ebt.clock", _tf_ssb_rpc_ebt_replicate_resend_clock, resend); - } + resend_clock = !tf_ssb_is_shutting_down(ssb) && !tf_ssb_connection_is_closing(connection); } else { tf_ssb_ebt_t* ebt = tf_ssb_connection_get_ebt(connection); tf_ssb_ebt_receive_clock(ebt, context, in_clock); - tf_ssb_ebt_get_send_clock(ebt, request_number, _tf_ssb_rpc_ebt_send_clock_callback, connection); + resend_clock = true; + } + + if (resend_clock) + { + resend_clock_t* resend = tf_malloc(sizeof(resend_clock_t)); + *resend = (resend_clock_t) { + .connection = connection, + .request_number = request_number, + }; + tf_ssb_connection_schedule_idle(connection, "ebt.clock", _tf_ssb_rpc_ebt_replicate_resend_clock, resend); } JS_FreeValue(context, name); JS_FreeValue(context, author);