|
@@ -2500,54 +2500,6 @@ is_local_addr(const tor_addr_t *addr)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/** Called when we don't have a nickname set. Try to guess a good nickname
|
|
|
- * based on the hostname, and return it in a newly allocated string. If we
|
|
|
- * can't, return NULL and let the caller warn if it wants to. */
|
|
|
-static char *
|
|
|
-get_default_nickname(void)
|
|
|
-{
|
|
|
- static const char * const bad_default_nicknames[] = {
|
|
|
- "localhost",
|
|
|
- NULL,
|
|
|
- };
|
|
|
- char localhostname[256];
|
|
|
- char *cp, *out, *outp;
|
|
|
- int i;
|
|
|
-
|
|
|
- if (gethostname(localhostname, sizeof(localhostname)) < 0)
|
|
|
- return NULL;
|
|
|
-
|
|
|
- /* Put it in lowercase; stop at the first dot. */
|
|
|
- if ((cp = strchr(localhostname, '.')))
|
|
|
- *cp = '\0';
|
|
|
- tor_strlower(localhostname);
|
|
|
-
|
|
|
- /* Strip invalid characters. */
|
|
|
- cp = localhostname;
|
|
|
- out = outp = tor_malloc(strlen(localhostname) + 1);
|
|
|
- while (*cp) {
|
|
|
- if (strchr(LEGAL_NICKNAME_CHARACTERS, *cp))
|
|
|
- *outp++ = *cp++;
|
|
|
- else
|
|
|
- cp++;
|
|
|
- }
|
|
|
- *outp = '\0';
|
|
|
-
|
|
|
- /* Enforce length. */
|
|
|
- if (strlen(out) > MAX_NICKNAME_LEN)
|
|
|
- out[MAX_NICKNAME_LEN]='\0';
|
|
|
-
|
|
|
- /* Check for dumb names. */
|
|
|
- for (i = 0; bad_default_nicknames[i]; ++i) {
|
|
|
- if (!strcmp(out, bad_default_nicknames[i])) {
|
|
|
- tor_free(out);
|
|
|
- return NULL;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return out;
|
|
|
-}
|
|
|
-
|
|
|
/** Release storage held by <b>options</b>. */
|
|
|
static void
|
|
|
config_free(config_format_t *fmt, void *options)
|
|
@@ -2976,14 +2928,7 @@ options_validate(or_options_t *old_options, or_options_t *options,
|
|
|
|
|
|
if (options->Nickname == NULL) {
|
|
|
if (server_mode(options)) {
|
|
|
- if (!(options->Nickname = get_default_nickname())) {
|
|
|
- log_notice(LD_CONFIG, "Couldn't pick a nickname based on "
|
|
|
- "our hostname; using %s instead.", UNNAMED_ROUTER_NICKNAME);
|
|
|
options->Nickname = tor_strdup(UNNAMED_ROUTER_NICKNAME);
|
|
|
- } else {
|
|
|
- log_notice(LD_CONFIG, "Choosing default nickname '%s'",
|
|
|
- options->Nickname);
|
|
|
- }
|
|
|
}
|
|
|
} else {
|
|
|
if (!is_legal_nickname(options->Nickname)) {
|