diff options
Diffstat (limited to 'channels/chan_oss.c')
-rw-r--r-- | channels/chan_oss.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/channels/chan_oss.c b/channels/chan_oss.c index b3ff44883..9b2201a48 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -332,7 +332,8 @@ static struct chan_oss_pvt oss_default = { static int setformat(struct chan_oss_pvt *o, int mode); -static struct ast_channel *oss_request(const char *type, int format, void *data, int *cause); +static struct ast_channel *oss_request(const char *type, int format, const struct ast_channel *requestor, + void *data, int *cause); static int oss_digit_begin(struct ast_channel *c, char digit); static int oss_digit_end(struct ast_channel *c, char digit, unsigned int duration); static int oss_text(struct ast_channel *c, const char *text); @@ -787,11 +788,11 @@ static int oss_indicate(struct ast_channel *c, int cond, const void *data, size_ /*! * \brief allocate a new channel. */ -static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, int state) +static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, int state, const char *linkedid) { struct ast_channel *c; - c = ast_channel_alloc(1, state, o->cid_num, o->cid_name, "", ext, ctx, 0, "Console/%s", o->device + 5); + c = ast_channel_alloc(1, state, o->cid_num, o->cid_name, "", ext, ctx, linkedid, 0, "Console/%s", o->device + 5); if (c == NULL) return NULL; c->tech = &oss_tech; @@ -830,7 +831,7 @@ static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, return c; } -static struct ast_channel *oss_request(const char *type, int format, void *data, int *cause) +static struct ast_channel *oss_request(const char *type, int format, const struct ast_channel *requestor, void *data, int *cause) { struct ast_channel *c; struct chan_oss_pvt *o; @@ -858,7 +859,7 @@ static struct ast_channel *oss_request(const char *type, int format, void *data, *cause = AST_CAUSE_BUSY; return NULL; } - c = oss_new(o, NULL, NULL, AST_STATE_DOWN); + c = oss_new(o, NULL, NULL, AST_STATE_DOWN, requestor ? requestor->linkedid : NULL); if (c == NULL) { ast_log(LOG_WARNING, "Unable to create new OSS channel\n"); return NULL; @@ -1117,7 +1118,7 @@ static char *console_dial(struct ast_cli_entry *e, int cmd, struct ast_cli_args myc = o->ctx; if (ast_exists_extension(NULL, myc, mye, 1, NULL)) { o->hookstate = 1; - oss_new(o, mye, myc, AST_STATE_RINGING); + oss_new(o, mye, myc, AST_STATE_RINGING, NULL); } else ast_cli(a->fd, "No such extension '%s' in context '%s'\n", mye, myc); if (s) |