X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/629842d841bb18e0fe4131803be989da4555f776..de014da64011b21929158b746803d69cbfb05ee6:/peer.c diff --git a/peer.c b/peer.c index 1542b35e..0e2664bf 100644 --- a/peer.c +++ b/peer.c @@ -226,7 +226,7 @@ found: buf_flip(&bb); if (ksl_encrypt(&p->ks, MSG_MISC | MISC_EPONG, &bb, p_txstart(p, MSG_MISC | MISC_EPONG))) - kx_start(&p->kx); + kx_start(&p->kx, 0); p_txend(p); } break; @@ -389,8 +389,6 @@ int p_pingsend(peer *p, ping *pg, unsigned type, buf *b, bb; struct timeval tv; - assert(!pg->p); - switch (type) { case MISC_PING: pg->msg = MISC_PONG; @@ -405,7 +403,7 @@ int p_pingsend(peer *p, ping *pg, unsigned type, p_pingwrite(pg, &bb); buf_flip(&bb); if (ksl_encrypt(&p->ks, MSG_MISC | MISC_EPING, &bb, b)) - kx_start(&p->kx); + kx_start(&p->kx, 0); if (!BOK(b)) return (-1); p_txend(p); @@ -445,7 +443,7 @@ void p_tun(peer *p, buf *b) TIMER; if (ksl_encrypt(&p->ks, MSG_PACKET, b, bb)) - kx_start(&p->kx); + kx_start(&p->kx, 0); if (BOK(bb) && BLEN(bb)) { p->st.n_ipout++; p->st.sz_ipout += BLEN(bb); @@ -453,6 +451,25 @@ void p_tun(peer *p, buf *b) } } +/* --- @p_keyreload@ --- * + * + * Arguments: --- + * + * Returns: --- + * + * Use: Forces a check of the daemon's keyring files. + */ + +void p_keyreload(void) +{ + peer *p; + + if (km_reload()) { + for (p = peers; p; p = p->next) + kx_newkeys(&p->kx); + } +} + /* --- @p_interval@ --- * * * Arguments: --- @@ -464,16 +481,11 @@ void p_tun(peer *p, buf *b) void p_interval(void) { - peer *p, *pp; - int reload; + peer *p; - reload = km_interval(); - for (p = peers; p; p = pp) { - pp = p->next; - if (reload) - kx_newkeys(&p->kx); + p_keyreload(); + for (p = peers; p; p = p->next) ksl_prune(&p->ks); - } } /* --- @p_stats@ --- *