diff options
-rw-r--r-- | changes/ticket40231 | 4 | ||||
-rw-r--r-- | src/feature/relay/relay_find_addr.c | 10 |
2 files changed, 11 insertions, 3 deletions
diff --git a/changes/ticket40231 b/changes/ticket40231 new file mode 100644 index 0000000000..a5ba598fd1 --- /dev/null +++ b/changes/ticket40231 @@ -0,0 +1,4 @@ + o Minor bugfixes (relay): + - If we were unable to build our descriptor, don't mark that we've + advertised our descriptor. Also remove an harmless BUG(). Fixes bug 40231; + bugfix on 0.4.5.1-alpha. diff --git a/src/feature/relay/relay_find_addr.c b/src/feature/relay/relay_find_addr.c index 9c2c8b281c..2da2328b14 100644 --- a/src/feature/relay/relay_find_addr.c +++ b/src/feature/relay/relay_find_addr.c @@ -198,9 +198,13 @@ relay_addr_learn_from_dirauth(void) return; } const node_t *node = node_get_by_id(rs->identity_digest); - if (BUG(!node)) { - /* If there is a routerstatus_t, there is a node_t thus this should - * never fail. */ + if (!node) { + /* This can happen if we are still in the early starting stage where no + * descriptors we actually fetched and thus we have the routerstatus_t + * for the authority but not its descriptor which is needed to build a + * circuit and thus learn our address. */ + log_info(LD_GENERAL, "Can't build a circuit to an authority. Unable to " + "learn for now our address from them."); return; } extend_info_t *ei = extend_info_from_node(node, 1); |