[asterisk-dev] chan_dahdi - dnid handling

Wolfgang Pichler wpichler at yosd.at
Wed Jun 30 07:20:11 CDT 2010


I am using ISDN - net and cpe signalling (gateway functionality)

Adding the extra check for the "s" extension will not be very meaningful -
because with immediate=yes there will always be an "s" extension - and it
would then also affect normal "provide dialtone for isdn telephone to be
able to dial out" operation - and limit this dialtone to 3 seconds. Or do i
miss here something ?

So to make it configureable would be better - or make other defaults
depending on the signalling - if it is bri_net - then let the timeout be as
high as 8 seconds with no match - and 3 seconds with match. If it is bri_cpe
- then let the timeout always be 3 seconds.


About the DNID issue - i have my fix now on a box and testing it currently -
it does work like a charm. I have submitted a bug report with the patch
attached
https://issues.asterisk.org/view.php?id=17568

best regards,
Wolfgang

2010/6/30 Klaus Darilion <klaus.mailinglists at pernau.at>

>
>
> Am 30.06.2010 09:10, schrieb Wolfgang Pichler:
>
>  Hi all,
>>
>> i have a question / bug report about the chan_dahdi dnid handling...
>>
>> I am setting up a gateway system - for use in austria. In Austria we can
>> get the dnid complete on a new call (we call it Blockwahl) - or we do
>> get it as dtmf sequence (we call it Einzelwahl).
>>
>> Setting up chan_dahdi with immediate=no does work for this - but if the
>> call is comming - and does not have the complete set - then asterisk
>> will wait 8 seconds to send the call to the s extension - which is
>> definitly to long.
>>
>
> Are you using analog or ISDN?
>
> Maybe you discovered another bug, but I think there is another problem when
> handling the received digits:
>
> channels/chan_dahdi.c:
> if (ast_exists_extension(chan, chan->context, exten, 1, p->cid_num))
>    timeout = matchdigittimeout;
> else
>    timeout = gendigittimeout;
> res = ast_waitfordigit(chan, timeout);
>
> If chan_dahdi does not find a matching extension, e.g. if there is no dnid
> provided, it sets the timeout to gendigittimeout=8 seconds, which is IMO
> really much to big. The usual overlap timeout of matchdigittimeout=3 seconds
> is more appropriate.
>
> You could make the gendigittimeout and matchdigittimeout configurable, or
> change the logic for exmaple to check for "s" extension in case of missing
> DNID:
>
> if (ast_exists_extension(chan, chan->context, exten, 1, p->cid_num))
>  timeout = matchdigittimeout;
> else {
>  if (ast_strlen_zero(exten) &&
>      ast_exists_extension(chan, chan->context, "s", 1, p->cid_num)) {
>    timeout = matchdigittimeout;
>  } else {
>    timeout = gendigittimeout;
>  }
> }
> res = ast_waitfordigit(chan, timeout);
>
> regards
> Klaus
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20100630/7080e39a/attachment.htm 


More information about the asterisk-dev mailing list