Problem with DID, Digium TE122 & Asterisk 1.6

Hello,

my situation is the following:

I connectet the *-server with a Digium TE122 via E1 to the NTPM of our provider NetCologne. I installed libpri-1.6.0 and zaptel-1.4.10. Everything on outgoing calls seems fine. But on incoming calls only the first digit of the DID after the head number seems to be transmitted / notified by Asterisk:

-- Executing [XXXX4@pri-ext:1] Set("Zap/1-1", "TIMEOUT(digit)=1") in new stack
-- Digit timeout set to 1
-- Executing [XXXX4@pri-ext:2] WaitExten("Zap/1-1", "3") in new stack
-- Accepting call from 'YYYYYYYYYYY' to 'XXXX4' on channel 0/1, span 1
-- Timeout on Zap/1-1, continuing...

You can see I even tried to use WaitExten() to wait for the missing digits. The DID is always 3 digits long and should have been XXXX401 in this case. They are definately transmitted by our provider because our previous telephone system (elmeg 880T) runs correctly.

This is my zapata.conf


[channels]
switchtype=euroisdn
language=de
context=pri-ext
signalling=pri_cpe
channel => 1-15,17-31
group=1
;pridialplan=local
;prilocaldialplan=local
nationalprefix=0
internationalprefix=00
immediate=no
overlapdial=yes
callprogress=no
busydetect=no
echocancel=yes

Waht could I do? I tried to use the Asterisk Debian Package, a self compiled 1.4-Version and the current running self compiled 1.6-Version. It is always the same issue.

Kind regards

Hello,

I solved this problem.

It seems the overlapdial=yes paramter in zapata.conf is completely ignored /not parsed correctly.
Also overlapdial could be 4 values instead of “yes” and “no”:
0 : overlapdial off
1 : overlapdial for outgoing calls
2 : overlapdial for incoming calls
3 : overlapdial for both directions

There also is no default value declared in channels/chan_zap.c

/*! returns a new zt_chan_conf with default values (by-value) */
static struct zt_chan_conf zt_chan_conf_default(void) {
        /* recall that if a field is not included here it is initialized
         * to 0 or equivalent
         */
        struct zt_chan_conf conf = {
#ifdef HAVE_PRI
                .pri = {
                        .nsf = PRI_NSF_NONE,
                        .switchtype = PRI_SWITCH_NI2,
                        .dialplan = PRI_NATIONAL_ISDN + 1,
                        .localdialplan = PRI_NATIONAL_ISDN + 1,
                        .nodetype = PRI_CPE,

                        .minunused = 2,
                        .idleext = "",
                        .idledial = "",
                        .internationalprefix = "",
                        .nationalprefix = "",
                        .localprefix = "",
                        .privateprefix = "",
                        .unknownprefix = "",
                        .resetinterval = -1,
                },
#endif

So I changed channels/chan_zap.c as follows:

/*! returns a new zt_chan_conf with default values (by-value) */
static struct zt_chan_conf zt_chan_conf_default(void) {
        /* recall that if a field is not included here it is initialized
         * to 0 or equivalent
         */
        struct zt_chan_conf conf = {
#ifdef HAVE_PRI
                .pri = {
                        .nsf = PRI_NSF_NONE,
                        .switchtype = PRI_SWITCH_NI2,
                        .dialplan = PRI_NATIONAL_ISDN + 1,
                        .localdialplan = PRI_NATIONAL_ISDN + 1,
                        .nodetype = PRI_CPE,

                        .minunused = 2,
                        .idleext = "",
                        .idledial = "",
                        .internationalprefix = "",
                        .nationalprefix = "",
                        .localprefix = "",
                        .privateprefix = "",
                        .unknownprefix = "",
                        .resetinterval = -1,
                        .overlapdial = 2,
                },
#endif

So this works for me but this is a bug. I wonder why this is not mentioned anywhere or catched someones eyes.