diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 8d2a321d92a6cecb41b96cd3aacc0ebd42fc6b7f..f45a4f3275d480f9068325c7641cd5bdd1a7f8a8 100755 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -277,6 +277,9 @@ static int hanguponpolarityswitch = 0; /* How long (ms) to ignore Polarity Switch events after we answer a call */ static int polarityonanswerdelay = 600; +/* When to send the CallerID signals (rings) */ +static int sendcalleridafter = DEFAULT_CIDRINGS; + /* Protect the monitoring thread, so only one process can kill or start it, and not when it's doing something critical. */ AST_MUTEX_DEFINE_STATIC(monlock); @@ -566,6 +569,7 @@ static struct zt_pvt { int hanguponpolarityswitch; int polarityonanswerdelay; struct timeval polaritydelaytv; + int sendcalleridafter; #ifdef ZAPATA_PRI struct zt_pri *pri; struct zt_pvt *bearer; @@ -1567,7 +1571,7 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout) } else { if (ioctl(p->subs[SUB_REAL].zfd, ZT_SETCADENCE, NULL)) ast_log(LOG_WARNING, "Unable to reset default ring on '%s'\n", ast->name); - p->cidrings = DEFAULT_CIDRINGS; + p->cidrings = p->sendcalleridafter; } @@ -6652,6 +6656,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio, struct zt_p tmp->polarityonanswerdelay = polarityonanswerdelay; tmp->hanguponpolarityswitch = hanguponpolarityswitch; + tmp->sendcalleridafter = sendcalleridafter; } if (tmp && !here) { @@ -9809,6 +9814,8 @@ static int setup_zap(int reload) polarityonanswerdelay = atoi(v->value); } else if (!strcasecmp(v->name, "hanguponpolarityswitch")) { hanguponpolarityswitch = ast_true(v->value); + } else if (!strcasecmp(v->name, "sendcalleridafter")) { + sendcalleridafter = atoi(v->value); } } else ast_log(LOG_WARNING, "Ignoring %s\n", v->name); diff --git a/configs/zapata.conf.sample b/configs/zapata.conf.sample index e65ff7c0a445ef2a4f5dfc0f6c1978c4d33bcddf..60095e61e175e0dabc61cb6ebf9b72f9f7a528db 100755 --- a/configs/zapata.conf.sample +++ b/configs/zapata.conf.sample @@ -186,6 +186,13 @@ callwaiting=yes ; usecallingpres=yes ; +; Some countries (UK) have ring tones with different ring tones (ring-ring), +; which means the callerid needs to be set later on, and not just after +; the first ring, as per the default. +; +;sendcalleridafter=1 +; +; ; Support Caller*ID on Call Waiting ; callwaitingcallerid=yes