summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/ticket239665
-rw-r--r--src/or/nodelist.c16
2 files changed, 10 insertions, 11 deletions
diff --git a/changes/ticket23966 b/changes/ticket23966
new file mode 100644
index 0000000000..72889c4cb6
--- /dev/null
+++ b/changes/ticket23966
@@ -0,0 +1,5 @@
+ o Code simplification and refactoring:
+ - Remove duplicate code in node_has_curve25519_onion_key() and
+ node_get_curve25519_onion_key(), and add a check for a zero microdesc
+ curve25519 onion key. Closes ticket 23966, patch by "aruna1234" and
+ "teor".
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index 4eafe6d7a7..95fef43020 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1637,24 +1637,18 @@ microdesc_has_curve25519_onion_key(const microdesc_t *md)
int
node_has_curve25519_onion_key(const node_t *node)
{
- if (!node)
- return 0;
-
- if (node->ri)
- return routerinfo_has_curve25519_onion_key(node->ri);
- else if (node->md)
- return microdesc_has_curve25519_onion_key(node->md);
- else
- return 0;
+ return(node_get_curve25519_onion_key(node)!=NULL);
}
/** Return the curve25519 key of <b>node</b>, or NULL if none. */
const curve25519_public_key_t *
node_get_curve25519_onion_key(const node_t *node)
{
- if (node->ri)
+ if (!node)
+ return NULL;
+ if (routerinfo_has_curve25519_onion_key(node->ri))
return node->ri->onion_curve25519_pkey;
- else if (node->md)
+ else if (microdesc_has_curve25519_onion_key(node->md))
return node->md->onion_curve25519_pkey;
else
return NULL;