X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/5ae728a6a2bb6db57a8586e839221cc33cf9c69c..917c5c17c0321c7ebd31737261a62de768da4a75:/server/peer.c diff --git a/server/peer.c b/server/peer.c index 246d84e2..5855f2e1 100644 --- a/server/peer.c +++ b/server/peer.c @@ -876,9 +876,6 @@ void p_bind(struct addrinfo *ailist) exit(EXIT_FAILURE); } fdflags(fd, O_NONBLOCK, O_NONBLOCK, FD_CLOEXEC, FD_CLOEXEC); - sel_initfile(&sel, &udpsock[i].sf, fd, SEL_READ, p_read, 0); - sel_addfile(&udpsock[i].sf); - T( trace(T_PEER, "peer: created %s socket", aftab[i].name); ) if (port) udpsock[i].port = port; else { @@ -890,6 +887,9 @@ void p_bind(struct addrinfo *ailist) } udpsock[i].port = lastport = getport(&a); } + T( trace(T_PEER, "peer: created %s socket", aftab[i].name); ) + sel_initfile(&sel, &udpsock[i].sf, fd, SEL_READ, p_read, 0); + sel_addfile(&udpsock[i].sf); } } @@ -992,6 +992,7 @@ peer *p_create(peerspec *spec) T( trace(T_TUNNEL, "peer: attached interface %s to peer `%s'", p->ifname, p_name(p)); ) p_setkatimer(p); + iv_addreason(); if (kx_setup(&p->kx, p, &p->ks, p->spec.f & PSF_KXMASK)) goto tidy_4; a_notify("ADD", @@ -1010,6 +1011,7 @@ tidy_4: if (spec->t_ka) sel_rmtimer(&p->tka); xfree(p->ifname); p->t->ops->destroy(p->t); + iv_rmreason(); tidy_3: if (fd >= 0) close(fd); tidy_2: @@ -1141,9 +1143,21 @@ void p_destroy(peer *p, int bye) } sym_remove(&byname, p->byname); am_remove(&byaddr, p->byaddr); + iv_rmreason(); DESTROY(p); } +/* --- @p_destroyall@ --- * + * + * Arguments: --- + * + * Returns: --- + * + * Use: Destroys all of the peers, saying goodbye. + */ + +void p_destroyall(void) { FOREACH_PEER(p, { p_destroy(p, 1); }); } + /* --- @p_mkiter@ --- * * * Arguments: @peer_iter *i@ = pointer to an iterator