Hi Federico,

Ok, I wasn't aware of this detail about suspend/resume implementation, thanks for pointing that out.

I made a test with debug level 3 as requested, please find the raw logs here : https://pastebin.com/y6kZiweh 

I don't think there are other SIP messages interfering with the flow, I have TCP checks (load balancer) running but nothing else is doing SIP requests.
As for the client, it sends a REGISTER request, then we reply 401 , then the client sends  a new REGISTER with challenge, and we send 500 server error occurred (not me but likely the TMX module).

I'm doing my best trying to understand what went wrong but I'm hitting a wall, thanks for your help :) 

Cyril

Le lun. 31 janv. 2022 à 18:57, Federico Cabiddu <federico.cabiddu@gmail.com> a écrit :
Hi Cyril,
it is normal that the callback route is considered a failure route, this is the internal behavior of transaction suspension/resume as implemented by the tm module.
Are you sure that there is no other SIP message interfering with your flow?
Could you set kamailio loglevel to 3 to see what happens?

Cheers,

Federico

On Mon, Jan 31, 2022 at 10:41 AM Cyril Ramière <cyril.ramiere@gmail.com> wrote:
Hi Frederico, 

(sorry for the double posting today, despite telling gmail to not put messages from this mailing il the spam folder, it has done it again :/ ) 

Thanks for your reply, I tried your suggestion and sadly it has not worked, I still have the same error.
Upon searching and digging through the logs I still can't understand why after the http client is doing it's request, the debugger shows that we are not in "request" route but in "failure" route instead, I don't know if this is a consequence or a symptom of the issue.

I triple checked my mock api, it returns a http 200 and sees the request made by the http client.

Cheers

Le jeu. 27 janv. 2022 à 16:17, Federico Cabiddu <federico.cabiddu@gmail.com> a écrit :
Hi,
I'm running a scenario very similar to yours with kamailio 5.5.3 and I have no issue. 
The only difference with your scenario is that I don't do the challenge with the client, I always reply 403 and release the transaction after.
I didn't have the time to replicate your exact scenario but it could be worth trying to add a t_release() after the www_challenge().

Cheers,

Federico 

On Thu, Jan 27, 2022 at 8:04 AM Cyril Ramière <cyril.ramiere@gmail.com> wrote:
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.

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");
}

}
##### 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
__________________________________________________________
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
__________________________________________________________
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
__________________________________________________________
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