Hi there, Does anyone have a clue? I ran out of things to try and I'm stuck.
I tried the http client (non-async) with no luck, it does almost the same thing (tmx module spitting a critical error), which is super weird. If I remove the HTTP request everything works fine. There should be a way to make the async http client work during a REGISTER processing, has anyone successfully done that? Regards Le jeu. 27 janv. 2022 à 14:50, Cyril Ramière <cyril.rami...@gmail.com> a écrit : > Hi there, > > I have a weird issue with kamailio (latest docker > image kamailio-ci:5.5.2-alpine) and http_async_client. > > Before posting a lot of logs, let me describe what I want to achieve. > > I have a Kamailio and a SIP Phone. > > The SIP phone sends a REGISTER to kamailio, then in my routing block, I > check if I have an Authorization header. > > Since I don't have an Authorization (first message), I > use "www_challenge()". > This replies to the SIP phone, and then the SIP phone sends a new REGISTER > with the correct Authorization header. > > So far so good. > > Now, when I get the REGISTER with Authorization header, I want to ask an > HTTP endpoint if this user is allowed to connect and check the password > using http_async_query(). > > The problem is that when the transaction resumes, the tmx module is > unhappy and throws this error : > > 30(36) CRITICAL: tmx [t_var.c:546]: pv_get_tm_reply_code(): no picked > branch (-1) for a final response in MODE_ONFAILURE > > And a 500 error is sent back to the sip phone. > The AUTH_REPLY route is still called and I can use the $http* values. > > It seems that my AUTH_REPLY route is called but considered as a > "failure_route" > > 19(27) exec: *** cfgtrace:dbg_cfg_trace(): failure_route=[AUTH_REPLY] > c=[/etc/kamailio/kamailio.cfg] l=665 a=16 n=if > > 17(23) NOTICE: <script>: [AUTH_REPLY] FAILURE ROUTE > > If I remove the http_async_client and try with route(AUTH_REPLY) then it > is considered as request_route (but this is not a solution since I need to > do this http request) > > Do you see something that I am doing wrong or missing in my logic? > Is pausing/resuming to use the async http client is allowed if I'm > handling a REGISTER transaction? > > Here's a simplified version of my routing block (not far from reality): > > ##### SNIP > > request_route{ > > route(AUTH); > > > route[AUTH]{ > > if (is_method("REGISTER"){ > > if(no_auth_header){ > > www_challenge("$td","1"); > > exit; > > } > > else{ > > t_newtran(); > > http_async_query("http://xxx.xxx.xxx.xxx:9000/auth?foo=bar", > "AUTH_REPLY"); > > } > > } > > } > > > route[AUTH_REPLY]{ > > xlog("L_INFO", "route[HTTP_REPLY]: status $http_rs\n"); > > if(t_is_failure_route()) { > > xlog("L_NOTICE", "[AUTH_REPLY] FAILURE ROUTE \n\n"); > } > > } > > > } > > ##### END SNIP > > > Best regards! >
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions * sr-users@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe: * https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users