belle_sip_list_t *belle_sip_list_delete_custom(belle_sip_list_t *list, belle_sip_compare_func compare_func, const void *user_data){ belle_sip_list_t *elem=belle_sip_list_find_custom(list,compare_func,user_data); if (elem!=NULL){ list=belle_sip_list_delete_link(list,elem); } return list; }
void belle_sip_body_handler_remove_header_from_ptr(belle_sip_body_handler_t *obj, belle_sip_header_t* header) { belle_sip_list_t* it = belle_sip_list_find(obj->headers, header); if (it) { belle_sip_object_unref(header); obj->headers = belle_sip_list_delete_link(obj->headers, it); } }
static belle_sip_message_t *channel_pop_outgoing(belle_sip_channel_t *obj){ belle_sip_message_t *msg=NULL; if (obj->outgoing_messages){ msg=(belle_sip_message_t*)obj->outgoing_messages->data; obj->outgoing_messages=belle_sip_list_delete_link(obj->outgoing_messages,obj->outgoing_messages); } return msg; }
belle_sip_list_t* _belle_sip_list_remove(belle_sip_list_t* first, void *data, int warn_if_not_found){ belle_sip_list_t* it; it=belle_sip_list_find(first,data); if (it) return belle_sip_list_delete_link(first,it); else if (warn_if_not_found){ belle_sip_warning("belle_sip_list_remove: no element with %p data was in the list", data); } return first; }
void belle_sip_object_pool_remove(belle_sip_object_pool_t *pool, belle_sip_object_t *obj){ unsigned long tid=belle_sip_thread_self_id(); if (obj->pool!=pool){ belle_sip_fatal("Attempting to remove object from an incorrect pool: obj->pool=%p, pool=%p",obj->pool,pool); return; } if (tid!=pool->thread_id){ belle_sip_fatal("It is forbidden (and unsafe()) to ref()/unref() an unowned object outside of the thread that created it."); return; } pool->objects=belle_sip_list_delete_link(pool->objects,obj->pool_iterator); obj->pool_iterator=NULL; obj->pool=NULL; }