You can't cancel a call once it's been answered. The UAC A should be sending a BYE request instead of a CANCEL request.
B <-------- STATUS 200 OK --------------- C
A <-------- STATUS 200 OK ------------- B
A ---------- BYE ------------------> B
A <-------- 200 OK ----------- B
My guess is because OpenSIPS is receiving an invalid CANCEL request it does not bother forwarding it onto C the UAS which is fair enough.
Update:
From the SIP RFC:
The impact of a non-2xx final response to INVITE on dialogs and sessions makes the use of CANCEL attractive. The CANCEL attempts to force a non-2xx response to the INVITE (in particular, a 487). Therefore, if a UAC wishes to give up on its call attempt entirely, it can send a CANCEL. If the INVITE results in 2xx final response(s) to the INVITE, this means that a UAS accepted the invitation while the CANCEL was in progress. The UAC MAY continue with the sessions established by any 2xx responses, or MAY terminate them with BYE.