i figured out why loose_route() did not work as expected. it is because
the party that sent the bye, had messed up its request uri and replaced the
host:port of remote target with host:port of the proxy causing
loose_route() to work in strict mode.
teaching: if you see these headers in a request or reply, stay far away
from the sh*t:
User-Agent: DID Logic GW
X-Asterisk-HangupCause: Normal Clearing
X-Asterisk-HangupCauseCode: 16
-- juha