<!-- 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 #2361
#### Description When a destination is selected using one of the hash algorithms (over Call-ID, From, etc.) and destination is not available, then the next is selected. This causes the following problem : All messages to the unavailable destination will be sent to the same unique destination. This will cause that one destination will receive double load and the rest will continue with the same.
Solution : To better distribute messages, while also guaranteeing the same distribution of the hash, a re-hash of the hash is made.
As the rehash could select the same or other failed destination, it can rehash several times. The number of rehashes made is controlled by :
modparam("dispatcher", "ds_rehash_max", -1)
Which can take the following values :
-1 : The total count of destinations is used 0 : Disabled. Reverts to original implementation. Positive number. Maximum number of rehashes.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/2362
-- Commit Summary --
* dispatcher : better distribution when using hash and destination is not available.
-- File Changes --
M src/modules/dispatcher/dispatch.c (192) M src/modules/dispatcher/dispatcher.c (103)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/2362.patch https://github.com/kamailio/kamailio/pull/2362.diff
@Kalki70 pushed 6 commits.
916c56df9f8c633ba4c4d4a173e35eea8c23a343 siputils: use rewrite_uri() to update decoded r-uri 912356869b7edcf569ebc3367650e238acf01eec siputils: new function uri_param_rm(pname) 1a96e1a17a65233a9cff946a1a0ef8237f63cf0c siputils: docs for uri_param_rm() function b31c885e5cb5331963f7d02d8a9d4cde9c6b57ef modules: readme files regenerated - siputils ... [skip ci] b0068e006bbd34e66fc389995420e6cdb7a905b7 dispatcher : better distribution when using hash and destination is not available. 225f613ac685ee929fc1aa907715182d29579e2f Merge branch 'feature/rehash_of_hash' of https://github.com/Kalki70/kamailio into feature/rehash_of_hash
I dont' knwo how.... my pull request has many changes more than those that I did. Maybe my fork became out of sync when I created the pull request. Cancelling pull request.
Closed #2362.