Fix target offline: normalize number in HandleDial
Clients may send dial target without spaces (+07491552819 vs +0 749 155 2819). Normalize both formats in HandleDial and extend NormalizeNumber.
This commit is contained in:
parent
73f09c29ab
commit
69990d7661
2 changed files with 11 additions and 0 deletions
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"github.com/apernet/quic-go"
|
"github.com/apernet/quic-go"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
|
"github.com/niko/qcc/internal/identity"
|
||||||
"github.com/niko/qcc/internal/protocol"
|
"github.com/niko/qcc/internal/protocol"
|
||||||
"github.com/niko/qcc/pkg/types"
|
"github.com/niko/qcc/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
@ -129,6 +130,7 @@ func (m *Manager) HandleDial(sess CallSession, payload []byte) {
|
||||||
sendError(sess, types.ErrInvalidRequest, "empty target number")
|
sendError(sess, types.ErrInvalidRequest, "empty target number")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
targetNumber = identity.NormalizeNumber(targetNumber)
|
||||||
|
|
||||||
fromNumber := sess.Number()
|
fromNumber := sess.Number()
|
||||||
if fromNumber == targetNumber {
|
if fromNumber == targetNumber {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,15 @@ func NormalizeNumber(s string) string {
|
||||||
if len(parts) == 4 && strings.HasPrefix(parts[0], "+") {
|
if len(parts) == 4 && strings.HasPrefix(parts[0], "+") {
|
||||||
return fmt.Sprintf("%s %s %s %s", parts[0], parts[1], parts[2], parts[3])
|
return fmt.Sprintf("%s %s %s %s", parts[0], parts[1], parts[2], parts[3])
|
||||||
}
|
}
|
||||||
|
if len(parts) == 1 && len(parts[0]) > 2 && parts[0][0] == '+' {
|
||||||
|
// "+07491552819" → "+0 749 155 2819"
|
||||||
|
raw := parts[0]
|
||||||
|
prefix := raw[:2]
|
||||||
|
rest := raw[2:]
|
||||||
|
if len(rest) == 9 {
|
||||||
|
return fmt.Sprintf("%s %s %s %s", prefix, rest[:3], rest[3:6], rest[6:])
|
||||||
|
}
|
||||||
|
}
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue