New flag Firewall in the Features field to inform uncontacted peers that a Traverse message might be required to establish a connection. Close #61

This flag can be activated via the config setting LocalFirewall.
The Features field exists in Announcement/Response messages and was now added to peer records.
This commit is contained in:
Kleissner
2021-11-20 04:28:03 +01:00
parent 446c62bcd9
commit f7e8f1821b
11 changed files with 54 additions and 20 deletions

View File

@@ -171,6 +171,7 @@ func (nets *Networks) packetWorker() {
// Update known internal/external port and User Agent
connection.PortInternal = announce.PortInternal
connection.PortExternal = announce.PortExternal
connection.Firewall = announce.Features&(1<<protocol.FeatureFirewall) > 0
if len(announce.UserAgent) > 0 {
peer.UserAgent = announce.UserAgent
}
@@ -199,6 +200,7 @@ func (nets *Networks) packetWorker() {
// Update known internal/external port and User Agent
connection.PortInternal = response.PortInternal
connection.PortExternal = response.PortExternal
connection.Firewall = response.Features&(1<<protocol.FeatureFirewall) > 0
if len(response.UserAgent) > 0 {
peer.UserAgent = response.UserAgent
}
@@ -359,5 +361,8 @@ func FeatureSupport() (feature byte) {
if networks.countListen6 > 0 {
feature |= 1 << protocol.FeatureIPv6Listen
}
if networks.localFirewall {
feature |= 1 << protocol.FeatureFirewall
}
return feature
}