Discussion to define cmake format options and coding/naming styles. It is better to define most of them now to have coherency in the future. Started from the discussion on #4066.
Comment with what you would like to have, describing when useful why your proposal is a good/better option.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4075
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4075(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
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
##### **Summary**
This update introduces new functionality to the `secfilter` module, enabling the removal of entries from both the Blacklist and Whitelist. It also includes automatic detection and removal of duplicate values from these lists.
##### **Details**
* Users can now remove specific entries from the Blacklist or Whitelist based on type (e.g., IP, domain, user) and a given value.
* Supports removal of single or multiple matching entries in one operation.
##### **Benefits**
- Improves the usability and flexibility of the `secfilter` module by allowing fine-grained control over list management.
- Ensures that the Blacklist and Whitelist are kept clean and free from redundant entries.
- Enhances performance by reducing unnecessary duplication in the lists.
##### Testing
This feature was tested using `kmcmd` commands in various scenarios:
- Removing the **first element** in the list.
- Removing an element from the **middle** of the list.
- Removing the **last element** in the list.
- Removing **all matching elements** in the list.
In all cases, the commands worked correctly, and the lists were updated and cleaned as expected.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/4089
-- Commit Summary --
* secfilter: support remove rule in Whitelist and Blacklist
-- File Changes --
M src/modules/secfilter/secfilter.c (8)
M src/modules/secfilter/secfilter.h (3)
M src/modules/secfilter/secfilter_db.c (106)
M src/modules/secfilter/secfilter_rpc.c (95)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/4089.patchhttps://github.com/kamailio/kamailio/pull/4089.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/4089
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/4089(a)github.com>
### Description
`secf_check_sqli_all();` block requests when a single quote is present in From name :
```
From: "O'Reilly" <sip:100@example.net>;tag=abcd
```
Since single quotes are frequent in names.
It makes it difficult to use this function.
### Possible Solutions
A solution would be to skip single quote check in From name.
I'll write the PR if you are OK with this solution
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3984
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3984(a)github.com>
**Description**
The `secfilter` module in `kamcmd` currently allows duplicate entries when adding values to certain lists (e.g., blacklists, whitelists). This can lead to unexpected behavior and potential inconsistencies. Could you clarify the reason behind accepting duplicate values?
Recently, I submitted a pull request to add delete commands to the `secfilter` module #4089. When a user, for example, executes:
`kamcmd secfilter.del_bl user 1005`
I iterate through the entire list to ensure all occurrences of `1005` are removed, as I realized duplicates might exist. This is inefficient and could be avoided by preventing duplicates in the first place.
**Proposed Solutions**
1. **Prevent Duplicates in Existing `add` Commands:**
* I can modify existing `add` commands to directly prevent the addition of duplicate values. This would simplify future operations and improve performance.
2. **Introduce New `add_unique` Commands:**
* I can maintain the current `add` commands for backward compatibility.
* I can introduce new `add_unique` commands (e.g., `secfilter.add_bl_unique`) that explicitly reject duplicate entries.
**Recommendation**
I recommend implementing the first solution (preventing duplicates in existing `add` commands) as it provides the most straightforward and efficient approach.
**Further Considerations**
* Consider adding a check for duplicates during the `add` operation and returning an appropriate error message if a duplicate is encountered.
* Document the behavior of duplicate values in the `secfilter` module's documentation.
**I would appreciate your feedback and guidance on the best course of action.**
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4091
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4091(a)github.com>
### Description
if multiple sip websocket clients are subscribed to some UA and one of the watchers suddenly disappears (e.g. the web page is reloaded), then no NOTIFY is ever sent after issuing a `pres_refresh_watchers()`.
The following error is logged:
```
WARNING: <core> [core/msg_translator.c:3007]: via_builder(): TCP/TLS connection (id: 0) for WebSocket could not be found
ERROR: tm [t_msgbuilder.c:1423]: assemble_via(): via building failed
ERROR: tm [t_msgbuilder.c:1614]: build_uac_req(): error while assembling Via
ERROR: tm [uac.c:552]: t_uac_prepare(): Error while building message
ERROR: presence [notify.c:1734]: send_notify_request(): in function tm t_request_within()
ERROR: presence [notify.c:1829]: notify(): sending Notify not successful
ERROR: presence [notify.c:1585]: query_db_notify(): Could not send notify for [event]=dialog
ERROR: presence [presence.c:739]: pres_refresh_watchers(): sending Notify requests
```
### Troubleshooting
when the client disconnects, the old watcher is not removed from the active_watchers table, instead it coexists with the new one, but the stale connection causes the error above when sending the notify, and then all of the following watchers (even the valid ones) are skipped too.
Looking at the logs, the valid watchers are not notified because the while loop [here](https://github.com/kamailio/kamailio/blob/b96bc11a54f11ec688429c057bf… is skipped because of the `goto done` line in case of errors, which happens because it fails to build the via header for the message relevant to the stale websocket connection.
By breaking out of the while loop, the remaining subs in the `subs_array` are skipped.
#### Reproduction
Just subscribe to a sip client using a websocket-based phone, then abruptly disconnect it (e.g. by reloading the web page) and then issue a `pres_refresh_watchers()` to make it generate a notify.
#### Debugging Data
#### Log Messages
#### SIP Traffic
### Possible Solutions
I tried to use the "websocket:closed" route to purge stale connections, but to my knowledge there are no APIs to clean invalid watchers.
A possible solution could be to automatically remove the watchers on disconnection and maybe skip the invalid ones without exiting from the refresh loop
### Additional Information
kamailio 5.8.2
* **Operating System**:
Rocky Linux 9
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4118
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4118(a)github.com>
Documentation https://www.kamailio.org/docs/modules/devel/modules/tm.html#tm.p.fr_timer says:
>Timer which hits if no **final reply** for a request or ACK for a negative INVITE reply arrives (in milliseconds).
Looks like it is not correct description - fr_timer value works until 1xx(not **final**) response received and then timer restarted with fr_inv_timer value there:
https://github.com/kamailio/kamailio/blob/master/src/modules/tm/t_reply.c#L…
Looks like old doc from sip router https://sip-router.org/wiki/ref_manual/timers explains it correctly:
> fr_timer
This timer is used for all SIP requests. It hits if no reply for an INVITE request or other request has been received (F in milliseconds). If a provisional reply is received for an INVITE (any 1xx), then the fr_inv_timer will be used instead. And if no replies (at all) for an INVITE are received before `fr_timer` hits, the transaction is terminated with a 408 in failure route.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3939
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3939(a)github.com>
### Description
Currently calling `route()` within the `onsend_route` will cause kamailio to fail to start with an error that `command not allowed in onsend_route`
### Expected behavior
While there is a limited amount of functions that can be allowed within the `onsend_route`, calling `route()` here would be done simply for code organization.
#### Actual observed behavior
Kamailio fails to start;
### Possible Solutions
Allow `route()` to be called from `onsend_route`.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4130
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4130(a)github.com>
### RTPEngine + RTIMER + SEGFAULT + unable to ping
When unable to ping RTPEngine instances kamailio crashes.
### Troubleshooting
Determined issue was related to the ping failures, resolved AWS SG issue, allowing successful pings. Issue subsequently went away.
#### Reproduction
Use rtpengine with RDS backend
Load rtpengine with ~ 20 destinations you do not expect a response from on
Use rtimer to call rtpengine.reload via jsonrpcs:
```
modparam("rtimer", "timer", "name=rtpengine;interval=60;mode=0;")
modparam("rtimer", "exec", "timer=rtpengine;route=RELOAD_RTPENGINE")
route[RELOAD_RTPENGINE] {
xinfo("RTPEngine database reloading");
jsonrpc_exec('{"jsonrpc": "2.0", "method": "rtpengine.reload", "id": 1}');
}
```
#### Debugging Data
Got a core dump -- although I deleted quickly (not thinking) as they were running instances out of disk quickly. bt full did not show much to step through all though clearly pointed to rtpengine.
#### Log Messages
```
send_rtpp_command(): timeout waiting reply for command "ping" from RTPEngine <udp:10.0.X.X>
```
### Possible Solutions
TBD / do not have ping failures under heavy load.
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
```
version: kamailio 5.8.2 (x86_64/linux)
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 10.2.1
```
* **Operating System**:
```
uname -a
Linux 5.10.0-27-cloud-amd64 #1 SMP Debian 5.10.205-2 (2023-12-31) x86_64 GNU/Linux
cat /proc/version
Linux version 5.10.0-27-cloud-amd64 (debian-kernel(a)lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.205-2 (2023-12-31)
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
```
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/4122
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/4122(a)github.com>