syncthing/cmd
greatroar 8265dac127
lib/nat: Fix race condition in Mapping (#8042)
The locking protocol in nat.Mapping was racy:

* Mapping.addressMap RLock'd, but then returned a map shared between
  caller and Mapping, so the lock didn't do anything.

* Operations inside Service.{verifyExistingMappings,acquireNewMappings}
  would lock the map for every update, but that means callers to
  Mapping.ExternalAddresses can be looping over the map while the
  Service methods are concurrently modifying it. When the Go runtime
  detects that happening, it panics.

* Mapping.expires was read and updated without locking.

The Service methods now lock the map once and release the lock only when
done.

Also, subscribers no longer get the added and removed addresses, because
none of them were using the information. This was changed for a previous
attempt to retain the fine-grained locking and not reverted because it
simplifies the code.
2021-11-22 08:29:44 +01:00
..
stcompdirs all: Remove crypto/md5 (#7493) 2021-03-17 22:22:49 +01:00
stcrashreceiver all: Send deadlocks as failures, crash only as a last resort (#7785) 2021-07-27 21:27:52 +02:00
stdisco all: Implement suture v4-api (#6947) 2020-11-17 13:19:04 +01:00
stdiscosrv all: Regenerate proto (#7696) 2021-05-19 13:30:20 +02:00
stevents cmd/stevents: Add command line argument for event type filtering. (#7226) 2020-12-22 22:10:26 +01:00
stfileinfo all: Implement variable sized blocks (fixes #4807) 2018-04-16 19:08:50 +01:00
stfinddevice lib: Faster termination on exit (ref #6319) (#6329) 2020-02-13 14:43:00 +01:00
stfindignored all: Unused args, retvals, assignments (#7926) 2021-09-08 00:11:16 +02:00
stgenfiles all: Revert the underscore sillyness 2019-02-02 12:16:27 +01:00
strelaypoolsrv all: Update build constraints to Go 1.17 style (#7894) 2021-08-17 10:10:41 +02:00
strelaysrv lib/nat: Fix race condition in Mapping (#8042) 2021-11-22 08:29:44 +01:00
stsigtool cmd/stsigtool: Silence spurious Go 1.10 test/vet complaint 2017-12-10 19:42:17 +01:00
stupgrades cmd/stupgrades: Generate appropriate upgrade data (fixes #5924) (#5960) 2019-08-16 10:04:10 +02:00
stvanity all: Simplify some method calls (#7499) 2021-03-17 23:12:26 +01:00
stwatchfile all: Remove crypto/md5 (#7493) 2021-03-17 22:22:49 +01:00
syncthing cmd/syncthing: Implement generate as a subcommand with optional API credential setting (fixes #8021) (#8043) 2021-11-18 22:57:59 +01:00
uraggregate cmd/uraggregate: Optimise queries (#7679) 2021-05-16 12:34:46 +01:00
ursrv all: Simplify some method calls (#7499) 2021-03-17 23:12:26 +01:00
.gitignore Remove reprecated st* utils 2014-07-01 12:20:25 +02:00