aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-30 19:26:04 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-30 19:26:04 +0000
commit213a686818ae3b52921ac398852d0ffdff4f5f73 (patch)
tree9cb3c976f72d1999221cfb9a689ea8d7929fa8ad /channels/chan_iax2.c
parent64fb113167810bc0f1d1310f205d23b687ef8f18 (diff)
Change the behavior of ao2_link(). Previously, in inherited a reference.
Now, it automatically increases the reference count to reflect the reference that is now held by the container. This was done to be more consistent with ao2_unlink(), which automatically releases the reference held by the container. It also makes it so it is no longer possible for a pointer to be invalid after ao2_link() returns. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@90348 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 004e1de62..de8493ea3 100644
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -2740,7 +2740,7 @@ static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in
if (peer->expire == -1)
peer_unref(peer);
}
- ao2_link(peers, peer_ref(peer));
+ ao2_link(peers, peer);
if (ast_test_flag(peer, IAX_DYNAMIC))
reg_source_db(peer);
} else {
@@ -2797,7 +2797,7 @@ static struct iax2_user *realtime_user(const char *username)
if (ast_test_flag((&globalflags), IAX_RTCACHEFRIENDS)) {
ast_set_flag(user, IAX_RTCACHEFRIENDS);
- ao2_link(users, user_ref(user));
+ ao2_link(users, user);
} else {
ast_set_flag(user, IAX_TEMPONLY);
}
@@ -9801,14 +9801,14 @@ static int set_config(char *config_file, int reload)
user = build_user(cat, gen, ast_variable_browse(ucfg, cat), 0);
if (user) {
__ao2_link(users, user, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
- user = NULL;
+ user = user_unref(user);
}
peer = build_peer(cat, gen, ast_variable_browse(ucfg, cat), 0);
if (peer) {
if (ast_test_flag(peer, IAX_DYNAMIC))
reg_source_db(peer);
__ao2_link(peers, peer, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
- peer = NULL;
+ peer = peer_unref(peer);
}
}
if (ast_true(registeriax) || (!registeriax && genregisteriax)) {
@@ -9845,7 +9845,7 @@ static int set_config(char *config_file, int reload)
user = build_user(cat, ast_variable_browse(cfg, cat), NULL, 0);
if (user) {
__ao2_link(users, user, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
- user = NULL;
+ user = user_unref(user);
}
}
if (!strcasecmp(utype, "peer") || !strcasecmp(utype, "friend")) {
@@ -9854,7 +9854,7 @@ static int set_config(char *config_file, int reload)
if (ast_test_flag(peer, IAX_DYNAMIC))
reg_source_db(peer);
__ao2_link(peers, peer, (MAX_PEER_BUCKETS == 1) ? 1 : 0);
- peer = NULL;
+ peer = peer_unref(peer);
}
} else if (strcasecmp(utype, "user")) {
ast_log(LOG_WARNING, "Unknown type '%s' for '%s' in %s\n", utype, cat, config_file);