mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2026-09-22 15:29:03 -07:00
From adversarial review of the previous commit: - CtlUtil: guard <pthread.h> for Windows (client build compiles the controller sources) and define _GNU_SOURCE on Linux for the two-arg pthread_setname_np under the strict -std=c++17 make build - Zero _commitThreadLastActive before the heartbeat thread and PubSub listeners start; C++17 atomics are indeterminate until stored (C++20 masked this in local checks) and a garbage stamp could spuriously abort at startup - Watchdog aborts only when every started commit thread is stalled past the threshold (the incident signature), or one thread exceeds 3x -- a single slow item (e.g. the deauth fan-out of a huge network deletion) can no longer kill a healthy controller - BlockingQueue: lock size() (raced with push/pop; now read cross-thread by the health gate, watchdog, and depth gauge) and notify gc in the timed get() to match the untimed variant - Drop statement_timeout from the hardened conninfo: it also capped the startup bulk COPY loads, where a timeout exits the process -> crash loop on a slow/degraded DB; dead-peer hangs are covered by keepalives and tcp_user_timeout, and it could clobber an operator-supplied options= - Rate-limit the listener nack logs (every redelivery attempt passes through the health gate during a stall)
OS-Dependent and OS-Interface Things
This folder contains stuff that interfaces with the base operating system like Phy for network access and the various OS-specific Ethernet tap drivers.