|
|
|
|
@ -1191,7 +1191,7 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
|
|
|
|
|
}
|
|
|
|
|
if (c) {
|
|
|
|
|
p->dop.op = ZT_DIAL_OP_REPLACE;
|
|
|
|
|
snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "T%s", c);
|
|
|
|
|
snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "Tw%s", c);
|
|
|
|
|
ast_log(LOG_DEBUG, "FXO: setup deferred dialstring: %s\n", c);
|
|
|
|
|
} else {
|
|
|
|
|
strcpy(p->dop.dialstr, "");
|
|
|
|
|
@ -2588,19 +2588,23 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
|
|
|
|
|
/* Ignore answer if "confirm answer" is selected */
|
|
|
|
|
p->subs[index].f.frametype = AST_FRAME_NULL;
|
|
|
|
|
p->subs[index].f.subclass = 0;
|
|
|
|
|
} else
|
|
|
|
|
ast_setstate(ast, AST_STATE_UP);
|
|
|
|
|
if (strlen(p->dop.dialstr)) {
|
|
|
|
|
} else if (strlen(p->dop.dialstr)) {
|
|
|
|
|
/* nick@dccinc.com 4/3/03 - fxo should be able to do deferred dialing */
|
|
|
|
|
res = ioctl(p->subs[SUB_REAL].zfd, ZT_DIAL, &p->dop);
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
ast_log(LOG_WARNING, "Unable to initiate dialing on trunk channel %d\n", p->channel);
|
|
|
|
|
p->dop.dialstr[0] = '\0';
|
|
|
|
|
return NULL;
|
|
|
|
|
} else
|
|
|
|
|
ast_log(LOG_DEBUG, "Sent deferred digit string: %s\n", p->dop.dialstr);
|
|
|
|
|
} else {
|
|
|
|
|
ast_log(LOG_DEBUG, "Sent FXO deferred digit string: %s\n", p->dop.dialstr);
|
|
|
|
|
p->subs[index].f.frametype = AST_FRAME_NULL;
|
|
|
|
|
p->subs[index].f.subclass = 0;
|
|
|
|
|
p->dialing = 1;
|
|
|
|
|
}
|
|
|
|
|
p->dop.dialstr[0] = '\0';
|
|
|
|
|
}
|
|
|
|
|
ast_setstate(ast, AST_STATE_DIALING);
|
|
|
|
|
} else
|
|
|
|
|
ast_setstate(ast, AST_STATE_UP);
|
|
|
|
|
return &p->subs[index].f;
|
|
|
|
|
case AST_STATE_DOWN:
|
|
|
|
|
ast_setstate(ast, AST_STATE_RING);
|
|
|
|
|
|