How are new folders announced in the Block Exchange Protocol?

Hi. I try to write a Syncthing implementation in rust (just for the fun of it, nothing wrong with the current Syncthing implementation).

Reading Block Exchange Protocol v1 — Syncthing v1 documentation it states that a ClusterConfig must not be repeated. How are new folders handled? Suppose I configure a new folder on one device, or share it with a new device, how would the new folder be announced to the other device?

The only way I can think about reading the current specs is that the connection is torn down and re-established.


We used to disconnect and reconnect to announce new folders, however, I think (not sure, on the phone so hard to verify) that the statement might no longer be true, and we do repeat it on the same connection.

Yeah good find, Syncthing is indeed not behaving according to spec there - we do send multiple cluster-configs. Now in general that would probably have to be a BEP v1.1 or something, but given no-one else is using the BEP as far as we know, we might just sneekily remove that “must not” requirement?


Thanks for the quick update. Does a new cluster config completely replace the existing folder list or is it more like an update message?

I believe its replace.

Going toward a BEP v1.1 would be a good occasion to include other enhancements, for example: