|Summary:||ASTERISK-02960: Report IAX2 Frame_Text to send Hangup Cause from Zap channel|
|Date Opened:||2004-12-10 07:02:03.000-0600||Date Closed:||2004-12-30 15:18:41.000-0600|
|Environment:||Attachments:||( 0) 20041210__iax2_causecodes__2.diff.txt|
( 1) Tilghman_20041209__iax2_hangupcause.diff.txt
|Description:||My scenario is interconnect two * box and receive the Hangup Cause from the * end point (TDM PRI), after some test i see that i cant receive the right Cause ID, i have look inside the Iax2.c but im not a c developer so i decide to try the SendTEXT application but without lucky because i cant receive the Text from the Source * box. Example:|
A Server (source Call)
B Server (Termination Call)
Thanks to Tilghman i received a patch to try fix this problem, but for the moment i cant able to receive the Hangup cause also using this patch & SendText. I'm looking for a possible solution, perhaps there are a problem of ovveriding variable in iax2.c using the patch.. but im looking :-)
****** ADDITIONAL INFORMATION ******
I have used two box with Stable 1.0.2 with BriStuff-0.2.0-RC2 but i think is the same on unmodified version
|Comments:||By: dimi (dimi) 2004-12-10 07:39:46.000-0600|
i have discored the problem :-) I have patched the Server A with Tilghman patch
(not on the server B..) and i have remove the line that ovveride the Receive Send Text
from server B:
from chan_iax2.c on server A
+++ Line 5503
iaxs[fr.callno]->alreadygone = 1;
ast_log(LOG_DEBUG, "Immediately destroying %d, having received hangup\n", fr.callno);
/* Set hangup cause */
+++ // if (ies.cause)
+++ // iaxs[fr.callno]->owner->hangupcause = atoi(ies.cause);
/* Send ack immediately, before we destroy */
send_command_immediate(iaxs[fr.callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr.ts, NULL, 0,fr.iseqno);
After this hack the SendText from B server is able to send the HangupCause to
server A :-)
How i can replace my stupid hack with a good line of code?
edited on: 12-10-04 07:40
By: Mark Spencer (markster) 2004-12-10 23:59:00.000-0600
actually, you know what... we could carry hangup cause *after* the trailing 0 of the cause string and thus not break backwards compatibility. The cause could come from include/asterisk/causes.h
By: dimi (dimi) 2004-12-14 05:27:35.000-0600
Tilghman have provide a new patch to transport the HangupCause in a better way. This patch is based on CVS HEAD and seems have problem with Stable branch i have found this problem:
> After patch Today CVS when i try compile it i have the following error:
> A_PRI -DIAX_TRUNKING -DCRYPTO -fPIC -c -o chan_iax2.o chan_iax2.c
> chan_iax2.c: In function `attempt_transmit':
> chan_iax2.c:1472: error: `AST_CAUSE_DESTINATION_OUT_OF_ORDER' undeclared
> (first use in this function)
Tilghman reply to this problem:
CVS STABLE does not have the cause codes <asterisk/causes.h> included, while
CVS HEAD does. Please try a clean checkout of CVS HEAD (IOW, no tag).
I have tested in CVS HEAD 13/12/2004 but seems dont return the right Hangup Cause provide from the remote Server. Some help how can i debug this problem?
By: logitel (logitel) 2004-12-14 18:39:06.000-0600
Why not make this more generic and transfer a set of local channel variables to the remote * via iax during callsetup / disconnect.
I think this should be implemented as a extension to IAX2 protocol.
Any comments anyone on this ?
By: dimi (dimi) 2004-12-15 05:01:43.000-0600
Dear logitel if you need to send some Variable from remote server you ca use the first patch of Tilghman directly in * stable, this patch use SendText on Remote * box to transport the Value of Variable but in this case this variable is post on "hangupcause" global variable, if you are able to manage C code (is not my case :-( ) you can modify it to send in a new Local Variable.
By: Mark Spencer (markster) 2004-12-28 15:58:08.000-0600
Tilghman's patch for the q.931 cause code in IAX has already been merged. Thanks!