Fix some code in chan_sip that was intended to unlink multiple objects from a
container. The OBJ_MULTIPLE flag must be provided here. Otherwise, this would only remove a single object. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@155241 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
1825dfee10
commit
38ff416edd
|
@ -13670,7 +13670,8 @@ static char *sip_prune_realtime(struct ast_cli_entry *e, int cmd, struct ast_cli
|
||||||
unref_peer(pi, "toss iterator peer ptr");
|
unref_peer(pi, "toss iterator peer ptr");
|
||||||
}
|
}
|
||||||
if (pruned) {
|
if (pruned) {
|
||||||
ao2_t_callback(peers, OBJ_NODATA|OBJ_UNLINK, peer_is_marked, 0, "initiating callback to remove marked peers");
|
ao2_t_callback(peers, OBJ_NODATA | OBJ_UNLINK | OBJ_MULTIPLE, peer_is_marked, 0,
|
||||||
|
"initiating callback to remove marked peers");
|
||||||
ast_cli(a->fd, "%d peers pruned.\n", pruned);
|
ast_cli(a->fd, "%d peers pruned.\n", pruned);
|
||||||
} else
|
} else
|
||||||
ast_cli(a->fd, "No peers found to prune.\n");
|
ast_cli(a->fd, "No peers found to prune.\n");
|
||||||
|
@ -13679,7 +13680,7 @@ static char *sip_prune_realtime(struct ast_cli_entry *e, int cmd, struct ast_cli
|
||||||
if (prunepeer) {
|
if (prunepeer) {
|
||||||
struct sip_peer tmp;
|
struct sip_peer tmp;
|
||||||
ast_copy_string(tmp.name, name, sizeof(tmp.name));
|
ast_copy_string(tmp.name, name, sizeof(tmp.name));
|
||||||
if ((peer = ao2_t_find(peers, &tmp, OBJ_POINTER|OBJ_UNLINK, "finding to unlink from peers"))) {
|
if ((peer = ao2_t_find(peers, &tmp, OBJ_POINTER | OBJ_UNLINK, "finding to unlink from peers"))) {
|
||||||
if (peer->addr.sin_addr.s_addr) {
|
if (peer->addr.sin_addr.s_addr) {
|
||||||
ao2_t_unlink(peers_by_ip, peer, "unlinking peer from peers_by_ip also");
|
ao2_t_unlink(peers_by_ip, peer, "unlinking peer from peers_by_ip also");
|
||||||
}
|
}
|
||||||
|
@ -20613,7 +20614,8 @@ static void *do_monitor(void *data)
|
||||||
of time since the last time we did it (when MWI is being sent, we can
|
of time since the last time we did it (when MWI is being sent, we can
|
||||||
get back to this point every millisecond or less)
|
get back to this point every millisecond or less)
|
||||||
*/
|
*/
|
||||||
ao2_t_callback(dialogs, OBJ_UNLINK|OBJ_NODATA, dialog_needdestroy, &t, "callback to remove dialogs w/needdestroy");
|
ao2_t_callback(dialogs, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE, dialog_needdestroy, &t,
|
||||||
|
"callback to remove dialogs w/needdestroy");
|
||||||
|
|
||||||
/* the old methodology would be to restart the search for dialogs to delete with every
|
/* the old methodology would be to restart the search for dialogs to delete with every
|
||||||
dialog that was found and destroyed, probably because the list contents would change,
|
dialog that was found and destroyed, probably because the list contents would change,
|
||||||
|
@ -21817,7 +21819,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
|
||||||
during reload
|
during reload
|
||||||
*/
|
*/
|
||||||
ast_copy_string(tmp_peer.name, name, sizeof(tmp_peer.name));
|
ast_copy_string(tmp_peer.name, name, sizeof(tmp_peer.name));
|
||||||
peer = ao2_t_find(peers, &tmp_peer, OBJ_POINTER|OBJ_UNLINK, "find and unlink peer from peers table");
|
peer = ao2_t_find(peers, &tmp_peer, OBJ_POINTER | OBJ_UNLINK, "find and unlink peer from peers table");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (peer) {
|
if (peer) {
|
||||||
|
@ -23650,7 +23652,8 @@ static int sip_do_reload(enum channelreloadreason reason)
|
||||||
|
|
||||||
start_poke = time(0);
|
start_poke = time(0);
|
||||||
/* Prune peers who still are supposed to be deleted */
|
/* Prune peers who still are supposed to be deleted */
|
||||||
ao2_t_callback(peers, OBJ_NODATA|OBJ_UNLINK, peer_is_marked, 0, "callback to remove marked peers");
|
ao2_t_callback(peers, OBJ_NODATA | OBJ_UNLINK | OBJ_MULTIPLE, peer_is_marked, 0,
|
||||||
|
"callback to remove marked peers");
|
||||||
|
|
||||||
ast_debug(4, "--------------- Done destroying pruned peers\n");
|
ast_debug(4, "--------------- Done destroying pruned peers\n");
|
||||||
|
|
||||||
|
|
|
@ -4108,7 +4108,7 @@ static int xmldoc_parse_argument(struct ast_xml_node *fixnode, int insideparamet
|
||||||
{
|
{
|
||||||
struct ast_xml_node *node = fixnode;
|
struct ast_xml_node *node = fixnode;
|
||||||
const char *argname;
|
const char *argname;
|
||||||
int count=0, ret = 0;
|
int count = 0, ret = 0;
|
||||||
|
|
||||||
if (!node || !ast_xml_node_get_children(node)) {
|
if (!node || !ast_xml_node_get_children(node)) {
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Reference in New Issue