diff options
| author | Harry Harpham <harry@tailscale.com> | 2026-03-30 08:44:47 -0600 |
|---|---|---|
| committer | Harry Harpham <harry@tailscale.com> | 2026-04-01 08:24:17 -0600 |
| commit | 1e2fdfd745fec5339a003ba68cce0ce9f785859a (patch) | |
| tree | cce5fa598722dce05e63463efd60871ba6106570 /control/controlhttp/controlhttpserver/controlhttpserver.go | |
| parent | fed0df64985bcdc815396915fee57e23a0b860e4 (diff) | |
| download | tailscale-1e2fdfd745fec5339a003ba68cce0ce9f785859a.tar.xz tailscale-1e2fdfd745fec5339a003ba68cce0ce9f785859a.zip | |
tsnet: fix bug in closing multiple ServiceListeners at once
Prior to this change, closing multiple ServiceListeners concurrently
could result in failures as the independent close operations vie for the
attention of the Server's LocalBackend. The close operations would each
obtain the current ETag of the serve config and try to write new serve
config using this ETag. When one write invalidated the ETag of another,
the latter would fail. Exacerbating the issue, ServiceListener.Close
cannot be retried.
This change resolves the bug by using Server.mu to synchronize across
all ServiceListener.Close operations, ensuring they happen serially.
Fixes #19169
Signed-off-by: Harry Harpham <harry@tailscale.com>
Diffstat (limited to 'control/controlhttp/controlhttpserver/controlhttpserver.go')
0 files changed, 0 insertions, 0 deletions
