# PRE: foreach
#

#
#  We DON'T want to see this one.
#
update request {
       Filter-Id += "broken"
}

foreach Filter-Id {
	#
	#  If we see this one, "break" out of the
	#  foreach loop.
	#
	if ("%{Foreach-Variable-0}" == "broken") {
		break
	}

	update reply {
	       Called-Station-Id += "%{Foreach-Variable-0}"
	}
}


#
# Adding attribute during request and immediately breaking
#
update {
	request:Filter-Id += "1"
	request:Filter-Id += "2"
}

foreach &request:Reply-Message {
	if("%{Foreach-Variable-0}" == "1") {
		update {
			request:Filter-Id += "3"
		}
		break

		update reply {
			Filter-Id := "fail-break-1"
		}
	}
}

update {
	request:Filter-Id !* ANY
}

#
# Adding attribute during request and continuing
#
update {
	request:Filter-Id += "1"
	request:Filter-Id += "2"
}

foreach &request:Reply-Message {
	if("%{Foreach-Variable-0}" == "1") {
		update {
			request:Filter-Id += "3"
		}
	}

	if ("%{Foreach-Variable-0}" == "3") {
		break

		update reply {
			Filter-Id := "fail-break-2"
		}
	}
}
