X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/b7e1e18b57c30555f65a2548e0f1f186200c0ea8..a9279e37b649abd11bbc416398cfaf787cd8d865:/server/peer.c diff --git a/server/peer.c b/server/peer.c index 4bb2c82c..456efd77 100644 --- a/server/peer.c +++ b/server/peer.c @@ -737,6 +737,8 @@ peer *p_create(peerspec *spec) T( trace(T_PEER, "peer: creating new peer `%s'", spec->name); ) p->spec = *spec; p->spec.name = (/*unconst*/ char *)SYM_NAME(p->byname); + if (spec->tag) + p->spec.tag = xstrdup(spec->tag); p->ks = 0; p->pings = 0; p->ifname = 0; @@ -773,6 +775,7 @@ tidy_3: if (fd >= 0) close(fd); tidy_2: am_remove(&byaddr, p->byaddr); + if (p->spec.tag) xfree(p->spec.tag); tidy_1: sym_remove(&byname, p->byname); tidy_0: @@ -789,6 +792,16 @@ tidy_0: const char *p_name(peer *p) { return (p->spec.name); } +/* --- @p_tag@ --- * + * + * Arguments: @peer *p@ = pointer to a peer block + * + * Returns: A pointer to the peer's public key tag. + */ + +const char *p_tag(peer *p) + { return (p->spec.tag ? p->spec.tag : p->spec.name); } + /* --- @p_spec@ --- * * * Arguments: @peer *p@ = pointer to a peer block @@ -853,6 +866,8 @@ void p_destroy(peer *p) kx_free(&p->kx); if (p->ifname) xfree(p->ifname); + if (p->spec.tag) + xfree(p->spec.tag); p->t->ops->destroy(p->t); if (p->spec.t_ka) sel_rmtimer(&p->tka);