#define _GNU_SOURCE 1
+
+#ifdef NDEBUG
+#undef NDEBUG
+#endif
+
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include "../src/meshlink.h"
static struct sync_flag bar_responded;
+static struct sync_flag foo_connected;
static struct sync_flag foo_gone;
static void foo_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
static void bar_receive_cb(meshlink_handle_t *mesh, meshlink_channel_t *channel, const void *data, size_t len) {
// Echo the data back.
if(len) {
- meshlink_channel_send(mesh, channel, data, len);
+ assert(meshlink_channel_send(mesh, channel, data, len) == (ssize_t)len);
} else {
meshlink_channel_close(mesh, channel);
}
meshlink_set_node_status_cb(mesh, bar_status_cb);
meshlink_set_channel_receive_cb(mesh, channel, bar_receive_cb);
+ set_sync_flag(&foo_connected, true);
if(data) {
bar_receive_cb(mesh, channel, data, len);
meshlink_enable_discovery(mesh, false);
- meshlink_add_address(mesh, "localhost");
+ assert(meshlink_add_address(mesh, "localhost"));
char *data = meshlink_export(mesh);
assert(data);
meshlink_enable_discovery(mesh, false);
- meshlink_add_address(mesh, "localhost");
+ assert(meshlink_add_address(mesh, "localhost"));
char *data = meshlink_export(mesh);
assert(data);
assert(meshlink_start(mesh));
+ assert(wait_sync_flag(&foo_connected, 20));
assert(wait_sync_flag(&foo_gone, 20));
meshlink_close(mesh);