Hi All, I have just a small question about the thread safety of the following code: switch_console_callback_match_t *callList = switch_core_session_findall(); for( node = callList->head; node; node = node->next ) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "(%s) Checking session '%s'\n", __FUNCTION__, node->val); } I just want to check some specific channel variables on all the active calls on a Freeswitch server. However it seems to me that while traversing the list, it is possible that "node" could be deleted by freeswitch while my code is still using it. Is there some sort of protection I should be doing in order to safely traverse the list and investigate each session? I thought I could lock each session as I interrogate the session however this doesn't protect against the situation where the "next" node is deleted as my code switches to that node. In C++, if you traverse a list with an iterator, changes to the list invalidate the iterator. So one must obtain a new iterator each time the list is changed. But I don't see how to do this with the list provided by switch_core_session_findall(). Any tips? Cheers, Ronnie Beck