/* For a fragment hash table entry, free the associated fragments. The entry value (fd_chain) is freed herein and the entry is freed when the key freeing routine is called (as a consequence of returning TRUE from this function).  */
static gboolean free_all_fragments(gpointer key_arg _U_, gpointer value, gpointer user_data _U_)
/* For a fragment hash table entry, free the associated fragments. The entry value (fd_chain) is freed herein and the entry is freed when the key freeing routine is called (as a consequence of returning TRUE from this function).  */
static gboolean free_all_fragments(gpointer key_arg _U_, gpointer value, gpointer user_data _U_)
{
	fragment_head *fd_head;
	fragment_item *tmp_fd;
	for (fd_head = (fragment_head *)value; fd_head != NULL; fd_head = tmp_fd) {
		tmp_fd=fd_head->next;
		if(fd_head->tvb_data && !(fd_head->flags&FD_SUBSET_TVB))
			tvb_free(fd_head->tvb_data);
		g_slice_free(fragment_item, fd_head);
	}
	return TRUE;
}