- if t_suspend and t_continue are used for replies and in the called route in t_continue the body of the sip message is parsed the pkg memory of the parsed body is leaked
<!-- 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
- [ ] Related to issue #XXXX (replace XXXX with an open issue number)
#### Description
<!-- Describe your changes in detail -->
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/3294
-- Commit Summary --
* tm: cleanup parsed body at the end t_continue_helper
-- File Changes --
M src/modules/tm/t_suspend.c (5)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/3294.patchhttps://github.com/kamailio/kamailio/pull/3294.diff
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/3294
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/pull/3294(a)github.com>
Module: kamailio
Branch: master
Commit: f409a8c9f6fde33eaf8b428887e219b56740b0a5
URL: https://github.com/kamailio/kamailio/commit/f409a8c9f6fde33eaf8b428887e219b…
Author: Rick Barenthin <rick(a)ng-voice.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2022-12-07T14:14:42+01:00
tm: cleanup parsed body at the end t_continue_helper
- if t_suspend and t_continue are used for replies
and in the called route in t_continue the body of
the sip message is parsed the pkg memory of the
parsed body is leaked
---
Modified: src/modules/tm/t_suspend.c
---
Diff: https://github.com/kamailio/kamailio/commit/f409a8c9f6fde33eaf8b428887e219b…
Patch: https://github.com/kamailio/kamailio/commit/f409a8c9f6fde33eaf8b428887e219b…
---
diff --git a/src/modules/tm/t_suspend.c b/src/modules/tm/t_suspend.c
index f0255d6647..4e25c3c89b 100644
--- a/src/modules/tm/t_suspend.c
+++ b/src/modules/tm/t_suspend.c
@@ -554,6 +554,11 @@ static int t_continue_helper(unsigned int hash_index, unsigned int label,
hdr = hdr->next;
}
}
+
+ /* trigger free of body */
+ if(brpl->body && brpl->body->free) {
+ brpl->body->free(&brpl->body);
+ }
sip_msg_free(brpl);
}
}
Hello,
should anyone be interested to present or just go to FOSDEM 2023, note
that it is going to take place in Brussels during February 4-5, 2023.
With a increasing demand on topics to be covered, many more devrooms
were accepted and Real Time Communication devroom has half a day
available on the afternoon of February 5, 2023. The RTC Devroom call for
presentations is open, more details at;
- https://lists.fosdem.org/pipermail/fosdem/2022q4/003479.html
Check also the other accepted devrooms, maybe one suits better for your
work with open source nowadays and you can submit proposals to them:
- https://fosdem.org/2023/news/2022-11-07-accepted-developer-rooms/
Cheers,
Daniel
--
Daniel-Constantin Mierla -- www.asipto.comwww.twitter.com/miconda -- www.linkedin.com/in/miconda
Module: kamailio
Branch: master
Commit: 0f3f02353535034beaf84ea833cdd5bf30cd46a2
URL: https://github.com/kamailio/kamailio/commit/0f3f02353535034beaf84ea833cdd5b…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2022-12-07T10:11:12+01:00
misc/examples/kemi: updated kamailio-basic-kemi-ruby.rb in sync with kemi samples
---
Modified: misc/examples/kemi/kamailio-basic-kemi-ruby.rb
---
Diff: https://github.com/kamailio/kamailio/commit/0f3f02353535034beaf84ea833cdd5b…
Patch: https://github.com/kamailio/kamailio/commit/0f3f02353535034beaf84ea833cdd5b…
---
diff --git a/misc/examples/kemi/kamailio-basic-kemi-ruby.rb b/misc/examples/kemi/kamailio-basic-kemi-ruby.rb
index 37c6dddc34..30bb742332 100644
--- a/misc/examples/kemi/kamailio-basic-kemi-ruby.rb
+++ b/misc/examples/kemi/kamailio-basic-kemi-ruby.rb
@@ -28,8 +28,6 @@ def ksr_request_route()
return
end
- ksr_route_withindlg()
-
# Retransmissions
if !KSR.is_ACK() then
if KSR::TMX.t_precheck_trans() > 0 then
@@ -39,7 +37,12 @@ def ksr_request_route()
return if KSR::TM.t_check_trans() == 0
end
- # Auth
+ # Handle requests within SIP dialogs
+ ksr_route_withindlg()
+
+ # -- only initial requests (no To tag)
+
+ # Authentication
ksr_route_auth()
# Record routing for dialog forming requests (in case they are routed)
@@ -56,35 +59,16 @@ def ksr_request_route()
# Registrations
ksr_route_registrar()
- # USRLOC
- ksr_route_location()
-
- return
-end
-
-def ksr_route_reqinit()
- if KSR::COREX.has_user_agent() > 0 then
- ua = KSR::PV.gete("$ua");
- if ua.include? 'friendly' or ua.include? 'scanner' or ua.include? 'sipcli' or ua.include? 'sipvicious' then
- KSR::SL.sl_send_reply(200, "OK");
- exit
- end
+ if KSR::COREX.has_ruri_user() < 0 then
+ # request with no Username in RURI
+ KSR::SL.sl_send_reply(484,"Address Incomplete");
+ return;
end
- if KSR::MAXFWD.process_maxfwd(10) < 0 then
- KSR::SL.sl_send_reply(483,"Too Many Hops");
- exit
- end
-
- if KSR.is_OPTIONS() and KSR.is_myself_ruri() and KSR::COREX.has_ruri_user() < 0 then
- KSR::SL.sl_send_reply(200, "Keepalive");
- exit
- end
+ # User location service
+ ksr_route_location()
- if KSR::SANITY.sanity_check(1511, 7) < 0 then
- KSR.err("Malformed SIP message from #{KSR::PV.get('$si')}:#{KSR::PV.get('$sp')}\n");
- exit
- end
+ return
end
def ksr_route_relay()
@@ -111,6 +95,56 @@ def ksr_route_relay()
exit
end
+def ksr_route_reqinit()
+ # no connect for sending replies
+ KSR.set_reply_no_connect();
+ # enforce symmetric signaling
+ # send back replies to the source address of request
+ KSR.force_rport();
+
+ if !KSR.is_myself_srcip() then
+ srcip = KSR::KX.get_srcip();
+ if KSR::HTABLE.sht_match_name("ipban", "eq", srcip) > 0 then
+ # ip is already blocked
+ KSR.dbg("request from blocked IP - " + KSR::KX.get_method() +
+ " from " + KSR::KX.get_furi() + " (IP:" +
+ srcip + ":" + KSR::KX.get_srcport() + ")\n");
+ exit;
+ end
+ if KSR::PIKE.pike_check_req() < 0 then
+ KSR.err("ALERT: pike blocking " + KSR.kx.get_method() +
+ " from " + KSR::KX.get_furi() + " (IP:" +
+ srcip + ":" + KSR.kx.get_srcport() + ")\n");
+ KSR::HTABLE.sht_seti("ipban", srcip, 1);
+ exit;
+ end
+ end
+
+ if KSR::COREX.has_user_agent() > 0 then
+ ua = KSR::PV.gete("$ua");
+ if ua.include? 'friendly' or ua.include? 'scanner' or
+ ua.include? 'sipcli' or ua.include? 'sipvicious' then
+ KSR::SL.sl_send_reply(200, "OK");
+ exit
+ end
+ end
+
+ if KSR::MAXFWD.process_maxfwd(10) < 0 then
+ KSR::SL.sl_send_reply(483,"Too Many Hops");
+ exit
+ end
+
+ if KSR.is_OPTIONS() and KSR.is_myself_ruri() and KSR::COREX.has_ruri_user() < 0 then
+ KSR::SL.sl_send_reply(200, "Keepalive");
+ exit
+ end
+
+ if KSR::SANITY.sanity_check(17895, 7) < 0 then
+ KSR.err("Malformed SIP message from #{KSR::PV.get('$si')}:#{KSR::PV.get('$sp')}\n");
+ exit
+ end
+end
+
def ksr_route_withindlg()
return if KSR::SIPUTILS.has_totag() < 0