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. |
||
|---|---|---|
| .github | ||
| artwork | ||
| attic/historic | ||
| ci | ||
| cmake | ||
| debian | ||
| doc | ||
| ext | ||
| include | ||
| java | ||
| node | ||
| nonfree | ||
| osdep | ||
| pkg | ||
| rule-compiler | ||
| rustybits | ||
| service | ||
| tcp-proxy | ||
| tmp | ||
| windows | ||
| .clang-format | ||
| .clangd | ||
| .dockerignore | ||
| .gitattributes | ||
| .gitignore | ||
| build.md | ||
| build_central_controller.sh | ||
| CMakeLists.txt | ||
| 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 | ||
| make-mac.mk | ||
| make-netbsd.mk | ||
| Makefile | ||
| objects-nonfree.mk | ||
| objects.mk | ||
| OFFICIAL-RELEASE-STEPS.md | ||
| one.cpp | ||
| README.docker.md | ||
| README.md | ||
| RELEASE-NOTES.md | ||
| SECURITY.md | ||
| selftest.cpp | ||
| update_controllers.sh | ||
| version.h | ||
| windows-clean.bat | ||
| zerotier-cli-completion.bash | ||
| zerotier-one.spec | ||
ZeroTier - Global Area Networking
Quick Links
- ZeroTier Documentation - Start here for downloads, installation, and usage
- How to build - Build instructions and platform requirements
- Corporate Site
- Downloads
- Service API Reference
- Network Controller
- Commercial Support
- License Information
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.