From: Yorgos Thessalonikefs Date: Wed, 9 Oct 2024 07:23:31 +0000 (+0200) Subject: - timeval_substruct from timeval_func.h X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3456cfb3be05440ae10dca2fac7ef21682455d85;p=thirdparty%2Funbound.git - timeval_substruct from timeval_func.h - lock_protect also for HAVE_NGTCP2_CCERR_DEFAULT - fix doq logging for inet_ntop failures --- diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 1200a0d34..011177286 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -60,6 +60,7 @@ #include "services/mesh.h" #include "util/fptr_wlist.h" #include "util/locks.h" +#include "util/timeval_func.h" #ifdef HAVE_NETDB_H #include @@ -3475,22 +3476,6 @@ doq_timer_unset(struct doq_table* table, struct doq_timer* timer) timer->worker_doq_socket = NULL; } -/** subtract timers and the values do not overflow or become negative */ -static void -timeval_subtract(struct timeval* d, const struct timeval* end, - const struct timeval* start) -{ -#ifndef S_SPLINT_S - time_t end_usec = end->tv_usec; - d->tv_sec = end->tv_sec - start->tv_sec; - if(end_usec < start->tv_usec) { - end_usec += 1000000; - d->tv_sec--; - } - d->tv_usec = end_usec - start->tv_usec; -#endif -} - void doq_timer_set(struct doq_table* table, struct doq_timer* timer, struct doq_server_socket* worker_doq_socket, struct timeval* tv) { @@ -3569,7 +3554,11 @@ doq_conn_create(struct comm_point* c, struct doq_pkt_addr* paddr, lock_protect(&conn->lock, &conn->version, sizeof(conn->version)); lock_protect(&conn->lock, &conn->conn, sizeof(conn->conn)); lock_protect(&conn->lock, &conn->conid_list, sizeof(conn->conid_list)); +#ifdef HAVE_NGTCP2_CCERR_DEFAULT + lock_protect(&conn->lock, &conn->ccerr, sizeof(conn->ccerr)); +#else lock_protect(&conn->lock, &conn->last_error, sizeof(conn->last_error)); +#endif lock_protect(&conn->lock, &conn->tls_alert, sizeof(conn->tls_alert)); lock_protect(&conn->lock, &conn->ssl, sizeof(conn->ssl)); lock_protect(&conn->lock, &conn->close_pkt, sizeof(conn->close_pkt)); diff --git a/util/netevent.c b/util/netevent.c index 9255dd47f..d55471458 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1272,8 +1272,7 @@ doq_print_addr_port(struct doq_addr_storage* addr, socklen_t addrlen, log_assert(addrlen >= sizeof(*sa)); if(inet_ntop(sa->sin_family, &sa->sin_addr, host, (socklen_t)hostlen) == 0) { - log_err("doq_send_retry failed: inet_ntop error"); - log_hex("inet ntop address", &sa->sin_addr, + log_hex("inet_ntop error: address", &sa->sin_addr, sizeof(sa->sin_addr)); return 0; } @@ -1283,8 +1282,7 @@ doq_print_addr_port(struct doq_addr_storage* addr, socklen_t addrlen, log_assert(addrlen >= sizeof(*sa6)); if(inet_ntop(sa6->sin6_family, &sa6->sin6_addr, host, (socklen_t)hostlen) == 0) { - log_err("doq_send_retry failed: inet_ntop error"); - log_hex("inet ntop address", &sa6->sin6_addr, + log_hex("inet_ntop error: address", &sa6->sin6_addr, sizeof(sa6->sin6_addr)); return 0; } @@ -1802,6 +1800,7 @@ doq_send_retry(struct comm_point* c, struct doq_pkt_addr* paddr, if(!doq_print_addr_port(&paddr->addr, paddr->addrlen, host, sizeof(host), port, sizeof(port))) { + log_err("doq_send_retry failed"); return; } verbose(VERB_ALGO, "doq: sending retry packet to %s %s", host, port); @@ -1866,8 +1865,10 @@ doq_verify_retry_token(struct comm_point* c, struct doq_pkt_addr* paddr, char host[256], port[32]; ngtcp2_tstamp ts; if(!doq_print_addr_port(&paddr->addr, paddr->addrlen, host, - sizeof(host), port, sizeof(port))) + sizeof(host), port, sizeof(port))) { + log_err("doq_verify_retry_token failed"); return 0; + } ts = doq_get_timestamp_nanosec(); verbose(VERB_ALGO, "doq: verifying retry token from %s %s", host, port); @@ -1897,8 +1898,10 @@ doq_verify_token(struct comm_point* c, struct doq_pkt_addr* paddr, char host[256], port[32]; ngtcp2_tstamp ts; if(!doq_print_addr_port(&paddr->addr, paddr->addrlen, host, - sizeof(host), port, sizeof(port))) + sizeof(host), port, sizeof(port))) { + log_err("doq_verify_token failed"); return 0; + } ts = doq_get_timestamp_nanosec(); verbose(VERB_ALGO, "doq: verifying token from %s %s", host, port); if(ngtcp2_crypto_verify_regular_token(