]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Refactor the non-blackbox test suite.
[meshlink] / src / meshlink.c
index a9988855e9493a77492852559e4ad4df4affc002..f504e5af116e1ec8006c7a46d37b3665dee0a89a 100644 (file)
@@ -516,7 +516,7 @@ static bool try_bind(int port) {
 
 static int check_port(meshlink_handle_t *mesh) {
        for(int i = 0; i < 1000; i++) {
-               int port = 0x1000 + (rand() & 0x7fff);
+               int port = 0x1000 + prng(mesh, 0x8000);
 
                if(try_bind(port)) {
                        free(mesh->myport);
@@ -1286,6 +1286,8 @@ meshlink_handle_t *meshlink_open_ex(const meshlink_open_params_t *params) {
        mesh->log_cb = global_log_cb;
        mesh->log_level = global_log_level;
 
+       randomize(&mesh->prng_state, sizeof(mesh->prng_state));
+
        memcpy(mesh->dev_class_traits, default_class_traits, sizeof(default_class_traits));
 
        if(usingname) {
@@ -1773,8 +1775,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) {
@@ -3521,9 +3524,6 @@ void handle_network_change(meshlink_handle_t *mesh, bool online) {
 
 static void __attribute__((constructor)) meshlink_init(void) {
        crypto_init();
-       unsigned int seed;
-       randomize(&seed, sizeof(seed));
-       srand(seed);
 }
 
 static void __attribute__((destructor)) meshlink_exit(void) {