mirror of
https://github.com/tailscale/tailscale.git
synced 2026-05-08 13:46:46 +02:00
net/portmapper: fix invalid UPnP metric name
Fixes #9551 Signed-off-by: Andrew Dunham <andrew@du.nham.ca> Change-Id: I06f3a15a668be621675be6cbc7e5bdcc006e8570 (cherry picked from commit d31460f7931a3ee46f14d465afd81383c4b68c8a)
This commit is contained in:
parent
a30a7198be
commit
027b455c54
@ -1040,7 +1040,16 @@ func getUPnPErrorsMetric(code int) *clientmetric.Metric {
|
||||
return mm
|
||||
}
|
||||
|
||||
mm = clientmetric.NewCounter(fmt.Sprintf("portmap_upnp_errors_with_code_%d", code))
|
||||
// Metric names cannot contain a hyphen, so we handle negative numbers
|
||||
// by prefixing the name with a "minus_".
|
||||
var codeStr string
|
||||
if code < 0 {
|
||||
codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_minus_%d", -code)
|
||||
} else {
|
||||
codeStr = fmt.Sprintf("portmap_upnp_errors_with_code_%d", code)
|
||||
}
|
||||
|
||||
mm = clientmetric.NewCounter(codeStr)
|
||||
mak.Set(&metricUPnPErrorsByCode, code, mm)
|
||||
return mm
|
||||
}
|
||||
|
||||
@ -124,3 +124,14 @@ func TestPCPIntegration(t *testing.T) {
|
||||
t.Errorf("got nil mapping after successful createOrGetMapping")
|
||||
}
|
||||
}
|
||||
|
||||
// Test to ensure that metric names generated by this function do not contain
|
||||
// invalid characters.
|
||||
//
|
||||
// See https://github.com/tailscale/tailscale/issues/9551
|
||||
func TestGetUPnPErrorsMetric(t *testing.T) {
|
||||
// This will panic if the metric name is invalid.
|
||||
getUPnPErrorsMetric(100)
|
||||
getUPnPErrorsMetric(0)
|
||||
getUPnPErrorsMetric(-100)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user