Index: channels/sig_pri.h =================================================================== --- channels/sig_pri.h (revision 229818) +++ channels/sig_pri.h (working copy) @@ -72,6 +72,7 @@ /* Note: Called with PRI lock held */ void (* const handle_dchan_exception)(struct sig_pri_pri *pri, int index); void (* const set_dialing)(void *pvt, int flag); + void (* const set_digital)(void *pvt, int flag); void (* const set_callerid)(void *pvt, const struct ast_party_caller *caller); void (* const set_dnid)(void *pvt, const char *dnid); void (* const set_rdnis)(void *pvt, const char *rdnis); Index: channels/chan_dahdi.c =================================================================== --- channels/chan_dahdi.c (revision 229818) +++ channels/chan_dahdi.c (working copy) @@ -2069,6 +2069,12 @@ p->dialing = flag; } +static void my_set_digital(void *pvt, int flag) +{ + struct dahdi_pvt *p = pvt; + p->digital = flag; +} + static void my_set_ringtimeout(void *pvt, int ringt) { struct dahdi_pvt *p = pvt; @@ -2780,6 +2786,7 @@ .new_ast_channel = my_new_pri_ast_channel, .fixup_chans = my_pri_fixup_chans, .set_dialing = my_set_dialing, + .set_digital = my_set_digital, .set_callerid = my_pri_set_callerid, .set_dnid = my_pri_set_dnid, .set_rdnis = my_pri_set_rdnis, Index: channels/sig_pri.c =================================================================== --- channels/sig_pri.c (revision 229818) +++ channels/sig_pri.c (working copy) @@ -113,6 +113,13 @@ p->calls->set_dialing(p->chan_pvt, flag); } +static void sig_pri_set_digital(struct sig_pri_chan *p, int flag) +{ + p->digital = flag; + if (p->calls->set_digital) + p->calls->set_digital(p->chan_pvt, flag); +} + /*! * \internal * \brief Set the caller id information in the parent module. @@ -3194,7 +3201,7 @@ p->owner = NULL; p->outgoing = 0; - p->digital = 0; + sig_pri_set_digital(p, 0); /* push up to parent for EC*/ p->proceeding = 0; p->progress = 0; p->alerting = 0; @@ -3451,7 +3458,7 @@ return -1; } - p->digital = IS_DIGITAL(ast->transfercapability); + sig_pri_set_digital(p, IS_DIGITAL(ast->transfercapability)); /* push up to parent for EC */ /* Should the picked channel be used exclusively? */ if (p->priexclusive || p->pri->nodetype == PRI_NETWORK) { @@ -3742,7 +3749,7 @@ break; case AST_CONTROL_PROGRESS: ast_debug(1,"Received AST_CONTROL_PROGRESS on %s\n",chan->name); - p->digital = 0; /* Digital-only calls isn't allowing any inband progress messages */ + sig_pri_set_digital(p, 0); /* Digital-only calls isn't allowing any inband progress messages */ if (!p->progress && p->pri && !p->outgoing) { if (p->pri->pri) { if (!pri_grab(p, p->pri)) {