aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_zap.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-10 21:14:54 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2003-04-10 21:14:54 +0000
commitf1bce08396f45b5cdb034bb382f571f3154e115a (patch)
treea9e5692ea0430479a29960616e5a74dbecd5dcbe /channels/chan_zap.c
parent4a5b8a028f9219f05875fa8abf44bee3212fe467 (diff)
Merge and edit Nick's dial support
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@813 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_zap.c')
-rwxr-xr-xchannels/chan_zap.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index fb3639d18..fbfc0eb03 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -1174,6 +1174,23 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
ast_log(LOG_WARNING, "Unable to reset default ring on '%s'\n", ast->name);
p->cidrings = 1;
}
+
+
+ /* nick@dccinc.com 4/3/03 mods to allow for deferred dialing */
+ c = strchr(dest, '/');
+ if (c)
+ c++;
+ if (c && (strlen(c) < p->stripmsd)) {
+ ast_log(LOG_WARNING, "Number '%s' is shorter than stripmsd (%d)\n", c, p->stripmsd);
+ c = NULL;
+ }
+ if (c) {
+ p->dop.op = ZT_DIAL_OP_REPLACE;
+ snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "T%s", c);
+ ast_log(LOG_DEBUG, "FXO: setup deferred dialstring: %s\n", c);
+ } else {
+ strcpy(p->dop.dialstr, "");
+ }
x = ZT_RING;
if (ioctl(p->subs[SUB_REAL].zfd, ZT_HOOK, &x) && (errno != EINPROGRESS)) {
ast_log(LOG_WARNING, "Unable to ring phone: %s\n", strerror(errno));
@@ -2565,7 +2582,18 @@ static struct ast_frame *zt_handle_event(struct ast_channel *ast)
p->subs[index].f.frametype = AST_FRAME_NULL;
p->subs[index].f.subclass = 0;
} else
- ast_setstate(ast, AST_STATE_UP);
+ ast_setstate(ast, AST_STATE_UP);
+ 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);
+ p->dop.dialstr[0] = '\0';
+ }
return &p->subs[index].f;
case AST_STATE_DOWN:
ast_setstate(ast, AST_STATE_RING);