#include "xalloc.h"
void init_connections(meshlink_handle_t *mesh) {
+ assert(!mesh->connections);
+ assert(!mesh->everyone);
+
mesh->connections = list_alloc((list_action_t) free_connection);
mesh->everyone = new_connection();
mesh->everyone->name = xstrdup("mesh->everyone");
list_delete_list(mesh->connections);
}
- free_connection(mesh->everyone);
+ if(mesh->everyone) {
+ free_connection(mesh->everyone);
+ }
mesh->connections = NULL;
mesh->everyone = NULL;
}
void free_connection(connection_t *c) {
- if(!c) {
- return;
- }
+ assert(c);
sptps_stop(&c->sptps);
ecdsa_free(c->ecdsa);
free(c->name);
- if(c->config_tree) {
- exit_configuration(&c->config_tree);
- }
-
free(c);
}
void connection_add(meshlink_handle_t *mesh, connection_t *c) {
+ assert(c);
+
c->mesh = mesh;
list_insert_tail(mesh->connections, c);
}
void connection_del(meshlink_handle_t *mesh, connection_t *c) {
+ assert(c);
+
io_del(&mesh->loop, &c->io);
list_delete(mesh->connections, c);
}