mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
Fix Bug #705: Asterisk gives tone even if number is not configured
Set voice_client.lineX.sip_account correctly according to "voice_client.sipX.call_lines"
This commit is contained in:
parent
5a4c07278c
commit
44164d950b
1 changed files with 61 additions and 7 deletions
|
|
@ -1917,9 +1917,11 @@ configure_tel_line()
|
||||||
config_get clir $1 clir
|
config_get clir $1 clir
|
||||||
|
|
||||||
#If line is configured with no sip_provider, or sip_provider is disabled, use local_extensions context
|
#If line is configured with no sip_provider, or sip_provider is disabled, use local_extensions context
|
||||||
config_get sip_provider_user $sip_provider user
|
[ -n "$sip_provider" ] && {
|
||||||
config_get sip_provider_enabled $sip_provider enabled
|
config_get sip_provider_user $sip_provider user
|
||||||
if [ "$sip_provider" == "-" -o -z "$sip_provider_enabled" -o "$sip_provider_enabled" == "0" -o -z "$sip_provider_user" ] ; then
|
config_get sip_provider_enabled $sip_provider enabled
|
||||||
|
}
|
||||||
|
if [ -z "$sip_provider" -o "$sip_provider" == "-" -o -z "$sip_provider_enabled" -o "$sip_provider_enabled" == "0" -o -z "$sip_provider_user" ] ; then
|
||||||
sip_provider="local_extensions"
|
sip_provider="local_extensions"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
@ -2062,6 +2064,48 @@ pbx_fix_ownership()
|
||||||
chown $ASTUSER:$ASTGROUP -R $ASTDIRSRECURSIVE
|
chown $ASTUSER:$ASTGROUP -R $ASTDIRSRECURSIVE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Set voice_client.LINE_x.sip_account correctly as per "voice_client.sipX.call_lines"
|
||||||
|
set_line_sip_account()
|
||||||
|
{
|
||||||
|
local tel_line=$1
|
||||||
|
local old_sip_account=
|
||||||
|
local new_sip_account=
|
||||||
|
local line_name=$(getLineName)
|
||||||
|
local line_name_len=${#line_name}
|
||||||
|
local lnum=${tel_line:${line_name_len}}
|
||||||
|
local chan_name=$(getChannelName)
|
||||||
|
local ___type="sip_service_provider"
|
||||||
|
local section cfgtype call_lines chan_num
|
||||||
|
|
||||||
|
config_get old_sip_account $tel_line sip_account
|
||||||
|
|
||||||
|
# Note: On Intel platform, tel_line's section name starts with 0, e.g. tapi0.
|
||||||
|
# But channel index in voice_client.sipX.call_lines starts with 1, e.g. TAPI/1
|
||||||
|
if [ "$line_name" == "tapi" ]; then
|
||||||
|
chan_num=$((lnum+1))
|
||||||
|
else
|
||||||
|
chan_num=$lnum
|
||||||
|
fi
|
||||||
|
|
||||||
|
for section in ${CONFIG_SECTIONS}; do
|
||||||
|
config_get cfgtype "$section" TYPE
|
||||||
|
[ -n "$___type" -a "x$cfgtype" != "x$___type" ] && continue
|
||||||
|
config_get call_lines "$section" call_lines
|
||||||
|
# Note: tel_line's section name starts with 0, e.g. tapi0 or brcm0.
|
||||||
|
# But channel index in voice_client.sipX.call_lines starts with 1, e.g. TAPI/1
|
||||||
|
[ -n "$call_lines" ] && echo "$call_lines" | grep -q "$chan_name/$chan_num" && {
|
||||||
|
# Append this sip_acount to the tel line
|
||||||
|
if [ -z "$new_sip_account" ]; then
|
||||||
|
new_sip_account="$section"
|
||||||
|
else
|
||||||
|
new_sip_account="$new_sip_account $section"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
[ "$old_sip_account" != "$new_sip_account" ] && uci_set voice_client $tel_line sip_account "$new_sip_account"
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Calculate a name for each $(getLineName) line, depending on port type
|
# Calculate a name for each $(getLineName) line, depending on port type
|
||||||
# and number. The name is used to make UI look better.
|
# and number. The name is used to make UI look better.
|
||||||
|
|
@ -2158,6 +2202,12 @@ start_service() {
|
||||||
# Load config file
|
# Load config file
|
||||||
config_load voice_client
|
config_load voice_client
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
# Set line sip_account according to sip accounts'
|
||||||
|
# settings
|
||||||
|
########################################################
|
||||||
|
config_foreach set_line_sip_account tel_line
|
||||||
|
|
||||||
########################################################
|
########################################################
|
||||||
# Set line names according to board parameters
|
# Set line names according to board parameters
|
||||||
# and delete non-existing lines from voice_client config
|
# and delete non-existing lines from voice_client config
|
||||||
|
|
@ -2166,6 +2216,9 @@ start_service() {
|
||||||
config_foreach set_line_name tel_line $maxlinenum
|
config_foreach set_line_name tel_line $maxlinenum
|
||||||
uci_commit voice_client
|
uci_commit voice_client
|
||||||
|
|
||||||
|
# Reload the config since it has changed
|
||||||
|
config_load voice_client
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
# Create temporary files from templates
|
# Create temporary files from templates
|
||||||
#######################################
|
#######################################
|
||||||
|
|
@ -2291,16 +2344,17 @@ stop_service() {
|
||||||
|
|
||||||
reload_service() {
|
reload_service() {
|
||||||
start
|
start
|
||||||
#stop
|
# turn off voice led; asterisk will turn it on if there is a registered account
|
||||||
# turn off voice led; asterisk will turn it on
|
|
||||||
# if there is a registered account
|
|
||||||
ubus call led.voice1 set '{"state":"off"}'
|
ubus call led.voice1 set '{"state":"off"}'
|
||||||
|
|
||||||
|
# FXS channel module must be reloaded before sip module. Otherwise some attributes like
|
||||||
|
# line's registration state which is updated by SIP module through callback might be
|
||||||
|
# reset.
|
||||||
|
asterisk -rx "$(getChipVendor) reload"
|
||||||
asterisk -rx "config reload $ASTERISKDIR/sip.conf"
|
asterisk -rx "config reload $ASTERISKDIR/sip.conf"
|
||||||
sleep 1
|
sleep 1
|
||||||
asterisk -rx "core reload"
|
asterisk -rx "core reload"
|
||||||
asterisk -rx "dialplan reload"
|
asterisk -rx "dialplan reload"
|
||||||
asterisk -rx "$(getChipVendor) reload"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
service_triggers() {
|
service_triggers() {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue