diff --git a/src/ssb.rpc.c b/src/ssb.rpc.c index 48f7e865..dcd0cdf4 100644 --- a/src/ssb.rpc.c +++ b/src/ssb.rpc.c @@ -605,6 +605,7 @@ static void _tf_ssb_rpc_connection_blobs_createWants_callback( if (!JS_IsUndefined(name)) { /* { name: "Error" } */ + tf_ssb_connection_remove_request(connection, -request_number); JS_FreeValue(context, name); return; } @@ -1136,6 +1137,7 @@ static void _tf_ssb_rpc_ebt_replicate(tf_ssb_connection_t* connection, uint8_t f if (_is_error(context, args)) { /* TODO: Send createHistoryStream. */ + tf_ssb_connection_remove_request(connection, -request_number); return; } @@ -1222,21 +1224,24 @@ static void _tf_ssb_rpc_connections_changed_callback(tf_ssb_t* ssb, tf_ssb_chang JSContext* context = tf_ssb_get_context(ssb); if (change == k_tf_ssb_change_connect) { - JSValue message = JS_NewObject(context); - JSValue name = JS_NewArray(context); - JS_SetPropertyUint32(context, name, 0, JS_NewString(context, "blobs")); - JS_SetPropertyUint32(context, name, 1, JS_NewString(context, "createWants")); - JS_SetPropertyStr(context, message, "name", name); - JS_SetPropertyStr(context, message, "type", JS_NewString(context, "source")); - JS_SetPropertyStr(context, message, "args", JS_NewArray(context)); - tf_ssb_connection_rpc_send_json(connection, k_ssb_rpc_flag_stream | k_ssb_rpc_flag_new_request, tf_ssb_connection_next_request_number(connection), "blobs.createWants", - message, _tf_ssb_rpc_connection_blobs_createWants_callback, NULL, NULL); - JS_FreeValue(context, message); + if (tf_ssb_is_replicator(ssb)) + { + JSValue message = JS_NewObject(context); + JSValue name = JS_NewArray(context); + JS_SetPropertyUint32(context, name, 0, JS_NewString(context, "blobs")); + JS_SetPropertyUint32(context, name, 1, JS_NewString(context, "createWants")); + JS_SetPropertyStr(context, message, "name", name); + JS_SetPropertyStr(context, message, "type", JS_NewString(context, "source")); + JS_SetPropertyStr(context, message, "args", JS_NewArray(context)); + tf_ssb_connection_rpc_send_json(connection, k_ssb_rpc_flag_stream | k_ssb_rpc_flag_new_request, tf_ssb_connection_next_request_number(connection), "blobs.createWants", + message, _tf_ssb_rpc_connection_blobs_createWants_callback, NULL, NULL); + JS_FreeValue(context, message); + } if (tf_ssb_connection_is_client(connection)) { - message = JS_NewObject(context); - name = JS_NewArray(context); + JSValue message = JS_NewObject(context); + JSValue name = JS_NewArray(context); JS_SetPropertyUint32(context, name, 0, JS_NewString(context, "tunnel")); JS_SetPropertyUint32(context, name, 1, JS_NewString(context, "isRoom")); JS_SetPropertyStr(context, message, "name", name);