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"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/niko/qcc/internal/identity"
|
||||
"github.com/niko/qcc/internal/protocol"
|
||||
"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")
|
||||
return
|
||||
}
|
||||
targetNumber = identity.NormalizeNumber(targetNumber)
|
||||
|
||||
fromNumber := sess.Number()
|
||||
if fromNumber == targetNumber {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,15 @@ func NormalizeNumber(s string) string {
|
|||
if len(parts) == 4 && strings.HasPrefix(parts[0], "+") {
|
||||
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
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue