Don't leave dead outgoing_t's in the outgoing_list.

If an outgoing connection cannot be made because no address is known for
it, it should be removed from the outgoing_list, otherwise it will
prevent it from being re-added later when we do know addresses for it.
This commit is contained in:
Guus Sliepen 2015-11-24 16:48:44 +01:00
parent c58eba587d
commit 9fdf4278f8

View file

@ -604,9 +604,12 @@ void setup_outgoing_connection(outgoing_t *outgoing) {
if(n && n->connection) {
logger(DEBUG_CONNECTIONS, LOG_INFO, "Already connected to %s", outgoing->name);
n->connection->outgoing = outgoing;
return;
if(!n->connection->outgoing) {
n->connection->outgoing = outgoing;
return;
} else {
goto remove;
}
}
init_configuration(&outgoing->config_tree);
@ -618,11 +621,16 @@ void setup_outgoing_connection(outgoing_t *outgoing) {
outgoing->aip = outgoing->ai = get_known_addresses(n);
if(!outgoing->ai) {
logger(DEBUG_ALWAYS, LOG_DEBUG, "No address known for %s", outgoing->name);
return;
goto remove;
}
}
do_outgoing_connection(outgoing);
return;
remove:
list_delete(outgoing_list, outgoing);
free(outgoing);
}
/*