mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-16 18:08:40 +00:00
net/netcheck: don't send flood of PCP unmap requests to router
Updates #810
This commit is contained in:
parent
9503be083d
commit
05e5233e07
@ -710,6 +710,7 @@ func (rs *reportState) probePortMapServices() {
|
|||||||
uc.WriteTo(pcpPacket(myIP, tempPort, false), port5351)
|
uc.WriteTo(pcpPacket(myIP, tempPort, false), port5351)
|
||||||
|
|
||||||
res := make([]byte, 1500)
|
res := make([]byte, 1500)
|
||||||
|
sentPCPDelete := false
|
||||||
for {
|
for {
|
||||||
n, addr, err := uc.ReadFrom(res)
|
n, addr, err := uc.ReadFrom(res)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -727,6 +728,8 @@ func (rs *reportState) probePortMapServices() {
|
|||||||
if n == 60 && res[0] == 0x02 { // right length and version 2
|
if n == 60 && res[0] == 0x02 { // right length and version 2
|
||||||
rs.setOptBool(&rs.report.PCP, true)
|
rs.setOptBool(&rs.report.PCP, true)
|
||||||
|
|
||||||
|
if !sentPCPDelete {
|
||||||
|
sentPCPDelete = true
|
||||||
// And now delete the mapping.
|
// And now delete the mapping.
|
||||||
// (PCP is the only protocol of the three that requires
|
// (PCP is the only protocol of the three that requires
|
||||||
// we cause a side effect to detect whether it's present,
|
// we cause a side effect to detect whether it's present,
|
||||||
@ -736,6 +739,7 @@ func (rs *reportState) probePortMapServices() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var pmpPacket = []byte{0, 0} // version 0, opcode 0 = "Public address request"
|
var pmpPacket = []byte{0, 0} // version 0, opcode 0 = "Public address request"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user