]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Add meshlink_set_node_channel_timeout().
[meshlink] / src / meshlink.c
index 4162b36e7c7f569b01be95f675546868ccc16d1c..2db62ea1b01716d4563df1be696e83ba7ee4bfa0 100644 (file)
@@ -3446,6 +3446,25 @@ size_t meshlink_channel_get_recvq(meshlink_handle_t *mesh, meshlink_channel_t *c
        return utcp_get_recvq(channel->c);
 }
 
+void meshlink_set_node_channel_timeout(meshlink_handle_t *mesh, meshlink_node_t *node, int timeout) {
+       if(!mesh || !node) {
+               meshlink_errno = MESHLINK_EINVAL;
+               return;
+       }
+
+       node_t *n = (node_t *)node;
+
+       pthread_mutex_lock(&mesh->mesh_mutex);
+
+       if(!n->utcp) {
+               n->utcp = utcp_init(channel_accept, channel_pre_accept, channel_send, n);
+       }
+
+       utcp_set_user_timeout(n->utcp, timeout);
+
+       pthread_mutex_unlock(&mesh->mesh_mutex);
+}
+
 void update_node_status(meshlink_handle_t *mesh, node_t *n) {
        if(n->status.reachable && mesh->channel_accept_cb && !n->utcp) {
                n->utcp = utcp_init(channel_accept, channel_pre_accept, channel_send, n);
@@ -3535,7 +3554,7 @@ void handle_network_change(meshlink_handle_t *mesh, bool online) {
        retry(mesh);
 }
 
-void call_error_cb(meshlink_handle_t *mesh) {
+void call_error_cb(meshlink_handle_t *mesh, meshlink_errno_t meshlink_errno) {
        // We should only call the callback function if we are in the background thread.
        if(!mesh->error_cb) {
                return;