Contacts are used to advertised wherebouts for subsequent in-dialog requests coming back to your UAC. For that reason, I don't entirely understand why the UAC includes Contact in CANCEL at all -- all in all CANCEL is used to discontinued estabslishment of a dialog. Anyhow, it should not matter the Contact content is invalid since there is no use for the header field in this case at all.
Maybe I've misinterpreted my fault then, the problem I've got exhibits itself when the call is forwarded to an AS5300, the INVITE goes through fine and the call is placed, but the CANCEL (UA->SER->AS5300) is responded to with '481 call leg / transaction does not exist' and the call is not canceled.
I had made the assumption that it was the contact header that was at fault here as that was the obvious difference.
Linus