Thanks to Jason Shugart at INdigital. Fix consist of caring of removing references to previously retrieved tcp connections. GH #2880
<!-- 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 - [x] Related to issue #2880 (replace XXXX with an open issue number)
#### Description <!-- Describe your changes in detail -->
Just do some missing `tcpconn_put` calls on MSRP module after a tcpconn_get.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/2890
-- Commit Summary --
* <a href="https://github.com/kamailio/kamailio/pull/2890/commits/19714ebaa0f653f65d83025e2d1c033a57f3f9c4">msrp: fix some tcpconn where memory was never cleaned up</a>
-- File Changes --
M src/modules/msrp/msrp_netio.c (5)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/2890.patch https://github.com/kamailio/kamailio/pull/2890.diff
@miconda commented on this pull request.
@@ -169,12 +169,16 @@ int msrp_relay(msrp_frame_t *mf)
wsev.len = p - reqbuf; wsev.id = con->id; evp.data = (void *)&wsev; + tcpconn_put(con); return sr_event_exec(SREV_TCP_WS_FRAME_OUT, &evp); }
I think the code has to be changed to do the `tcpconn_put(con)` after `sr_event_exec(SREV_TCP_WS_FRAME_OUT, &evp);`. Declare `int ret;` at the beginning of the function and then:
``` ret = sr_event_exec(SREV_TCP_WS_FRAME_OUT, &evp); tcpconn_put(con); return ret; ```
I haven't read the code thoroughly, but I expect that if the connection is released before event execution, then it is a risk that the connection is destroyed while executing the event callbacks.
@NGSegovia pushed 1 commit.
bf371ccbfa1c89fefcd9d9322ae75189d97fc862 msrp: fix some tcpconn where memory was never cleaned up
@NGSegovia commented on this pull request.
@@ -169,12 +169,16 @@ int msrp_relay(msrp_frame_t *mf)
wsev.len = p - reqbuf; wsev.id = con->id; evp.data = (void *)&wsev; + tcpconn_put(con); return sr_event_exec(SREV_TCP_WS_FRAME_OUT, &evp); }
Updated. Thanks for the feedback.
Thanks, merging!
Merged #2890 into master.