X-Git-Url: https://git.distorted.org.uk/~mdw/tripe/blobdiff_plain/a5c4a56a64e127a1a5e5d436cf52df1e7a96eb33..f6994bd047a35b06aa7aed3c59487000abec2325:/server/keyexch.c diff --git a/server/keyexch.c b/server/keyexch.c index 7d1fa7df..4a990ee7 100644 --- a/server/keyexch.c +++ b/server/keyexch.c @@ -1320,24 +1320,27 @@ void kx_start(keyexch *kx, int forcep) /* --- @kx_message@ --- * * * Arguments: @keyexch *kx@ = pointer to key exchange context + * @const addr *a@ = sender's IP address and port * @unsigned msg@ = the message code * @buf *b@ = pointer to buffer containing the packet * - * Returns: --- + * Returns: Nonzero if the sender's address was unknown. * * Use: Reads a packet containing key exchange messages and handles * it. */ -void kx_message(keyexch *kx, unsigned msg, buf *b) +int kx_message(keyexch *kx, const addr *a, unsigned msg, buf *b) { size_t sz = BSZ(b); int rc; - if (notice_message(kx)) return; + T( trace(T_KEYEXCH, "keyexch: processing %s packet from %c%s%c", + msg < KX_NMSG ? pkname[msg] : "unknown", + kx ? '`' : '<', kx ? p_name(kx->p) : "nil", kx ? '\'' : '>'); ) - T( trace(T_KEYEXCH, "keyexch: processing %s packet from `%s'", - msg < KX_NMSG ? pkname[msg] : "unknown", p_name(kx->p)); ) + if (!kx) return (-1); + if (notice_message(kx)) return (0); switch (msg) { case KX_PRECHAL: rc = doprechallenge(kx, b); break; @@ -1352,6 +1355,7 @@ void kx_message(keyexch *kx, unsigned msg, buf *b) } update_stats_rx(kx, !rc, sz); + return (0); } /* --- @kx_free@ --- *