#include "system.h"
#include "conf.h"
+#include "crypto.h"
#include "connection.h"
#include "edge.h"
#include "graph.h"
#include "logger.h"
-#include "meta.h"
#include "net.h"
#include "netutl.h"
#include "node.h"
char *local_address, *local_port;
sockaddr2str(&e->local_address, &local_address, &local_port);
- x = send_request(c, "%d %x %s %s %s %s %x %d %s %s", ADD_EDGE, rand(),
+ x = send_request(c, "%d %x %s %s %s %s %x %d %s %s", ADD_EDGE, prng(UINT32_MAX),
e->from->name, e->to->name, address, port,
e->options, e->weight, local_address, local_port);
free(local_address);
free(local_port);
} else {
- x = send_request(c, "%d %x %s %s %s %s %x %d", ADD_EDGE, rand(),
+ x = send_request(c, "%d %x %s %s %s %s %x %d", ADD_EDGE, prng(UINT32_MAX),
e->from->name, e->to->name, address, port,
e->options, e->weight);
}
char to_port[MAX_STRING_SIZE];
char address_local[MAX_STRING_SIZE];
char port_local[MAX_STRING_SIZE];
- sockaddr_t address, local_address = {{0}};
+ sockaddr_t address, local_address = {0};
uint32_t options;
int weight;
/* Check if names are valid */
- if(!check_id(from_name) || !check_id(to_name)) {
+ if(!check_id(from_name) || !check_id(to_name) || !strcmp(from_name, to_name)) {
logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_EDGE", c->name,
c->hostname, "invalid name");
return false;
}
if(e->weight != weight) {
- splay_node_t *node = splay_unlink(edge_weight_tree, e);
+ splay_node_t *node = splay_unlink(&edge_weight_tree, e);
e->weight = weight;
- splay_insert_node(edge_weight_tree, node);
+ splay_insert_node(&edge_weight_tree, node);
}
} else if(from == myself) {
logger(DEBUG_PROTOCOL, LOG_WARNING, "Got %s from %s (%s) for ourself which does not exist",
}
bool send_del_edge(connection_t *c, const edge_t *e) {
- return send_request(c, "%d %x %s %s", DEL_EDGE, rand(),
+ return send_request(c, "%d %x %s %s", DEL_EDGE, prng(UINT32_MAX),
e->from->name, e->to->name);
}
/* Check if names are valid */
- if(!check_id(from_name) || !check_id(to_name)) {
+ if(!check_id(from_name) || !check_id(to_name) || !strcmp(from_name, to_name)) {
logger(DEBUG_ALWAYS, LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_EDGE", c->name,
c->hostname, "invalid name");
return false;