]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- timeval_substruct from timeval_func.h
authorYorgos Thessalonikefs <yorgos@nlnetlabs.nl>
Wed, 9 Oct 2024 07:23:31 +0000 (09:23 +0200)
committerYorgos Thessalonikefs <yorgos@nlnetlabs.nl>
Wed, 9 Oct 2024 08:11:14 +0000 (10:11 +0200)
- lock_protect also for HAVE_NGTCP2_CCERR_DEFAULT
- fix doq logging for inet_ntop failures

services/listen_dnsport.c
util/netevent.c

index 1200a0d34ee97f7955bb1afd333fcaae9664583a..0111772860d97b43fdbd98f6387215472ef80b13 100644 (file)
@@ -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 <netdb.h>
@@ -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));
index 9255dd47f88b398104c2a6574d9acdd81b5fff6d..d55471458f8a438861593c994b93d9491c646bf8 100644 (file)
@@ -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(