Merged revisions 123113 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 16 Jun 2008 19:57:05 +0000 (19:57 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 16 Jun 2008 19:57:05 +0000 (19:57 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r123113 | tilghman | 2008-06-16 14:50:12 -0500 (Mon, 16 Jun 2008) | 2 lines

Port "hasvoicemail" change from SIP to other channel drivers

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@123114 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c
channels/chan_h323.c
channels/chan_iax2.c
channels/chan_mgcp.c
channels/chan_sip.c
channels/chan_skinny.c

index 801ee05..669c44c 100644 (file)
@@ -13487,7 +13487,7 @@ static void process_echocancel(struct dahdi_chan_conf *confp, const char *data,
 /*! process_dahdi() - No warnings on non-existing cofiguration keywords */
 #define PROC_DAHDI_OPT_NOWARN  (1 << 1) 
 
-static int process_dahdi(struct dahdi_chan_conf *confp, struct ast_variable *v, int reload, int options)
+static int process_dahdi(struct dahdi_chan_conf *confp, const char *cat, struct ast_variable *v, int reload, int options)
 {
        struct dahdi_pvt *tmp;
        const char *ringc; /* temporary string for parsing the dring number. */
@@ -13578,6 +13578,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")) {
@@ -14416,7 +14420,7 @@ static int setup_dahdi(int reload)
        if (ucfg) {
                const char *chans;
 
-               process_dahdi(&base_conf, ast_variable_browse(ucfg, "general"), 1, 0);
+               process_dahdi(&base_conf, "", ast_variable_browse(ucfg, "general"), 1, 0);
 
                for (cat = ast_category_browse(ucfg, NULL); cat ; cat = ast_category_browse(ucfg, cat)) {
                        if (!strcasecmp(cat, "general")) {
@@ -14431,7 +14435,7 @@ static int setup_dahdi(int reload)
 
                        memcpy(&conf, &base_conf, sizeof(conf));
 
-                       if ((res = process_dahdi(&conf, ast_variable_browse(ucfg, cat), reload, PROC_DAHDI_OPT_NOCHAN | PROC_DAHDI_OPT_NOWARN))) {
+                       if ((res = process_dahdi(&conf, cat, ast_variable_browse(ucfg, cat), reload, PROC_DAHDI_OPT_NOCHAN | PROC_DAHDI_OPT_NOWARN))) {
                                ast_config_destroy(ucfg);
                                ast_mutex_unlock(&iflock);
                                return res;
index bbe0551..9951d12 100644 (file)
@@ -1530,6 +1530,10 @@ static struct oh323_peer *build_peer(const char *name, struct ast_variable *v, s
                                ast_log(LOG_ERROR, "Bad ACL entry in configuration line %d : %s\n", v->lineno, v->value);
                } 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));
+                       }
                }
        }
        if (!peer->options.dtmfmode)
index 2bd1de1..9741fbb 100644 (file)
@@ -10359,6 +10359,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")) {
index 6cc7e66..46b75bf 100644 (file)
@@ -3699,6 +3699,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")) {
index 64e1e5b..72035eb 100644 (file)
@@ -21262,8 +21262,8 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
                } else if (!strcasecmp(v->name, "hasvoicemail")) {
                        /* People expect that if 'hasvoicemail' is set, that the mailbox will
                         * be also set, even if not explicitly specified. */
-                       if (ast_true(v->value) && ast_strlen_zero(peer->mailbox)) {
-                               ast_copy_string(peer->mailbox, name, sizeof(peer->mailbox));
+                       if (ast_true(v->value) && AST_LIST_EMPTY(&peer->mailboxes)) {
+                               add_peer_mailboxes(peer, name);
                        }
                } else if (!strcasecmp(v->name, "subscribemwi")) {
                        ast_set2_flag(&peer->flags[1], ast_true(v->value), SIP_PAGE2_SUBSCRIBEMWIONLY);
index 6a889a4..5758a27 100644 (file)
@@ -3039,6 +3039,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")) {