[sr-dev] questions regarding tm callbacks in sr

Timo Reimann timo.reimann at 1und1.de
Wed Jul 28 13:37:10 CEST 2010


Hello,

after never really having to use sip-router's tm callbacks but
Kamailio's only, I did some tests today and found a few issues I'd like
to discuss followingly:

1) In Kamailio, certain callbacks (namely TMCB_RESPONSE_PRE_OUT,
TMCB_RESPONSE_OUT, and TMCB_REQUEST_BUILT) provided the entire processed
message (i.e., after headers were modified) in tmcb_params->extra1 as
*str. AFAICS, sr's equivalent to that parameter is send_buf in the
tmcb_params structure. However, the only sr callbacks that do provide
the processed messages are TMCB_REQUEST_SENT and TMCB_RESPONSE_SENT
which, had no perfect correspondency in Kamailio (*_OUT callbacks would
not be called for retransmissions).

Technically, this makes complete sense because the two *_SENT callbacks
and the send_buf variable are available only when WITH_ONSEND is
defined. Also, I noticed that these callbacks are handled through
run_onsend_callbacks[2]() instead of run_trans_callbacks(). Only the
former fill send_buf and hence pass processed messages as part of the
callback.

Why do these TMCB_ONSEND callbacks need such special care? Would it be
feasible to pass processed messages for other callbacks somehow too?
Ideally, I'd like to see that happen for every callback where a
processed message is supposed to be available, i.e., all *_OUT and
*_READY callbacks.


2) Is there a special reason why TMCB_REQUEST_OUT is missing? Kamailio
used to have it although it's name TMCB_REQUEST_BUILT was a little
misleading.


3) Similarly, how hard would it be to implement TMCB_REQUEST_READY?
Kamailio lacked that but I'd truly love to see it exist in sr.


Sorry for the abundance of questions and lack of solutions -- when I had
just started to get a rough idea of how Kamailio's tm module works
internally, here comes sr and forces me to start over again. :)

TIA and


cheers,

--Timo



More information about the sr-dev mailing list