Hi all,I've been recently testing 5.3.x/master siptrace module, in particular the new trace mode "t" vs the legacy flag + sip_trace() mode and I've found some issues with the handling of CANCEL. Specifically, I've tested the following scenarios:
1) sip_trace_mode("t") on the initial INVITE only: received ACK for negative replies not captured
2) sip_trace_mode("t") on the initial INVITE and on neg ACK: received ACK captured twice
3) setflag and sip_trace() on the initial INVITE only: received CANCEL and ACK not captured (outgoing yes)
4) setflag and sip_trace() on the initial INVITE and ACK: received CANCEL not captured, received ACK captured twice
5) setflag and sip_trace() for each message (legacy): received CANCEL and 200 captured twice, received ACK captured twice
I'm not really sure if (and how) modify the trace_is_off function or not calling it in specific cases. E.g.: why calling it in trace_tm_neg_ack_in? This callback is set when we explicity want to trace a transaction, so why checking inside if tracing is on? Maybe I'm missing something, but I think that probably the different behaviors of the modes should be better specified/decided.
Best regards,
Federico