net/netcheck: don't send flood of PCP unmap requests to router
Updates
@@ -710,6 +710,7 @@ func (rs *reportState) probePortMapServices() {
uc.WriteTo(pcpPacket(myIP, tempPort, false), port5351)
res := make([]byte, 1500)
+ sentPCPDelete := false
for {
n, addr, err := uc.ReadFrom(res)
if err != nil {
@@ -727,6 +728,8 @@ func (rs *reportState) probePortMapServices() {
if n == 60 && res[0] == 0x02 { // right length and version 2
rs.setOptBool(&rs.report.PCP, true)
+ if !sentPCPDelete {
+ sentPCPDelete = true
// And now delete the mapping.
// (PCP is the only protocol of the three that requires
// 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"
