diff options
Diffstat (limited to 'channels/chan_alsa.c')
-rw-r--r-- | channels/chan_alsa.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/channels/chan_alsa.c b/channels/chan_alsa.c index e1fe2b3fe..48d718682 100644 --- a/channels/chan_alsa.c +++ b/channels/chan_alsa.c @@ -130,7 +130,7 @@ static int writedev = -1; static int autoanswer = 1; -static struct ast_channel *alsa_request(const char *type, int format, void *data, int *cause); +static struct ast_channel *alsa_request(const char *type, int format, const struct ast_channel *requestor, void *data, int *cause); static int alsa_digit(struct ast_channel *c, char digit, unsigned int duration); static int alsa_text(struct ast_channel *c, const char *text); static int alsa_hangup(struct ast_channel *c); @@ -532,11 +532,11 @@ static int alsa_indicate(struct ast_channel *chan, int cond, const void *data, s return res; } -static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state) +static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state, const char *linkedid) { struct ast_channel *tmp = NULL; - if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, 0, "ALSA/%s", indevname))) + if (!(tmp = ast_channel_alloc(1, state, 0, 0, "", p->exten, p->context, linkedid, 0, "ALSA/%s", indevname))) return NULL; tmp->tech = &alsa_tech; @@ -565,7 +565,7 @@ static struct ast_channel *alsa_new(struct chan_alsa_pvt *p, int state) return tmp; } -static struct ast_channel *alsa_request(const char *type, int fmt, void *data, int *cause) +static struct ast_channel *alsa_request(const char *type, int fmt, const struct ast_channel *requestor, void *data, int *cause) { int oldformat = fmt; struct ast_channel *tmp = NULL; @@ -580,7 +580,7 @@ static struct ast_channel *alsa_request(const char *type, int fmt, void *data, i if (alsa.owner) { ast_log(LOG_NOTICE, "Already have a call on the ALSA channel\n"); *cause = AST_CAUSE_BUSY; - } else if (!(tmp = alsa_new(&alsa, AST_STATE_DOWN))) { + } else if (!(tmp = alsa_new(&alsa, AST_STATE_DOWN, requestor ? requestor->linkedid : NULL))) { ast_log(LOG_WARNING, "Unable to create new ALSA channel\n"); } @@ -833,7 +833,7 @@ static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args ast_copy_string(alsa.exten, mye, sizeof(alsa.exten)); ast_copy_string(alsa.context, myc, sizeof(alsa.context)); hookstate = 1; - alsa_new(&alsa, AST_STATE_RINGING); + alsa_new(&alsa, AST_STATE_RINGING, NULL); } else ast_cli(a->fd, "No such extension '%s' in context '%s'\n", mye, myc); } |