Merge pull request #1750 from zerotier/dev-dont-re-armor

Prevent re-armoring of packets when in multipath broadcast mode
This commit is contained in:
Adam Ierymenko 2022-09-09 16:56:05 -04:00 committed by GitHub
commit add854d31b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View File

@ -1249,6 +1249,14 @@ public:
return (((unsigned int)(*this)[ZT_PACKET_IDX_FLAGS] & 0x38) >> 3);
}
/**
* @return Whether this packet is currently encrypted
*/
inline bool isEncrypted() const
{
return (cipher() == ZT_PROTO_CIPHER_SUITE__C25519_POLY1305_SALSA2012) || (cipher() == ZT_PROTO_CIPHER_SUITE__AES_GMAC_SIV);
}
/**
* Set this packet's cipher suite
*/

View File

@ -1045,7 +1045,9 @@ void Switch::_sendViaSpecificPath(void *tPtr,SharedPtr<Peer> peer,SharedPtr<Path
if (trustedPathId) {
packet.setTrusted(trustedPathId);
} else {
packet.armor(peer->key(),encrypt,peer->aesKeysIfSupported());
if (!packet.isEncrypted()) {
packet.armor(peer->key(),encrypt,peer->aesKeysIfSupported());
}
RR->node->expectReplyTo(packet.packetId());
}