summaryrefslogtreecommitdiffstats
path: root/src/peer.c
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2013-07-25 13:49:01 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2013-07-25 13:49:01 +0200
commitfcc5bcad1add369b7b9e0a25cc63b88dfb83e5fe (patch)
tree87c22a602541d499d2a416e42facaa2a74ea4aae /src/peer.c
parent530c6eaf60cb76ab79b326c348b2039ed396e687 (diff)
downloadfastd-fcc5bcad1add369b7b9e0a25cc63b88dfb83e5fe.tar
fastd-fcc5bcad1add369b7b9e0a25cc63b88dfb83e5fe.zip
Improve handling of similar remote resolves
Diffstat (limited to 'src/peer.c')
-rw-r--r--src/peer.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/peer.c b/src/peer.c
index 3915b8e..9b15332 100644
--- a/src/peer.c
+++ b/src/peer.c
@@ -195,7 +195,7 @@ static void setup_peer(fastd_context_t *ctx, fastd_peer_t *peer) {
ctx->conf->protocol->init_peer_state(ctx, peer);
if(peer->next_remote) {
- if (fastd_peer_remote_is_dynamic(peer->next_remote)) {
+ if (fastd_remote_is_dynamic(peer->next_remote)) {
peer->state = STATE_RESOLVING;
fastd_resolve_peer(ctx, peer, peer->next_remote);
}
@@ -234,7 +234,7 @@ static void delete_peer(fastd_context_t *ctx, fastd_peer_t *peer) {
fastd_remote_t *remote = peer->remotes;
peer->remotes = remote->next;
- free(remote);
+ fastd_remote_unref(remote);
}
free(peer);
@@ -400,7 +400,7 @@ bool fastd_peer_claim_address(fastd_context_t *ctx, fastd_peer_t *new_peer, fast
return true;
}
-static bool fastd_remote_configs_equal(const fastd_remote_config_t *remote1, const fastd_remote_config_t *remote2) {
+static bool remote_configs_equal(const fastd_remote_config_t *remote1, const fastd_remote_config_t *remote2) {
if (!remote1 && !remote2)
return true;
@@ -413,7 +413,7 @@ static bool fastd_remote_configs_equal(const fastd_remote_config_t *remote1, con
if (!strequal(remote1->hostname, remote2->hostname))
return false;
- return fastd_remote_configs_equal(remote1->next, remote2->next);
+ return remote_configs_equal(remote1->next, remote2->next);
}
bool fastd_peer_config_equal(const fastd_peer_config_t *peer1, const fastd_peer_config_t *peer2) {
@@ -423,7 +423,7 @@ bool fastd_peer_config_equal(const fastd_peer_config_t *peer1, const fastd_peer_
if(peer1->floating != peer2->floating)
return false;
- if (!fastd_remote_configs_equal(peer1->remotes, peer2->remotes))
+ if (!remote_configs_equal(peer1->remotes, peer2->remotes))
return false;
if (!strequal(peer1->key, peer2->key))
@@ -487,6 +487,7 @@ fastd_peer_t* fastd_peer_add(fastd_context_t *ctx, fastd_peer_config_t *peer_con
while (remote_config) {
*remote = calloc(1, sizeof(fastd_remote_t));
+ (*remote)->ref = 1;
(*remote)->config = remote_config;
if (!remote_config->hostname)
@@ -580,7 +581,7 @@ const fastd_eth_addr_t* fastd_get_dest_address(const fastd_context_t *ctx, fastd
}
}
-bool fastd_peer_remote_matches_dynamic(const fastd_remote_config_t *remote, const fastd_peer_address_t *addr) {
+bool fastd_remote_matches_dynamic(const fastd_remote_config_t *remote, const fastd_peer_address_t *addr) {
if (!remote->hostname)
return false;