FIX - support configurable company service numbers

Company service lines were validated as full-length SIM numbers, which rejected short configured numbers such as 911 and stopped dependent server modules from initializing.

Accept non-empty service numbers up to the configured SIM length, resolve configured service lines before direct SIM dialing for phone and payphone calls, and load Companies and SIM before Phone. Add focused normalization boundary tests.
This commit is contained in:
Leon.Schmidt
2026-08-14 21:24:35 +02:00
parent a9dd46f98f
commit 25c8adb737
5 changed files with 28 additions and 11 deletions
+6 -4
View File
@@ -946,7 +946,9 @@ Bridge.Callbacks.Register("sky_phone:calls:dial", function(source, data)
dial_locks[source] = nil
return { success = false, error = "airplane_mode" }
end
local number = SkyPhoneSimNumber.Normalize(data.phoneNumber, Config.Sim.NumberLength, Config.Sim.NumberPrefix)
local service_line = SkyPhoneCompanies.GetServiceLine(data.phoneNumber)
local number = service_line and service_line.number
or SkyPhoneSimNumber.Normalize(data.phoneNumber, Config.Sim.NumberLength, Config.Sim.NumberPrefix)
if not number then
dial_locks[source] = nil
return { success = false, error = "invalid_number" }
@@ -960,7 +962,6 @@ Bridge.Callbacks.Register("sky_phone:calls:dial", function(source, data)
return { success = false, error = "busy" }
end
dialing_by_sim[scope.device.sim_id] = true
local service_line = SkyPhoneCompanies.GetServiceLine(number)
if service_line then
if not service_line.canCall then
local terminal = create_terminal_call(scope, number, nil, "unavailable")
@@ -1109,7 +1110,9 @@ Bridge.Callbacks.Register("sky_phone:payphone:dial", function(source, data)
return { success = false, error = "busy" }
end
local number = SkyPhoneSimNumber.Normalize(data.phoneNumber, Config.Sim.NumberLength, Config.Sim.NumberPrefix)
local service_line = SkyPhoneCompanies.GetServiceLine(data.phoneNumber)
local number = service_line and service_line.number
or SkyPhoneSimNumber.Normalize(data.phoneNumber, Config.Sim.NumberLength, Config.Sim.NumberPrefix)
if not number then
return { success = false, error = "invalid_number" }
end
@@ -1120,7 +1123,6 @@ Bridge.Callbacks.Register("sky_phone:payphone:dial", function(source, data)
end
dial_locks[source] = true
local service_line = SkyPhoneCompanies.GetServiceLine(number)
if service_line then
if not service_line.canCall then
dial_locks[source] = nil