set context iuid for CANCEL requests to let isflagset function return the right value in case a dialog flag was previously set on the call
<!-- 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 --> - [ ] Commit message has the format required by CONTRIBUTING guide - [ ] Commits are split per component (core, individual modules, libs, utils, ...) - [ ] Each component has a single commit (if not, squash them into one commit) - [ ] 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 --> Using kamailio 5.4 version, we have seen that dlg_isflagset is not detecting a dialog flag set in the request route for the initial INVITE, when a CANCEL request arrives.
We have applied this change to set the dialog context unique ide for this request. Since it's done on dlg_onreply, dlg_onroute and dlg_ontimeout functions. This way, dlg_get_by_iuid(&dctx->iuid) in the function ki_dlg_isflagset is not NULL and dialog flags are detected.
Is this change correct? Or can it generate any kind of issues?
thanks a lot and regards David You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3096
-- Commit Summary --
* dialog: set context iuid for CANCEL requests to let isflagset function return the right value in case a dialog flag was previously set on the call
-- File Changes --
M src/modules/dialog/dlg_handlers.c (3)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3096.patch https://github.com/kamailio/kamailio/pull/3096.diff
No time to look at side effects of this PR, but without it, you can try to use dlg_get("$ci", "$ft", "") for CANCEL before dlg_isflagset().
thanks a lot for the feedback Daniel.
I had to use dlg_get("$ci", "$ft", "$tt"), otherwise using dlg_get("$ci", "$ft", "") i got the error ERROR: dialog [dialog.c:1559]: w_dlg_get(): invalid To tag parameter
but using dlg_get("$ci", "$ft", "$tt"), it recognized the dlg flag after that. If you consider the addition of those lines is not worthed or may have side effects, I guess it's ok
best regards david
El lun, 16 may 2022 a las 8:13, 'Daniel-Constantin Mierla' via descartin (< ***@***.***>) escribió:
No time to look at side effects of this PR, but without it, you can try to use dlg_get("$ci", "$ft", "") for CANCEL before dlg_isflagset().
— Reply to this email directly, view it on GitHub https://github.com/kamailio/kamailio/pull/3096#issuecomment-1127260318, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB3IPOR6CJ7H4SBEMJF6LKLVKHRRZANCNFSM5USJME7Q . You are receiving this because you authored the thread.Message ID: ***@***.***>
Not being very clear of the side effects, I am going to merge this PR and then add a modparam to control it. That also can help in the future to extend and set the context dlg uid for other cases (eg., event route rpc).
Merged #3096 into master.
@miconda I would expect that a the dialog flags are recognized in all parts of the dialog without setting a special parameter. I have noting against the parameter by itself, but would it not make sense to enable this by default?
@henningw: the dialog is not ready at that phase, there is no to-tag, it is only the initial invite transaction around, but more important, this is changing a behaviour that is there from the beginning, so this is preserving the backward compatibility and makes sure there are no unnoticed side effects after an upgrade.