Hi,
thank you for reporting. This is not what I would expect, honestly I don't remember having faced this issue when I implemented this.
I went quickly through the code and I don't understand the reason for returning 401, since $http_rs is a wrapper around core function get_status which get the result code of a SIP reply (HTTP's ones are treated the same way).
I will look deeper in the next few days.

Regards,

Federico

On Mon, Jun 16, 2025 at 8:52 AM Joel Serrano via sr-users <sr-users@lists.kamailio.org> wrote:
Hi all,

I'm seeing some unexpected behavior from $http_rs when using http_async_query() to send a POST request to an endpoint that requires Basic (username/password) authentication.

When I use:

```
$http_req(username) = "someuser";
$http_req(password) = "somepass";
```


the request goes through and the server responds with a 201 Created, as expected. The response body ($http_rb) contains the correct result. However, $http_rs still shows 401 Unauthorized.

I believe this happens because curl receives a 401 challenge first, then retries with the provided credentials and gets the correct 201. It seems $http_rs is reflecting the status from the initial challenge rather than the final response. This is on Kamailio v6.0.1.

As a workaround, I tried manually setting the Authorization header like this:

```
$var(credentials) = "someuser:somepass";
$http_req(hdr) = "Authorization: Basic " + $(var(credentials){s.encode.base64});
```


In that case, $http_rs correctly shows 201.

Is it expected for $http_rs to stay at 401 in the first scenario? Or should it reflect the final status code after curl completes the full request cycle?

Thanks,
Joel.
__________________________________________________________
Kamailio - Users Mailing List - Non Commercial Discussions -- sr-users@lists.kamailio.org
To unsubscribe send an email to sr-users-leave@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender!