Module: kamailio
Branch: master
Commit: b882db36bbb7f7f13366bcc8f1db9f50910d2c0c
URL: https://github.com/kamailio/kamailio/commit/b882db36bbb7f7f13366bcc8f1db9f5…
Author: Nicolas C <nchaigne(a)capgemini.fr>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2023-10-24T20:36:39+02:00
http_client: Add parameter timeout_mode (timeout in seconds or milliseconds)
A new parameter timeout_mode is added.
This parameter defines if timeouts are enabled, and in which unit timeout values are expressed.
- 0 - Timeouts are disabled.
- 1 - Timeout values are in seconds (default).
- 2 - Timeout values are in milliseconds.
Implementation detail:
default global timeout = 0 (unconfigured).
Parse connections as usual. If they have a timeout configured, use it.
In mod_init:
if global timeout == 0 (unconfigured), and timeout_mode is 1 or 2:
if timeout_mode == 1 -> global timeout = 4 (seconds)
if timeout_mode == 2 -> global timeout = 4000 (milliseconds)
for each connection "conn" (fixup):
if timeout_mode is not 1 or 2 -> conn.timeout = 0 (to reflect the fact that no timeout will be handled)
else if conn.timeout is not configured -> conn.timeout = global timeout (in seconds or milliseconds, depending on timeout_mode).
When doing Curl requests (curL_request_url):
if timeout_mode == 1: set CURLOPT_TIMEOUT
if timeout_mode == 2: set CURLOPT_TIMEOUT_MS
---
Modified: src/modules/http_client/curlcon.c
Modified: src/modules/http_client/curlcon.h
Modified: src/modules/http_client/doc/http_client_admin.xml
Modified: src/modules/http_client/functions.c
Modified: src/modules/http_client/http_client.c
Modified: src/modules/http_client/http_client.h
---
Diff: https://github.com/kamailio/kamailio/commit/b882db36bbb7f7f13366bcc8f1db9f5…
Patch: https://github.com/kamailio/kamailio/commit/b882db36bbb7f7f13366bcc8f1db9f5…
#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
A new parameter timeout_mode is added.
This parameter defines if timeouts are enabled, and in which unit timeout values are expressed.
- 0 - Timeouts are disabled.
- 1 - Timeout values are in seconds (default).
- 2 - Timeout values are in milliseconds.
For reference, see discussion in: https://github.com/kamailio/kamailio/pull/3611
Implementation detail:
```
default global timeout = 0 (unconfigured).
Parse connections as usual. If they have a timeout configured, use it.
In mod_init:
if global timeout == 0 (unconfigured), and timeout_mode is 1 or 2:
if timeout_mode == 1 -> global timeout = 4 (seconds)
if timeout_mode == 2 -> global timeout = 4000 (milliseconds)
for each connection "conn" (fixup):
if timeout_mode is not 1 or 2 -> conn.timeout = 0 (to reflect the fact that no timeout will be handled)
else if conn.timeout is not configured -> conn.timeout = global timeout (in seconds or milliseconds, depending on timeout_mode).
When doing Curl requests (curL_request_url):
if timeout_mode == 1: set CURLOPT_TIMEOUT
if timeout_mode == 2: set CURLOPT_TIMEOUT_MS
```
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3615
-- Commit Summary --
* http_client: Add parameter timeout_mode (timeout in seconds or milliseconds)
-- File Changes --
M src/modules/http_client/curlcon.c (27)
M src/modules/http_client/curlcon.h (14)
M src/modules/http_client/doc/http_client_admin.xml (35)
M src/modules/http_client/functions.c (21)
M src/modules/http_client/http_client.c (32)
M src/modules/http_client/http_client.h (11)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3615.patchhttps://github.com/kamailio/kamailio/pull/3615.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3615
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3615(a)github.com>
- Add new function to clear OpenSSL errors prior to any SSL_* call
- Apply function where appropriate
<!-- Kamailio Pull Request Template -->
<!--
IMPORTANT:
- for detailed contributing guidelines, read:
https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md
- pull requests must be done to master branch, unless they are backports
of fixes from master branch to a stable branch
- backports to stable branches must be done with 'git cherry-pick -x ...'
- code is contributed under BSD for core and main components (tm, sl, auth, tls)
- code is contributed GPLv2 or a compatible license for the other components
- GPL code is contributed with OpenSSL licensing exception
-->
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [ ] Tested changes locally
- [x] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
<!-- Describe your changes in detail -->
This PR proposes similar fixes like https://github.com/kamailio/kamailio/pull/3607.
OpenSSL docs suggest that the error stack must be empty for [SSL_get_error() to work reliably](https://www.openssl.org/docs/man3.0/man3/SSL_get_error.html).
_Note: This has not been tested like previous PR and any feedback of course is appreciated._
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3612
-- Commit Summary --
* cdp: Add and apply cdp_openssl_clear_errors function
-- File Changes --
M src/modules/cdp/cdp_tls.c (2)
M src/modules/cdp/receiver.c (3)
A src/modules/cdp/utils.c (21)
M src/modules/cdp/utils.h (2)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3612.patchhttps://github.com/kamailio/kamailio/pull/3612.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3612
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3612(a)github.com>
#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
The new parameter connect_timeout_ms (global) / timeout_ms (in httpcon) allows to specify a timeout in milliseconds on curl requests.
If this parameter is defined (non zero), then the timeout in seconds is ignored.
If either timeout or timeout_ms is defined at connection level, then they take precedence over the global parameters.
These principles also apply to the file configuration.
The timeout in ms is used internally to set CURLOPT_TIMEOUT_MS.
The value is shown in ms when using RPC "httpclient.listcon".
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3611
-- Commit Summary --
* http_client: Add parameter connect_timeout_ms / timeout_ms (2)
-- File Changes --
M src/modules/http_client/curlcon.c (103)
M src/modules/http_client/doc/http_client_admin.xml (32)
M src/modules/http_client/functions.c (24)
M src/modules/http_client/http_client.c (12)
M src/modules/http_client/http_client.h (13)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3611.patchhttps://github.com/kamailio/kamailio/pull/3611.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3611
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3611(a)github.com>
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
Add function to get dialog by internal hash entry and id. This is needed by my other ongoing changes to the ims_charging module for restoring records from database.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3613
-- Commit Summary --
* ims_dialog: Add function to get dialog by hash entry and id
-- File Changes --
M src/modules/ims_dialog/dlg_handlers.c (19)
M src/modules/ims_dialog/dlg_handlers.h (8)
M src/modules/ims_dialog/dlg_load.h (5)
M src/modules/ims_dialog/ims_dialog.c (1)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3613.patchhttps://github.com/kamailio/kamailio/pull/3613.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3613
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3613(a)github.com>
#### Pre-Submission Checklist
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
- [x] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
The new parameter connect_timeout_ms (global) / timeout_ms (in httpcon) allows to specify a timeout in milliseconds on curl requests.
If this parameter is defined (non zero), then the timeout in seconds is ignored.
See https://curl.se/libcurl/c/CURLOPT_TIMEOUT_MS.html
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3609
-- Commit Summary --
* http_client: Add parameter connect_timeout_ms / timeout_ms
-- File Changes --
M src/modules/http_client/curlcon.c (55)
M src/modules/http_client/doc/http_client_admin.xml (29)
M src/modules/http_client/functions.c (22)
M src/modules/http_client/http_client.c (12)
M src/modules/http_client/http_client.h (12)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3609.patchhttps://github.com/kamailio/kamailio/pull/3609.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3609
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3609(a)github.com>
<!-- Kamailio Pull Request Template -->
<!--
IMPORTANT:
- for detailed contributing guidelines, read:
https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md
- pull requests must be done to master branch, unless they are backports
of fixes from master branch to a stable branch
- backports to stable branches must be done with 'git cherry-pick -x ...'
- code is contributed under BSD for core and main components (tm, sl, auth, tls)
- code is contributed GPLv2 or a compatible license for the other components
- GPL code is contributed with OpenSSL licensing exception
-->
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
<!-- Describe your changes in detail -->
Just a small change in app_ruby_rpc_reload_doc constant which mistakingly says javascript instead of ruby file.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3614
-- Commit Summary --
* app_ruby: Fix rpc documentation typo
-- File Changes --
M src/modules/app_ruby/app_ruby_mod.c (2)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3614.patchhttps://github.com/kamailio/kamailio/pull/3614.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3614
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3614(a)github.com>
### Description
I've been looking at the ims_dialog module and notice that the documentation states that db storage is not yet supported.
According to the source code that only partial true. Not sure if it's residues from the other dialog module, or some unfinished work.
After some initial testing and small adjustments, the main issue seems to that for my use the "Dialog-iD"/did is not filled. I can not see this being set for calls that are not "concurrently confirmed".
The field in the database for this id is NON NULL, so the insert fails. It's also used as WHERE-criteria when restarting and fetching the dialog_out entries, belonging to each dialog_in, so it needs to be set for this to work.
This is not really a feature request. It's more about a confirmation that my assumptions are correct, before trying to do the proposed changes.
### Expected behavior
I do assume that this "did"-field should be or be linked to the same did added as Record-Route parameter, identifying each dialog.
#### Actual observed behavior
kamcmd dlg2.list displays NULL for Dialog-ID.
```
kamcmd dlg2.list
{
Size: 4096
Dialogs: {
Dialog: {
Entry: 1096
Id: 8069
RURI: sip:+4791500025@10.111.64.16;user=phone
From: sip:+4746180445@10.111.64.16;user=phone
Call-ID: 34c5d9f15ff42a0564f809cb35e19c75@10.111.64.16:5060
Caller Contact: sip:+4746180445@10.111.64.16:5060
Caller Route Set: <null string>
Dialog-ID: <null string>
From Tag: as4df55540
State: Confirmed
Ref: 2
dlg_outs: {
dlg_out: {
Entry: 2680
Id: 0
}
}
}
}
}
```
### Possible Solutions
Always set this did field when a new dialog is created.
I've also been studying the DB schema. All operations for the dialog_in table are done using hash_entry and hash_id as keys. Why are they not used as primary key instead, which would be much more efficient?
Also, having an integer with auto_increment as primary key would make this stop when the integer hits max value, if it's not reset regularly. I can not see this field used anywhere in the code either, so it could probably just be removed.
The same applies to dialog_out, but this one should have an index on the did field used for looking up the corresponding entries too.
Altering this could have negative impact if there are old entries from a previous running process laying around. A duplicate key on an insert should be handled, and updated instead. The current behaviour would mean that Kamailio instead updates two records with the same values.
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
master
```
* **Operating System**:
<!--
Details about the operating system, the type: Linux (e.g.,: Debian 8.4, Ubuntu 16.04, CentOS 7.1, ...), MacOS, xBSD, Solaris, ...;
Kernel details (output of `uname -a`)
-->
```
CentOS 7.9
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3602
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3602(a)github.com>
<!-- Kamailio Pull Request Template -->
<!--
IMPORTANT:
- for detailed contributing guidelines, read:
https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md
- pull requests must be done to master branch, unless they are backports
of fixes from master branch to a stable branch
- backports to stable branches must be done with 'git cherry-pick -x ...'
- code is contributed under BSD for core and main components (tm, sl, auth, tls)
- code is contributed GPLv2 or a compatible license for the other components
- GPL code is contributed with OpenSSL licensing exception
-->
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [ ] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [x] Related to issue #3602
#### Description
Added missing code for database backend to work. Tested basic scenarios locally for all db modes.
DB schema could be tweaked according to my thoughts in issue #3602, but that also applies to several other modules which are done in the same matter. Because of that, I didn't consider such a change now.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3603
-- Commit Summary --
* ims_dialog: Add support for database backend
-- File Changes --
M src/modules/ims_dialog/dlg_db_handler.c (9)
M src/modules/ims_dialog/dlg_handlers.c (52)
M src/modules/ims_dialog/dlg_hash.c (5)
M src/modules/ims_dialog/doc/ims_dialog_admin.xml (93)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3603.patchhttps://github.com/kamailio/kamailio/pull/3603.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3603
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3603(a)github.com>