dect
/
asterisk
Archived
13
0
Fork 0

Merge distinctive ring for MGCP (bug #2880, with mods)

git-svn-id: http://svn.digium.com/svn/asterisk/trunk@4690 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
markster 2005-01-06 04:02:33 +00:00
parent ced25cfef8
commit 043f9e3c18
1 changed files with 28 additions and 7 deletions

View File

@ -11,6 +11,10 @@
* the GNU General Public License
*/
/* FO: Changes
* -- add distinctive ring signalling (part of RFC 3660)
*/
/* JS: Changes
-- add support for the wildcard endpoint
-- seteable wildcard with wcardep on mgcp.conf
@ -848,24 +852,41 @@ static int send_request(struct mgcp_endpoint *p, struct mgcp_subchannel *sub,
static int mgcp_call(struct ast_channel *ast, char *dest, int timeout)
{
int res;
struct mgcp_endpoint *p;
int res;
struct mgcp_endpoint *p;
struct mgcp_subchannel *sub;
char *tone;
char tone[50]="";
char *distinctive_ring = NULL;
struct varshead *headp;
struct ast_var_t *current;
if (mgcpdebug) {
ast_verbose(VERBOSE_PREFIX_3 "MGCP mgcp_call(%s)\n", ast->name);
}
sub = ast->pvt->pvt;
sub = ast->pvt->pvt;
p = sub->parent;
ast_mutex_lock(&sub->lock);
headp=&ast->varshead;
AST_LIST_TRAVERSE(headp,current,entries) {
/* Check whether there is a ALERT_INFO variable */
if (strcasecmp(ast_var_name(current),"ALERT_INFO")==0) {
distinctive_ring = ast_var_value(current);
}
}
+
ast_mutex_lock(&sub->lock);
switch (p->hookstate) {
case MGCP_OFFHOOK:
tone = "L/wt";
snprintf(tone, sizeof(tone), "L/wt");
break;
case MGCP_ONHOOK:
default:
tone = "L/rg";
if (distinctive_ring && !ast_strlen_zero(distinctive_ring)) {
snprintf(tone, sizeof(tone), "L/r%s", distinctive_ring);
ast_verbose(VERBOSE_PREFIX_2 "MGCP distinctive ring %s\n", tone);
} else {
snprintf(tone, sizeof(tone), "L/rg");
ast_verbose(VERBOSE_PREFIX_2 "MGCP default ring\n");
}
break;
}