diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-16 19:50:12 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-06-16 19:50:12 +0000 |
commit | f05679d13ececf9e78d26c16df6f62e622873666 (patch) | |
tree | baad06f487dd60a1b044671ddbd5a345c38457d5 | |
parent | 2bfc978f79c3e6ab7eb6225d63aee28a595ab48e (diff) |
Port "hasvoicemail" change from SIP to other channel drivers
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@123113 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | channels/chan_dahdi.c | 12 | ||||
-rw-r--r-- | channels/chan_h323.c | 4 | ||||
-rw-r--r-- | channels/chan_iax2.c | 4 | ||||
-rw-r--r-- | channels/chan_mgcp.c | 4 | ||||
-rw-r--r-- | channels/chan_skinny.c | 4 |
5 files changed, 24 insertions, 4 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index f20834181..c03981dd5 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -10656,7 +10656,7 @@ static int build_channels(struct dahdi_chan_conf *conf, int iscrv, const char *v /** The length of the parameters list of 'dahdichan'. * \todo Move definition of MAX_CHANLIST_LEN to a proper place. */ #define MAX_CHANLIST_LEN 80 -static int process_dahdi(struct dahdi_chan_conf *confp, struct ast_variable *v, int reload, int skipchannels) +static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct ast_variable *v, int reload, int skipchannels) { struct dahdi_pvt *tmp; char *ringc; /* temporary string for parsing the dring number. */ @@ -10736,6 +10736,10 @@ static int process_dahdi(struct dahdi_chan_conf *confp, struct ast_variable *v, confp->chan.dtmfrelax = 0; } else if (!strcasecmp(v->name, "mailbox")) { ast_copy_string(confp->chan.mailbox, v->value, sizeof(confp->chan.mailbox)); + } else if (!strcasecmp(v->name, "hasvoicemail")) { + if (ast_true(v->value) && ast_strlen_zero(confp->chan.mailbox)) { + ast_copy_string(confp->chan.mailbox, cat, sizeof(confp->chan.mailbox)); + } } else if (!strcasecmp(v->name, "adsi")) { confp->chan.adsi = ast_true(v->value); } else if (!strcasecmp(v->name, "usesmdi")) { @@ -11425,7 +11429,7 @@ static int setup_dahdi(int reload) memcpy(&global_jbconf, &default_jbconf, sizeof(struct ast_jb_conf)); v = ast_variable_browse(cfg, "channels"); - res = process_dahdi(&conf, v, reload, 0); + res = process_dahdi(&conf, "", v, reload, 0); ast_mutex_unlock(&iflock); ast_config_destroy(cfg); if (res) @@ -11434,7 +11438,7 @@ static int setup_dahdi(int reload) if (cfg) { char *cat; const char *chans; - process_dahdi(&conf, ast_variable_browse(cfg, "general"), 1, 1); + process_dahdi(&conf, "", ast_variable_browse(cfg, "general"), 1, 1); for (cat = ast_category_browse(cfg, NULL); cat ; cat = ast_category_browse(cfg, cat)) { if (!strcasecmp(cat, "general")) continue; @@ -11443,7 +11447,7 @@ static int setup_dahdi(int reload) struct dahdi_chan_conf sect_conf; memcpy(§_conf, &conf, sizeof(sect_conf)); - process_dahdi(§_conf, ast_variable_browse(cfg, cat), reload, 0); + process_dahdi(§_conf, cat, ast_variable_browse(cfg, cat), reload, 0); } } ast_config_destroy(cfg); diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 3ae300876..710ebf37e 100644 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -1489,6 +1489,10 @@ static struct oh323_peer *build_peer(const char *name, struct ast_variable *v, s peer->ha = ast_append_ha(v->name, v->value, peer->ha); } else if (!strcasecmp(v->name, "mailbox")) { ast_copy_string(peer->mailbox, v->value, sizeof(peer->mailbox)); + } else if (!strcasecmp(v->name, "hasvoicemail")) { + if (ast_true(v->value) && ast_strlen_zero(peer->mailbox)) { + ast_copy_string(peer->mailbox, name, sizeof(peer->mailbox)); + } } } ASTOBJ_UNMARK(peer); diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 4f40bd28c..1c1c24981 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -9347,6 +9347,10 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, st ast_string_field_set(peer, secret, v->value); } else if (!strcasecmp(v->name, "mailbox")) { ast_string_field_set(peer, mailbox, v->value); + } else if (!strcasecmp(v->name, "hasvoicemail")) { + if (ast_true(v->value) && ast_strlen_zero(peer->mailbox)) { + ast_string_field_set(peer, mailbox, name); + } } else if (!strcasecmp(v->name, "mohinterpret")) { ast_string_field_set(peer, mohinterpret, v->value); } else if (!strcasecmp(v->name, "mohsuggest")) { diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 0a76c02cd..1d5114bee 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.c @@ -3728,6 +3728,10 @@ static struct mgcp_gateway *build_gateway(char *cat, struct ast_variable *v) canreinvite = ast_true(v->value); } else if (!strcasecmp(v->name, "mailbox")) { ast_copy_string(mailbox, v->value, sizeof(mailbox)); + } else if (!strcasecmp(v->name, "hasvoicemail")) { + if (ast_true(v->value) && ast_strlen_zero(mailbox)) { + ast_copy_string(mailbox, gw->name, sizeof(mailbox)); + } } else if (!strcasecmp(v->name, "adsi")) { adsi = ast_true(v->value); } else if (!strcasecmp(v->name, "callreturn")) { diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index ee84c666a..2e796e7c4 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -2202,6 +2202,10 @@ static struct skinny_device *build_device(const char *cat, struct ast_variable * cancallforward = ast_true(v->value); } else if (!strcasecmp(v->name, "mailbox")) { ast_copy_string(mailbox, v->value, sizeof(mailbox)); + } else if (!strcasecmp(v->name, "hasvoicemail")) { + if (ast_true(v->value) && ast_strlen_zero(mailbox)) { + ast_copy_string(mailbox, cat, sizeof(mailbox)); + } } else if (!strcasecmp(v->name, "callreturn")) { callreturn = ast_true(v->value); } else if (!strcasecmp(v->name, "callwaiting")) { |