On Thu, 2007-05-03 at 16:47 +0500, Rizwan Hisham wrote:
> Hi all,
> i just updated to asterisk 1.4.4 from 1.4.2. i was doing this to
> forward an unanswered call in 1.4.2
>
> exten=> 1,1,Dial(SIP/123,,Ttg)
> exten=> 1,2,Gotoif($[${DIALSTATUS}=ANSWERED]?:10)
> exten=> 1,3,Hangup
>
> exten=> 1,10,Dial(Local/2,,Ttg)
> exten=> 1,11,Hangup
>
> exten=> 2,1,Dial(SIP/234,,Ttg)
> exten=> 2,2,Hangup
>
> All the CDR variables for the first channel (SIP/123) are fine. but
> when local channel initiates, it does not copy the CDR(accountcode)
> variable from the first channel (in asterisk 1.4.4), whereas it did in
> 1.4.2. so the CDR(accountcode) variable for local channel is empty in
> 1.4.4. This is a big problem for me as i have to charge the forwarded
> calls also and all calls are charged based on account code. If
> accountcode is empty, i cant make a decision how to charge the call.
>
> Can anybody fix this for me or do i have to jump back to asterisk
> 1.4.2?
>
> --
> Regards
> Rizwan Hisham
> Software Engineer Riswan-- This could easily be my fault. I've attached a fix, that I can commit to the source, if it works for you. Here the instructions: 1. save the attachment to a file. 2. cd to your 1.4-source/channels directory 3. patch -p0 < localfix 4. cd .. 5. make 6. make install test If there's no differences, you still have the same problem, you'd best restore the source to it's previous condition: 1. cd 1.4-sourcedir/channels 2. mv chan_local.c.orig chan_local.c 3. cd .. 4. make 5. make install This patch will properly set the accountcode amaflag from the local channel's owner at channel creation time, and therefore, the local channels' CDR as well. -- Steve Murphy Software Developer Digium
Index: chan_local.c
===================================================================
--- chan_local.c (revision 62984)
+++ chan_local.c (working copy)
@@ -594,10 +594,22 @@
{
struct ast_channel *tmp = NULL, *tmp2 = NULL;
int randnum = ast_random() & 0xffff, fmt = 0;
+ const char *t;
+ int ama;
/* Allocate two new Asterisk channels */
- if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, 0, "Local/[EMAIL PROTECTED],1", p->exten, p->context, randnum))
- || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, "", p->exten, p->context, 0, "Local/[EMAIL PROTECTED],2", p->exten, p->context, randnum))) {
+ /* safe accountcode */
+ if (p->owner && p->owner->accountcode)
+ t = p->owner->accountcode;
+ else
+ t = "";
+
+ if (p->owner)
+ ama = p->owner->amaflags;
+ else
+ ama = 0;
+ if (!(tmp = ast_channel_alloc(1, state, 0, 0, t, p->exten, p->context, ama, "Local/[EMAIL PROTECTED],1", p->exten, p->context, randnum))
+ || !(tmp2 = ast_channel_alloc(1, AST_STATE_RING, 0, 0, t, p->exten, p->context, ama, "Local/[EMAIL PROTECTED],2", p->exten, p->context, randnum))) {
if (tmp)
ast_channel_free(tmp);
if (tmp2)
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ --Bandwidth and Colocation provided by Easynews.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
