X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.c;h=1540df37344ace42cc87c70cc07160401fd914e7;hb=0fdc99b6a501992b8c1dea2d1a909363b5564d0d;hp=009839314cba71ca319455d657896c4d8bcd9cd1;hpb=f00c8df9175fc1aed22f3a889ca039beb78bb98d;p=meshlink diff --git a/src/meshlink.c b/src/meshlink.c index 00983931..1540df37 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -391,7 +391,10 @@ static int getifaddrs_in_netns(struct ifaddrs **ifa, int netns) { #endif char *meshlink_get_local_address_for_family(meshlink_handle_t *mesh, int family) { - (void)mesh; + if(!mesh) { + meshlink_errno = MESHLINK_EINVAL; + return NULL; + } // Determine address of the local interface used for outgoing connections. char localaddr[NI_MAXHOST]; @@ -4052,9 +4055,15 @@ void meshlink_set_channel_accept_cb(meshlink_handle_t *mesh, meshlink_channel_ac } void meshlink_set_channel_sndbuf(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t size) { - (void)mesh; + meshlink_set_channel_sndbuf_storage(mesh, channel, NULL, size); +} - if(!channel) { +void meshlink_set_channel_rcvbuf(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t size) { + meshlink_set_channel_rcvbuf_storage(mesh, channel, NULL, size); +} + +void meshlink_set_channel_sndbuf_storage(meshlink_handle_t *mesh, meshlink_channel_t *channel, void *buf, size_t size) { + if(!mesh || !channel) { meshlink_errno = MESHLINK_EINVAL; return; } @@ -4063,14 +4072,26 @@ void meshlink_set_channel_sndbuf(meshlink_handle_t *mesh, meshlink_channel_t *ch abort(); } - utcp_set_sndbuf(channel->c, size); + utcp_set_sndbuf(channel->c, buf, size); pthread_mutex_unlock(&mesh->mutex); } -void meshlink_set_channel_rcvbuf(meshlink_handle_t *mesh, meshlink_channel_t *channel, size_t size) { - (void)mesh; +void meshlink_set_channel_rcvbuf_storage(meshlink_handle_t *mesh, meshlink_channel_t *channel, void *buf, size_t size) { + if(!mesh || !channel) { + meshlink_errno = MESHLINK_EINVAL; + return; + } - if(!channel) { + if(pthread_mutex_lock(&mesh->mutex) != 0) { + abort(); + } + + utcp_set_rcvbuf(channel->c, buf, size); + pthread_mutex_unlock(&mesh->mutex); +} + +void meshlink_set_channel_flags(meshlink_handle_t *mesh, meshlink_channel_t *channel, uint32_t flags) { + if(!mesh || !channel) { meshlink_errno = MESHLINK_EINVAL; return; } @@ -4079,7 +4100,7 @@ void meshlink_set_channel_rcvbuf(meshlink_handle_t *mesh, meshlink_channel_t *ch abort(); } - utcp_set_rcvbuf(channel->c, size); + utcp_set_flags(channel->c, flags); pthread_mutex_unlock(&mesh->mutex); }