|
@@ -1817,12 +1817,15 @@ add_an_entry_guard(routerinfo_t *chosen)
|
|
|
routerinfo_t *router;
|
|
|
entry_guard_t *entry;
|
|
|
|
|
|
- if (chosen)
|
|
|
+ if (chosen) {
|
|
|
router = chosen;
|
|
|
- else
|
|
|
+ if (is_an_entry_guard(router->cache_info.identity_digest))
|
|
|
+ return NULL;
|
|
|
+ } else {
|
|
|
router = choose_good_entry_server(CIRCUIT_PURPOSE_C_GENERAL, NULL);
|
|
|
- if (!router)
|
|
|
- return NULL;
|
|
|
+ if (!router)
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
entry = tor_malloc_zero(sizeof(entry_guard_t));
|
|
|
log_info(LD_CIRC, "Chose '%s' as new entry guard.", router->nickname);
|
|
|
strlcpy(entry->nickname, router->nickname, sizeof(entry->nickname));
|