<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I’m working on a custom Kamailio module where I need to send new-dialog and in-dialog requests on timer (hence I’m being forced to generate new messages from C code).<div class=""><br class=""></div><div class="">So far I’ve been using modules/tm/tm_load.h defined interface to generate messages and handle callbacks. New dialog messages are sent and processed normally. To do that I’m:</div><div class=""><br class=""></div><div class="">1. Calling set_uac_request() to define request parameters</div><div class="">2. Calling tmb.t_request_outside() to send it outside any existing dialog</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">I was able to send in-dialog requests (or so I thought) in a similar fashion, but I soon realised that responses to those requests were dropped because they couldn’t be matched against any known existing transaction. I’m attaching log messages that I believe support this theory and I’ve also observed UDP retransmissions.</div><div class=""><br class=""></div><div class=""><div class="">tm [t_lookup.c:897]: t_reply_matching(): t_reply_matching: hash 50576 label 0 branch 0</div><div class="">tm [t_lookup.c:990]: t_reply_matching(): no matching transaction exists</div><div class="">tm [t_lookup.c:993]: t_reply_matching(): failure to match a transaction</div><div class="">tm [t_lookup.c:1088]: t_check_msg(): msg (0x5abcb50) id=1 global id=1 T end=(nil)</div><div class="">tm [t_reply.c:2195]: reply_received(): transaction not found - (branch -1)</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The way I’m currently generating in-dialog requests is very similar to what tmb.t_request_outside() does, the main difference being that I do the dialog setup manually, based on the call-ID, cseq and from/to tags (I’m tracking transaction identifiers separately) and then pass resulting uac_req_t to tmb.t_request_within() - <a href="https://gist.github.com/IvanRibakov/3302cb286b1f4b786d109b406f2435a2" class="">https://gist.github.com/IvanRibakov/3302cb286b1f4b786d109b406f2435a2</a></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Now, the question part - does anyone know what I’m doing wrong/missing? As I mentioned, when looking at the generated message bodies, they look ok to me (left - initial request that started the dialog, right - first in-dialog request), so I’m guessing I’m missing some Kamailio internal steps needed to register new transaction.</div><div class=""><img apple-inline="yes" id="CB9D8708-655F-492D-AAC8-C142AF07542D" width="788" height="162" src="cid:3802445C-68C9-4423-9A78-305BDB9516EC@home" class=""></div><div class=""><br class=""></div><div class="">SIP flow (up to the point when first UDP retransmission happens)</div><div class=""><img apple-inline="yes" id="D9AD0EB7-5A22-42C8-8C61-7067DB10D534" width="362" height="276" src="cid:1D497085-3CBB-4FD4-AEBD-C2AE05810728@home" class=""></div><div class=""><br class=""></div><div class="">I apologise in advance for the bulky question and will be extremely thankful for any guidance.</div><div class=""><br class=""></div><div class="">Regards,</div><div class="">Ivan</div></body></html>