dect
/
asterisk
Archived
13
0
Fork 0

Move the DAHDI-to-DAHDI operator mode check from app_dial into chan_dahdi

so we don't have to hardcode anything.

(closes issue #13636)
Reported by: seanbright
Patches:
      13636.diff uploaded by seanbright (license 71)
Reviewed by: russellb, putnopvut


git-svn-id: http://svn.digium.com/svn/asterisk/trunk@147388 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
seanbright 2008-10-07 21:34:44 +00:00
parent ed8f9a8684
commit 146f94185f
3 changed files with 11 additions and 5 deletions

View File

@ -1926,11 +1926,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
res = -1;
goto done;
}
if (opermode && !strncmp(chan->tech->type, "DAHDI", 5) && !strncmp(peer->name, "DAHDI", 5)) {
/* what's this special handling for dahdi <-> dahdi ?
* A: dahdi to dahdi calls are natively bridged at the kernel driver
* level, so we need to ensure that this mode gets propagated
* all the way down. */
if (opermode) {
struct oprmode oprmode;
oprmode.peer = peer;

View File

@ -3638,6 +3638,13 @@ static int dahdi_setoption(struct ast_channel *chan, int option, void *data, int
break;
case AST_OPTION_OPRMODE: /* Operator services mode */
oprmode = (struct oprmode *) data;
/* We don't support operator mode across technologies */
if (strcasecmp(chan->tech->type, oprmode->peer->tech->type)) {
ast_log(LOG_NOTICE, "Operator mode not supported on %s to %s calls.\n",
chan->tech->type, oprmode->peer->tech->type);
errno = EINVAL;
return -1;
}
pp = oprmode->peer->tech_pvt;
p->oprmode = pp->oprmode = 0;
/* setup peers */

View File

@ -3823,6 +3823,9 @@ static int iax2_setoption(struct ast_channel *c, int option, void *data, int dat
/* these two cannot be sent, because they require a result */
errno = ENOSYS;
return -1;
case AST_OPTION_OPRMODE:
errno = EINVAL;
return -1;
default:
if (!(h = ast_malloc(datalen + sizeof(*h))))
return -1;