Followup on this, I think that there’s
a booger in the logic for determining whether or not a cause ie is
present. I think something is making the macro Q931IsIEPresent always
find a cause IE even if one isn’t present. Consider this code I added
in zap_isdn.c, zap_isdn_931_34 func:
if
(Q931IsIEPresent(gen->Cause)) {
zap_log(ZAP_LOG_ERROR,
"This message has a cause ie\n");
}
if
(Q931IsIEPresent(gen->BearerCap)) {
zap_log(ZAP_LOG_ERROR,
"This message has a bearercap ie\n");
}
if
(Q931IsIEPresent(gen->RedirNum)) {
zap_log(ZAP_LOG_ERROR,
"This message has a redirnum ie\n");
}
This is inside a case statement for
PROGRESS messages, i.e. it only does this search when a progress msg comes in. I
get two progress messages here, both of which say there is a cause ie when in
fact only the second one has a cause:
freeswitch@freeswitch2.fcnetwork.com>
originate {origination_caller_id_number=80
05409011,dname='Busy',dnum='5898832',dialednum='5597385544',agentinfo='5898832.5
544',bcast='Mikey_test'}openzap/1/a/5597385544
825597385544
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:56
isdn_outgoing_call() Changing state on
1:1 from DOWN to DIALING
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:365 switch_core_session_
run() OpenZAP/1:1/5597385544 Running State
Change CS_INIT
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:415 switch_core_session_
run() (OpenZAP/1:1/5597385544) State INIT
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:415 switch_core_session_
run() (OpenZAP/1:1/5597385544) State INIT
going to sleep
2008-06-18 15:55:56 [DEBUG] switch_core_state_machine.c:365
switch_core_session_
run() OpenZAP/1:1/5597385544 Running State
Change CS_ROUTING
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:420 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
ROUTING
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:420 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
ROUTING going to sleep
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:365 switch_core_session_
run() OpenZAP/1:1/5597385544 Running State
Change CS_CONSUME_MEDIA
2008-06-18 15:55:56 [DEBUG]
switch_core_state_machine.c:442 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
CONSUME_MEDIA
2008-06-18 15:55:56 [ERR] zap_isdn.c:584
state_advance() 1:1 STATE [DIALING]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:982
q931_rx_32() WRITE 58
--------------------------------------------------------------------------------
[00 01 06 0c 08 02 00 03 05 04 03 80 90 a2
18 03 a1 83 81 28 0a 46 72 65 65 53 5
7 49 54 43 48 6c 0c 21 80 38 30 30 35 34
30 39 30 31 31 70 0b a1 35 35 39 37 33
38 35 35 34 34]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:551
zap_isdn_921_23() READ 13
--------------------------------------------------------------------------------
[08 02 80 03 7d 08 03 81 ab 28 14 01 01]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:284
zap_isdn_931_34() Yay I got an event!
Type:[7d] Size:[114]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:551
zap_isdn_921_23() READ 10
--------------------------------------------------------------------------------
[08 02 80 03 02 18 03 a9 83 81]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:284
zap_isdn_931_34() Yay I got an event!
Type:[02] Size:[137]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:551
zap_isdn_921_23() READ 9
--------------------------------------------------------------------------------
[08 02 80 03 03 1e 02 81 88]
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:284
zap_isdn_931_34() Yay I got an event!
Type:[03] Size:[108]
2008-06-18 15:55:56 [ERR] zap_isdn.c:417
zap_isdn_931_34() This message has a ca
use ie
2008-06-18 15:55:56 [DEBUG] zap_isdn.c:435
zap_isdn_931_34() Changing state on 1
:1 from DIALING to PROGRESS
2008-06-18 15:55:56 [ERR] zap_isdn.c:584
state_advance() 1:1 STATE [PROGRESS]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:551
zap_isdn_921_23() READ 13
--------------------------------------------------------------------------------
[08 02 80 03 03 08 02 81 91 1e 02 81 88]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:284
zap_isdn_931_34() Yay I got an event!
Type:[03] Size:[115]
2008-06-18 15:55:57 [ERR] zap_isdn.c:417
zap_isdn_931_34() This message has a ca
use ie
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:432
zap_isdn_931_34() Changing state on 1
:1 from PROGRESS to TERMINATING
2008-06-18 15:55:57 [ERR] zap_isdn.c:433
zap_isdn_931_34() This is a PROGRESS me
ssage with a cause value of [17]
2008-06-18 15:55:57 [ERR] zap_isdn.c:584
state_advance() 1:1 STATE [TERMINATING]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:982
q931_rx_32() WRITE 21
--------------------------------------------------------------------------------
[00 01 08 14 08 02 00 03 4d 28 0a 46 72 65
65 53 57 49 54 43 48]
API CALL
[originate({origination_caller_id_number=8005409011,dname='Busy',dnum='
5898832',dialednum='5597385544',agentinfo='5898832.5544',bcast='Mikey_test'}open
zap/1/a/5597385544 825597385544)] output:
-ERR USER_BUSY
2008-06-18 15:55:57 [DEBUG]
switch_core_state_machine.c:442 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
CONSUME_MEDIA going to sleep
2008-06-18 15:55:57 [DEBUG]
switch_core_state_machine.c:365 switch_core_session_
run() OpenZAP/1:1/5597385544 Running State
Change CS_HANGUP
2008-06-18 15:55:57 [DEBUG]
switch_core_state_machine.c:393 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
HANGUP
freeswitch@freeswitch2.fcnetwork.com>
2008-06-18 15:55:57 [DEBUG] switch_core_st
ate_machine.c:46
switch_core_standard_on_hangup() Standard HANGUP OpenZAP/1:1/55
97385544, cause: USER_BUSY
2008-06-18 15:55:57 [DEBUG]
switch_core_state_machine.c:393 switch_core_session_
run() (OpenZAP/1:1/5597385544) State
HANGUP going to sleep
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:551
zap_isdn_921_23() READ 10
--------------------------------------------------------------------------------
[08 02 80 03 5a 08 03 81 e0 08]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:284
zap_isdn_931_34() Yay I got an event!
Type:[5a] Size:[110]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:380
zap_isdn_931_34() Changing state on 1
:1 from TERMINATING to HANGUP_COMPLETE
2008-06-18 15:55:57 [ERR] zap_isdn.c:584
state_advance() 1:1 STATE [HANGUP_COMPL
ETE]
2008-06-18 15:55:57 [DEBUG] zap_isdn.c:756
state_advance() Changing state on 1:1
from HANGUP_COMPLETE to DOWN
2008-06-18 15:55:57 [ERR] zap_isdn.c:584
state_advance() 1:1 STATE [DOWN]
2008-06-18 15:55:57 [DEBUG] zap_io.c:1071
zap_channel_done() channel done 1:1
Anyway, I’m available for tinkering
or testing if anyone has thoughts on how to proceed…
-MC
From:
freeswitch-dev-bounces@lists.freeswitch.org
[mailto:freeswitch-dev-bounces@lists.freeswitch.org] On Behalf Of Michael Collins
Sent: Monday, June 16, 2008 7:59
PM
To:
freeswitch-dev@lists.freeswitch.org
Subject: [Freeswitch-dev] PRI/OZ
Question: In-band Busy signal
FYI,
I think possibly I found a case where the OZ/PRI needs to
change from PROGRESS to PROGRESS_MEDIA:
http://pastebin.freeswitch.org/4628
In this case I’m getting two PROGRESS messages in a
row. The raw Q931 messages are:
[08 02 80 0c 03 1e 02 81 88]
[08 02 80 0c 03 08 02 81 91 1e 02 81 88]
The second progress msg includes: 08 02 81 91 which means:
08 = Cause IE
02 = two octets/bytes
81 = 1000 0001 = pvt network serving local user
91 = 1001 0001 = Cause number 17 = user busy
I’m 99.9% sure that as soon as we get this PROGRESS
info that we can act on it. MikeJ, is it possible that the result of the
originate command can be something like –ERR BUSY instead of –ERR
NORMAL_CLEARING?
-MC
P.S. – I think this case also shows that we
don’t need the warning message:
2008-06-16 19:58:22 [WARNING] zap_isdn.c:411
zap_isdn_931_34() Why bother changing state on 1:1 from PROGRESS to PROGRESS