X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.c;h=5940c70e8e54fdac55e32c3d27e93a6a4bd7eb6c;hb=83c20878a6ef6e1e3a1abad17961e02137f16ab5;hp=90d64648ae8945384ac110e1ac3a716ab2a27c72;hpb=99b4836a1e463a225a003623cce09f462d77f4d2;p=meshlink diff --git a/src/meshlink.c b/src/meshlink.c index 90d64648..5940c70e 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -1773,8 +1773,9 @@ bool meshlink_send(meshlink_handle_t *mesh, meshlink_node_t *destination, const return true; } -void meshlink_send_from_queue(event_loop_t *loop, meshlink_handle_t *mesh) { +void meshlink_send_from_queue(event_loop_t *loop, void *data) { (void)loop; + meshlink_handle_t *mesh = data; vpn_packet_t *packet = meshlink_queue_pop(&mesh->outpacketqueue); if(!packet) { @@ -1857,6 +1858,11 @@ meshlink_node_t *meshlink_get_node(meshlink_handle_t *mesh, const char *name) { pthread_mutex_lock(&(mesh->mesh_mutex)); node = (meshlink_node_t *)lookup_node(mesh, (char *)name); // TODO: make lookup_node() use const pthread_mutex_unlock(&(mesh->mesh_mutex)); + + if(!node) { + meshlink_errno = MESHLINK_ENOENT; + } + return node; } @@ -1871,6 +1877,11 @@ meshlink_submesh_t *meshlink_get_submesh(meshlink_handle_t *mesh, const char *na pthread_mutex_lock(&(mesh->mesh_mutex)); submesh = (meshlink_submesh_t *)lookup_submesh(mesh, name); pthread_mutex_unlock(&(mesh->mesh_mutex)); + + if(!submesh) { + meshlink_errno = MESHLINK_ENOENT; + } + return submesh; } @@ -3502,7 +3513,7 @@ void meshlink_set_dev_class_timeouts(meshlink_handle_t *mesh, dev_class_t devcla void handle_network_change(meshlink_handle_t *mesh, bool online) { (void)online; - if(!mesh->connections) { + if(!mesh->connections || !mesh->loop.running) { return; }