#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>
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)
{
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));
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;
}
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;
}
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);
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);
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(