aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-25 21:06:22 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-04-25 21:06:22 +0000
commit02c3fe1f1d007d5c54f94e7752f591eeab340424 (patch)
treedcf39237ed8db6f33be7609cba9ca2ef68d92801 /channels/chan_iax2.c
parent46218b546b269f611f3ab9558586e9091e6cc473 (diff)
Ensure that callerid settings are reset on a reload.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@61862 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index bce9d3e13..8cf91cdd8 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -324,8 +324,8 @@ struct iax2_peer {
char inkeys[80]; /*!< Key(s) this peer can use to authenticate to us */
/* Suggested caller id if registering */
- char cid_num[AST_MAX_EXTENSION]; /*!< Default context (for transfer really) */
- char cid_name[AST_MAX_EXTENSION]; /*!< Default context (for transfer really) */
+ char cid_num[AST_MAX_EXTENSION];
+ char cid_name[AST_MAX_EXTENSION];
int expire; /*!< Schedule entry for expiry */
int expiry; /*!< How soon to expire */
@@ -8324,6 +8324,9 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in
peer->pokefreqnotok = DEFAULT_FREQ_NOTOK;
peer->context[0] = '\0';
peer->peercontext[0] = '\0';
+ ast_clear_flag(peer, IAX_HASCALLERID);
+ peer->cid_name[0] = '\0';
+ peer->cid_num[0] = '\0';
while(v) {
if (!strcasecmp(v->name, "secret")) {
ast_copy_string(peer->secret, v->value, sizeof(peer->secret));
@@ -8409,9 +8412,11 @@ static struct iax2_peer *build_peer(const char *name, struct ast_variable *v, in
} else if (!strcasecmp(v->name, "disallow")) {
ast_parse_allow_disallow(&peer->prefs, &peer->capability, v->value, 0);
} else if (!strcasecmp(v->name, "callerid")) {
- ast_callerid_split(v->value, peer->cid_name, sizeof(peer->cid_name),
+ if (!ast_strlen_zero(v->value)) {
+ ast_callerid_split(v->value, peer->cid_name, sizeof(peer->cid_name),
peer->cid_num, sizeof(peer->cid_num));
- ast_set_flag(peer, IAX_HASCALLERID);
+ ast_set_flag(peer, IAX_HASCALLERID);
+ }
} else if (!strcasecmp(v->name, "sendani")) {
ast_set2_flag(peer, ast_true(v->value), IAX_SENDANI);
} else if (!strcasecmp(v->name, "inkeys")) {
@@ -8510,6 +8515,9 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in
ast_copy_string(user->name, name, sizeof(user->name));
ast_copy_string(user->language, language, sizeof(user->language));
ast_copy_flags(user, &globalflags, IAX_USEJITTERBUF | IAX_FORCEJITTERBUF | IAX_CODEC_USER_FIRST | IAX_CODEC_NOPREFS | IAX_CODEC_NOCAP);
+ ast_clear_flag(user, IAX_HASCALLERID);
+ user->cid_num[0] = '\0';
+ user->cid_name[0] = '\0';
while(v) {
if (!strcasecmp(v->name, "context")) {
con = build_context(v->value);
@@ -8571,8 +8579,10 @@ static struct iax2_user *build_user(const char *name, struct ast_variable *v, in
} else
ast_copy_string(user->secret, v->value, sizeof(user->secret));
} else if (!strcasecmp(v->name, "callerid")) {
- ast_callerid_split(v->value, user->cid_name, sizeof(user->cid_name), user->cid_num, sizeof(user->cid_num));
- ast_set_flag(user, IAX_HASCALLERID);
+ if (!ast_strlen_zero(v->value)) {
+ ast_callerid_split(v->value, user->cid_name, sizeof(user->cid_name), user->cid_num, sizeof(user->cid_num));
+ ast_set_flag(user, IAX_HASCALLERID);
+ }
} else if (!strcasecmp(v->name, "accountcode")) {
ast_copy_string(user->accountcode, v->value, sizeof(user->accountcode));
} else if (!strcasecmp(v->name, "language")) {