diff --git a/lightningd/options.c b/lightningd/options.c index 8f4d4a6ee..ff9a1e269 100644 --- a/lightningd/options.c +++ b/lightningd/options.c @@ -608,16 +608,30 @@ void setup_color_and_alias(struct lightningd *ld) if (!ld->alias) { u64 adjective, noun; + char *name; memcpy(&adjective, der+3, sizeof(adjective)); memcpy(&noun, der+3+sizeof(adjective), sizeof(noun)); noun %= ARRAY_SIZE(codename_noun); adjective %= ARRAY_SIZE(codename_adjective); + + /* Only use 32 characters */ + name = tal_fmt(ld, "%s%s-", + codename_adjective[adjective], + codename_noun[noun]); +#if DEVELOPER + assert(strlen(name) < 32); + int taillen = 32 - strlen(name); + if (taillen > strlen(version())) + taillen = strlen(version()); + /* Fit as much of end of version() as possible */ + tal_append_fmt(&name, "%s", + version() + strlen(version()) - taillen); +#endif + assert(strlen(name) <= 32); ld->alias = tal_arrz(ld, u8, 33); - assert(strlen(codename_adjective[adjective]) - + strlen(codename_noun[noun]) < 33); - strcpy((char*)ld->alias, codename_adjective[adjective]); - strcat((char*)ld->alias, codename_noun[noun]); + strcpy((char*)ld->alias, name); + tal_free(name); } } diff --git a/tests/test_lightningd.py b/tests/test_lightningd.py index 496c4bc5e..eb90f6299 100644 --- a/tests/test_lightningd.py +++ b/tests/test_lightningd.py @@ -1763,13 +1763,13 @@ class LightningDTests(BaseLightningDTests): # Might not have seen other node-announce yet. # TODO(cdecker) Can't check these without DEVELOPER=1, re-enable after we get alias and color into getinfo if DEVELOPER: - assert n1['alias'] == 'JUNIORBEAM' + assert n1['alias'].startswith('JUNIORBEAM') assert n1['color'] == '0266e4' if 'alias' not in n2: assert 'color' not in n2 assert 'addresses' not in n2 else: - assert n2['alias'] == 'SILENTARTIST' + assert n2['alias'].startswith('SILENTARTIST') assert n2['color'] == '022d22' assert [c['active'] for c in l1.rpc.listchannels()['channels']] == [True, True]