mirror of
https://github.com/tailscale/tailscale.git
synced 2025-04-15 19:21:39 +00:00
net/portmapper: fix invalid UPnP metric name
Fixes #9551 Signed-off-by: Andrew Dunham <andrew@du.nham.ca> Change-Id: I06f3a15a668be621675be6cbc7e5bdcc006e8570
This commit is contained in:
parent
3e298e9380
commit
d31460f793
@ -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