A Smart Ethernet Switch for Earth
Find a file
Grant Limberg 910334c2a5
Fix silent PubSub message loss in controller subscription loop
The 10-second session.cancel() loop raced with in-flight acks — when
cancel fired while the GCP client was processing messages, acks were
lost before reaching the server. With message ordering enabled, an
unacked message blocks all subsequent messages on that ordering key,
causing silent stalls with no error output.

Two fixes:
- Replace the cancel/reconnect timer with a blocking session.get(),
  storing the session future so the destructor can cancel on shutdown.
- Always ack messages even when onNotification fails — permanent errors
  (bad protobuf, missing fields) will never succeed on retry and would
  otherwise poison the ordering key indefinitely.
2026-04-11 09:30:21 -07:00
.github set --provenance false on docker build to try and fix docker image creation issue 2025-11-12 16:17:03 -08:00
artwork
attic/historic
ci
cmake
debian All version bumps but Windows. 2025-12-12 14:17:21 -05:00
doc
ext update settings to enable SSO networks 2026-03-31 13:24:03 -07:00
include
java Fix JNI after ZT_Node_New function signature change 2025-09-11 07:36:25 -07:00
node Merge branch 'dev' into gl/ctl-pubsub 2025-11-06 10:01:11 -08:00
nonfree Fix silent PubSub message loss in controller subscription loop 2026-04-11 09:30:21 -07:00
osdep Merge branch 'dev' into gl/ctl-pusub 2026-01-23 11:18:45 -08:00
pkg
rule-compiler
rustybits dont NACK failed messages. That gets us into a loop of failing the same messages over and over again 2025-10-09 14:34:24 -07:00
service update settings to enable SSO networks 2026-03-31 13:24:03 -07:00
tcp-proxy
tmp
windows Merge branch 'dev' into gl/ctl-pubsub 2025-10-06 16:55:28 -07:00
.clang-format
.clangd
.dockerignore
.gitattributes
.gitignore
build.md added build.md 2025-09-18 14:29:09 -07:00
build_central_controller.sh
CMakeLists.txt disable peer metrics in Central controller 2026-01-23 13:06:02 -08:00
conda_env_build.yml
conda_env_run.yml
cycle_controllers.sh
Dockerfile.ci
Dockerfile.release
entrypoint.sh.release
LICENSE-MPL.txt
LICENSE.txt
make-bsd.mk
make-linux.mk Merge branch 'dev' into gl/ctl-pubsub 2025-10-06 16:55:28 -07:00
make-mac.mk Merge branch 'dev' into gl/ctl-pubsub 2025-10-06 16:55:28 -07:00
make-netbsd.mk
Makefile
objects-nonfree.mk
objects.mk
OFFICIAL-RELEASE-STEPS.md
one.cpp Merge pull request #11 from zerotier/snprintf-into-self 2025-11-10 09:50:22 -08:00
README.docker.md
README.md removed duplicate title, added build link, fixed controller link 2025-09-23 10:20:49 -07:00
RELEASE-NOTES.md Add date to release notes. 2025-12-22 17:49:15 -05:00
SECURITY.md
selftest.cpp
update_controllers.sh
version.h All version bumps but Windows. 2025-12-12 14:17:21 -05:00
windows-clean.bat
zerotier-cli-completion.bash
zerotier-one.spec All version bumps but Windows. 2025-12-12 14:17:21 -05:00

ZeroTier - Global Area Networking

About

ZeroTier is a smart programmable Ethernet switch for planet Earth. It allows all networked devices, VMs, containers, and applications to communicate as if they all reside in the same physical data center or cloud region.

This is accomplished by combining a cryptographically addressed and secure peer-to-peer network (termed VL1) with an Ethernet emulation layer somewhat similar to VXLAN (termed VL2). Our VL2 Ethernet virtualization layer includes advanced enterprise SDN features like fine grained access control rules for network micro-segmentation and security monitoring.

All ZeroTier traffic is encrypted end-to-end using secret keys that only you control. Most traffic flows peer-to-peer, though we offer free (but slow) relaying for users who cannot establish peer-to-peer connections.

Apps for Android and iOS are available for free in the Google Play and Apple app stores.

For repository layout, build instructions, platform requirements, and information about running ZeroTier, see build.md.

License

See LICENSE-MPL.txt for all code in node/, osdep/. service/, and everywhere else except ext/ and nonfree/.

See nonfree/LICENSE.md for all non-free ("source available") portions of this repository.

Code in ext/ is external code included for build convenience or backward compatibility and retains its original license.