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:
parent
ed8f9a8684
commit
146f94185f
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
Reference in New Issue