diff options
author | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 21:47:49 +0000 |
---|---|---|
committer | murf <murf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-07 21:47:49 +0000 |
commit | 4d6996c27ad2cc1e0055b06b18522a44036c4f5c (patch) | |
tree | c85e2036ae8d28edebee2af6cc055a51e39ba1da /channels/chan_oss.c | |
parent | c347b4f11cda5733f217deac8c9f852fc46945f0 (diff) |
A fair number of changes for the sake of bug 7506
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@47290 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_oss.c')
-rw-r--r-- | channels/chan_oss.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/channels/chan_oss.c b/channels/chan_oss.c index cba7356e3..2e13f269d 100644 --- a/channels/chan_oss.c +++ b/channels/chan_oss.c @@ -990,11 +990,10 @@ static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, { struct ast_channel *c; - c = ast_channel_alloc(1); + c = ast_channel_alloc(1, state, o->cid_num, o->cid_name, "OSS/%s", o->device + 5); if (c == NULL) return NULL; c->tech = &oss_tech; - ast_string_field_build(c, name, "OSS/%s", o->device + 5); if (o->sounddev < 0) setformat(o, O_RDWR); c->fds[0] = o->sounddev; /* -1 if device closed, override later */ @@ -1009,12 +1008,15 @@ static struct ast_channel *oss_new(struct chan_oss_pvt *o, char *ext, char *ctx, ast_copy_string(c->exten, ext, sizeof(c->exten)); if (!ast_strlen_zero(o->language)) ast_string_field_set(c, language, o->language); - ast_set_callerid(c, o->cid_num, o->cid_name, o->cid_num); + /* Don't use ast_set_callerid() here because it will + * generate a needless NewCallerID event */ + c->cid.cid_num = ast_strdup(o->cid_num); + c->cid.cid_ani = ast_strdup(o->cid_num); + c->cid.cid_name = ast_strdup(o->cid_name); if (!ast_strlen_zero(ext)) c->cid.cid_dnid = ast_strdup(ext); o->owner = c; - ast_setstate(c, state); ast_jb_configure(c, &global_jbconf); if (state != AST_STATE_DOWN) { if (ast_pbx_start(c)) { |