Update upstream source from tag 'upstream/6.0.3'

Update to upstream version '6.0.3'
with Debian dir afc349574e
pull/12/head
Donat Zenichev 8 months ago
commit 01e0b22de9

@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.10)
# Set the project name
project(
kamailio
VERSION 6.0.2
VERSION 6.0.3
DESCRIPTION "Kamailio SIP Server"
HOMEPAGE_URL "https://www.kamailio.org")

@ -1,3 +1,715 @@
===================== 2025-09-10 Version 6.0.3 Released =====================
===================== Changes Since Version 6.0.2 ===========================
commit 37d5d89e421e966d9f5c5df52bd0c1450006a57a
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Sep 10 09:49:18 2025 +0200
Makefile.defs: version set to 6.0.3
commit 2e35476b03e0a25838e16035e8be5e4f12f538ca
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Sep 10 09:49:00 2025 +0200
CMakeLists.txt: version set to 6.0.3
commit ffa5d81dda8fd6a17e729697fd8a4101349e1a7d
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Sep 10 09:47:19 2025 +0200
pkg/kamailio: version set 6.0.3 for rpms and alpine
commit d93edf5d842f8cb865d513a83dd57b7419198908
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Wed Sep 10 09:05:39 2025 +0200
pkg/kamailio/deb: version set 6.0.3 [skip ci]
* add trixie support
commit 69056b37e032ad085005cef99e4b6519361fc90f
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Wed Sep 10 09:01:36 2025 +0200
pkg/kamailio/deb: add support for trixie [skip ci]
commit 095ee3de59f7b5de289bec5375a1307bfa4ae2ae
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Sep 9 14:01:32 2025 +0200
ims_icscf: sync ims_icscf_timer_routine() declaration
(cherry picked from commit 7905312a183eac8c9338ccd4ff12c5667de974b2)
commit 626c99b66a1ed7e0c7bc25d89a724db586cf68dc
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Sep 2 16:04:13 2025 +0200
sqlops: small formatting of exported pvs
(cherry picked from commit c98c32b48bcd2cdf4b883ff46cb939b80351fb20)
commit 4d99c9cecb2db32933a170e143b6435a4fb5d001
Author: vsaranov <vadim.saranov@gmail.com>
Date: Tue Aug 12 21:24:11 2025 +0300
rtp_media_server: fix incorrect function return value
(cherry picked from commit 604771b4da34a5512fc65143297dbeb8a40db3f7)
commit bccf6add61234b454f3ae034a728fc65d3a789e3
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Mon Aug 18 07:39:15 2025 +0200
core: resolve - SR_DNS_MAX_QNO and SR_DNS_MAX_ANO can be defined via compiler options
- compiler -D or makefile variable CC_EXTRA_OPTS
- #4359
(cherry picked from commit 1525b613357cbd1bcd5dbc3555603c57fa5dddcb)
commit 32b69f52c427aae526f7e67d5f3d1a7141e98bb5
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Sat Aug 16 08:00:22 2025 +0200
microhttpd: clone header name for search
- GH #4369
(cherry picked from commit 18bd172382f927a771b3b6ef05d614a3562c0202)
commit 89418b3e525e6ed32281aaa604d7b1bcc74180f2
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Aug 15 17:01:37 2025 +0200
microhttps: detect header name variables before the rest
(cherry picked from commit e1fda6025e058ea44203541f70b48d800019609d)
commit 66aeb54d861523892e255ff9140dc18c3b7e742a
Author: Matteo Brancaleoni <matteo.brancaleoni@voismart.it>
Date: Thu Aug 7 17:11:49 2025 +0200
pua_reginfo: use expires from contact for publish rq
(cherry picked from commit 0e284b0632f5c1ca9d82b87e0b158e2858d1de5d)
commit f9a7562bb85ce82861551cbcf83be455340feab0
Author: Stefan Mititelu <stefan.mititelu@net2phone.com>
Date: Tue Aug 5 11:02:52 2025 +0300
tm: add NULL check for transaction uac
(cherry picked from commit 4e2a93074476a3e1747eb46cb197cd8f492d5902)
commit 86eb79f1f6bc78dd42a7a0ede7d60d9785a9e910
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Wed Aug 27 12:03:01 2025 +0200
ndb_mongodb: support mongo-c-driver version 2
related #4378
(cherry picked from commit 5182f261562c8882b9468f5209b21c9863e659bc)
commit 6b3756ef8d44996742ffb24f4ffe6b4fc929599a
Author: Xenofon Karamanos <xk@gilawa.com>
Date: Thu Aug 28 09:48:18 2025 +0000
ndb_mongodb: Adopte cmake for mongoc2
(cherry picked from commit 58b33d348db678bdda9c119aaa6074ff2cb752c9)
commit 9668f46abdbe1c551138e81a19eca13e320f69cb
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Wed Aug 27 11:59:25 2025 +0200
db_mongodb: support mongo-c-driver version 2
related #4378
(cherry picked from commit 0bb166deb7fcbc5f0c7aa1bf12fba24ca1d34cf8)
commit 006edde1876d3817b1296bb6135bf55859c4bea6
Author: Xenofon Karamanos <xk@gilawa.com>
Date: Thu Aug 28 09:48:06 2025 +0000
db_mongodb: Adopt cmake for mongoc2
(cherry picked from commit 41198c512c199501468d8b2a93914adae1b32d15)
commit 688ace0835dff05d8653b1573aaf672e7a793bf4
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Mon Sep 1 15:07:17 2025 +0200
ims_icscf: use proper timer_function parameters
fix #4370
(cherry picked from commit bf24361bb02677cebba275a60ba289700d285c61)
commit 86bb6fee439b3d149c67196f7fd2a0b7c1c15728
Author: Federico Cabiddu <federico.cabiddu@gmail.com>
Date: Wed Jun 18 08:03:04 2025 +0200
http_async_client: free cell->reply when curl handler is reused for http challenge
commit 015efa305c2c7822e64383c6a98de9addd41add7
Author: Stefan Mititelu <stefan.mititelu@net2phone.com>
Date: Tue Jun 24 12:28:43 2025 +0300
rtpengine: don't ping manually disabled nodes
Fix for original commit: 3202dc9d8e26620fe642e474e5cf8632ab6bc3a7
(cherry picked from commit d48011199c1c262271efa63430f6e4a982b6052c)
commit ea8e68340a7ff3c65d6df9389472d176f41332b6
Author: Xenofon Karamanos <xk@gilawa.com>
Date: Thu Aug 14 14:56:26 2025 +0000
cmake: Add futex definition to linux.
- Match existing behavior with makefiles
- This has the side effect that both fast_lock and use_futex are defined.
- code selects use_futex
(cherry picked from commit 9d6d4f66c586396def5bbf9b8cf59d277983c72e)
commit 2a28715a32a9b2ca0fc29b43b772576a57938b0c
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Aug 12 08:54:04 2025 +0200
dispatcher: load tm api earlier than records loading not to reset the probing flag
(cherry picked from commit fc366962cf6142fd7614baee9ace854ac661d698)
commit 650739064d27f10bb19b4d811d1c5545e1a49690
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Mon Aug 11 20:49:17 2025 +0200
dispatcher: print the flags and priority in the debug message
(cherry picked from commit 533324e21ee48c680ebf7505ce37b2503810d874)
commit ec76d674e688c20255322e6b77e2f0e823960e6d
Author: Richard Fuchs <rfuchs@sipwise.com>
Date: Wed Aug 6 07:40:14 2025 -0400
rtpengine: enlarge cookie buffer
With `server_id` being a signed int, it may be negative, taking up 11
characters instead of 10.
Add explicit type casts to ensure future consistency.
Closes #4350
(cherry picked from commit 6281f71476dfd1f71c824029b1970100cc150d7d)
commit b6d6aa24d6cdf526a29469155d3cb7c6856bd31c
Author: Kamailio Dev <kamailio.dev@kamailio.org>
Date: Sun Aug 3 16:16:21 2025 +0200
modules: readme files regenerated - modules ... [skip ci]
commit 3e64cf44eb6e01147cd18a6a8b73f47b6e4e1481
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Sun Aug 3 16:08:07 2025 +0200
dispatcher: removed exports to config propagated by backporting
- removed param event_callback_mode and function ds_mark_addr()
commit 3fa9a83342b70c296cd10856d64711b370f8fb15
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jun 20 06:53:44 2025 +0200
core: mod fixup - helper function for s-i-s parameters
(cherry picked from commit 62b18cdfb62721304e5f82fd71063303cff06641)
commit 2e98f882b09f8c3adc82631fddbf36b101afc1c9
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 23 19:40:31 2025 +0200
topos: docs updated for event routes
(cherry picked from commit 913d60bed99eee7dd212831e9153e5a3c39ab4be)
commit 7b02ee5a57c657e96cfea9e47689d758f4d1c37b
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 23 19:17:37 2025 +0200
sipdump: made the received info available via the faked message in event route
(cherry picked from commit c6c25e43c8a24b50b73bf0772d58686cf8944020)
commit eb518c35b2aa76c58967f5d5985e40b3891118ee
Author: Stefan Mititelu <stefan.mititelu@net2phone.com>
Date: Thu Jul 17 11:50:27 2025 +0300
topos: expose rcv data in event routes
Updated documentation.
(cherry picked from commit 90b350a2815bc2ca4c69fda75194322416ced328)
commit 5c31ba6baec200177aeadcf40da1af8bdb16322a
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 23 17:19:06 2025 +0200
dispatcher: use always the internal faked message for event routes
- being executed on state change, the config message does not provide
useful data (e.g., on ds_mark_dst() inside failure route, the UAS
request is used, not having uri where it was sent)
- the r-uri of the internal faked message is set to the destination uri
from the dispatcher record
(cherry picked from commit e7bf487cfcde699fbcd6fd4a6233ef2113570545)
commit e212f1ff7747906fd6deeb7f74b7a07e99f3355e
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 23 16:06:25 2025 +0200
dispatcher: use faked message also for tm faked-reply on event routes
(cherry picked from commit 97d5a13b9f2c6cd84e6ce62e0c779a5118b3dfb1)
commit 41478779d55b158ddd8c3b177de5309afa4485cf
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jul 18 09:11:20 2025 +0200
core: extended log messages for lumps_len()
(cherry picked from commit c53b5345e6101c6fe1771e3d64c25e6f7671c479)
commit 169387ffcfca99e251bbde250dca66dd7025d1e1
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Thu Jul 17 17:41:05 2025 +0200
core: more details in the log for checking msg_recv_max_size
(cherry picked from commit 30331861c6d10ba04352448f10ce6b912ebe0515)
commit 29302f9838922ac1c130e36c3573d362d57a9e05
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Thu Jul 17 09:16:23 2025 +0200
usrloc: use proto from socket for keepalive via header
(cherry picked from commit 3322bea764036deba6340e435c257244d511a11f)
commit 9f53a495f0d6a09f56c872958e18f712afef31da
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 16 11:28:13 2025 +0200
crypto: init call-id rand seeding with the first usage
- randomization per process
(cherry picked from commit a07b845cffe0a6a5fb6410d735aee6c510f8ff8e)
commit 816040c333c068d54438a56658dd6554f42568b1
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jul 16 08:23:00 2025 +0200
dispatcher: added parameter event_callback_mode
- control when event route and KEMI callback functions are executed
(cherry picked from commit 77805bc1f028f4cca956d4f05dd9dc3c0d534d0f)
commit 10093edb2b69d1bc1773c0449d2e2314228982c1
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Sun Jul 13 14:10:27 2025 +0200
tls_wolfssl: Fix typo
(cherry picked from commit 157f0ea6eb570226bcbf52c6ebb706f2e81b3c8e)
commit 0dba33ddc9fa64df4dd1df2c9658636f796d076b
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Sun Jul 13 14:08:58 2025 +0200
tls: Fix typo
(cherry picked from commit 982a1a676a84142a511e4f095f8d19161f3c34ee)
commit 0b543ae073653af9fe27b35fcbd327c2b509d3ea
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Sun Jul 13 14:03:36 2025 +0200
pv: Fix typo
(cherry picked from commit a426a2e113c4b41af36ee4240cc10460a6cb537a)
commit 165b19e4a8f684350529a87823cae41f6f5802d6
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Sun Jul 13 14:02:27 2025 +0200
core: Fix typos
(cherry picked from commit 6b92933080230f9546c9559aba9ecdfad7759a15)
commit 8818cd8fc6d37a395a4e8b15675eba6f7ebb0776
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Sun Jul 13 14:00:43 2025 +0200
htable: Fix typo
(cherry picked from commit 93586580259fe2d71899a3a4d83868f89362f695)
commit 00def1b816472d7eff9ecb22654ecea58e865fb1
Author: Дилян Палаузов <git-dpa@aegee.org>
Date: Sun Jul 13 12:50:04 2025 +0300
dialog: use capital letter at start of sentence
(cherry picked from commit cc22bfc5199855f990156fb6a533c67dbc9049e9)
commit c58ac37fced3a0d0a6ae95107d3733eb727ec431
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Sat Jul 12 11:40:12 2025 +0200
dispatcher: check rewrite_uri() return code
(cherry picked from commit 34c903a6a4658852bfef0edfb78614b83700a5e9)
commit d8453e714abe2d80f8953d40b67a0ec4440ecd8c
Author: Bastian Triller <bastian.triller@gmail.com>
Date: Mon Jun 30 09:55:31 2025 +0200
uac: Fix From/To header restore with dialog store
When replacing From/To header and using dialog module to store original
URIs (modparam restore_dlg=1), restoring of headers does not work for
replies to in-dialog requests sent upstream.
Add in-dialog request's direction to TM callback parameter, so correct
URIs are restored for replies to upstream in-dialog requests.
(cherry picked from commit 0d4ffb74a949ae6e390d334b30ec51cedb001226)
commit c2f382afb529cdbd0dbd16c73680794ca1e92b87
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jul 8 11:53:07 2025 +0200
cplc: update main process variable after the internal fork()
- probably module should be updated to use internal API fork_process()
(cherry picked from commit 508e59090960322d1709b7e56a41300d0e948600)
commit cc09f81443946be5948356eff4ddc298044b8efe
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jul 8 11:52:37 2025 +0200
sms: update main process variable after the internal fork()
- probably module should be updated to use internal API fork_process()
(cherry picked from commit 92949eb21a3ce6869fce01f9b080d9502f61edf8)
commit 183f71fba0b0a948816a03d1d690e1f68c4e3524
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jul 8 11:51:30 2025 +0200
seas: update main process variable after the internal fork()
- probably module should be updated to use internal API fork_process()
(cherry picked from commit d18f7189a9664f3c2cca65c76e068ad1951a0c19)
commit c648866f63c6aabcc058aa49439e6c6033ac8494
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jul 4 10:25:13 2025 +0200
kex: formatted pkg rpc export structure
(cherry picked from commit e153560eec82787c92c7bb6522dfa7a106781bfd)
commit 12b46a0e8fe7f904834f6a4c0ae29911c32de97e
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jul 1 13:05:43 2025 +0200
microhttpd: rework resetting the data field
(cherry picked from commit 4083714575e2cb7500c67fb8a0b99ff371bf8576)
commit 6a2516c12094d375ba63ef5b9cd021bfa1d620bc
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Sun Jun 29 20:33:34 2025 +0200
secsipid: docs update to reflect better the use of private/public key
(cherry picked from commit 64635de552896fbf354e52656ec4ee93f1d87e6f)
commit 40db3cacd06952f47f90311a04f6c98ffc45790c
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jun 27 10:01:18 2025 +0200
uac: small reformatting for reg_copy_shm() macro
(cherry picked from commit 9187303af7689d435112f69fdbec45b7c5687351)
commit ef4a1349470bb05fbf52f78103310a6c7123e6b0
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jun 27 09:22:28 2025 +0200
rtpengine: docs section for rtpengine_destroy()
(cherry picked from commit 3020ddd9ad832a51cb04aef9d717935bcae5405f)
commit 3d9bf7d271fa9f01014600c34083f21b0a0de5a3
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jun 27 09:09:53 2025 +0200
rtpengine: aliased rtpengine_destroy() to rtpengine_delete()
- make it easier to migrate from rtp proxy by replacing the module name
inside routing blocks
(cherry picked from commit 32db0297d27093181ff4eb0530cc1a67d680e99f)
commit 97c904c02ad797473a82d41d815a8e8bcb729135
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Thu Jun 26 09:05:10 2025 +0200
nghttp2: docs updated to use the proper $nghttp2(path) variable
(cherry picked from commit b513666f76d2220d8914fadcc4968845efbf170f)
commit 6e36d3fdb0f0794ec3f57c7265d283916d79c46c
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jun 25 20:33:45 2025 +0200
core: print ip and port in log message
(cherry picked from commit 092ad634a2741ad21fd29586a30bd2bcb9ac653b)
commit 9d07b43816658b6e2683dedfcab655bdb792cd3b
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jun 25 17:03:58 2025 +0200
dispatcher: clone dispatcher uri for event route variable
(cherry picked from commit db65368108b0de14e40cbbd7c92561e5c8740dac)
commit 00fcc56fdb11d1bbb14291aaf4b348e6d0222a93
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jun 25 13:22:17 2025 +0200
dispatcher: $dsv(name) extended to return setid and uri
(cherry picked from commit 0e914414e48637168ab9ab682a9463412cf8f3fe)
commit 30893f0027363e0ca83ac1b50a5ffcf3bb521abb
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jun 24 19:18:52 2025 +0200
dispatcher: renamed field to reflect better the purpose and print in rpc result
(cherry picked from commit deb8405b403a5a8da4f2aac3aa167e2a84d15d91)
commit 499e886f265f02d87124e71f1a53a1de89b23d07
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jun 24 13:30:13 2025 +0200
dispatcher: set state from config without depending on keepalive thresholds
(cherry picked from commit a70a55df0dbe5fc9231329327e3d6acf6a37c5c4)
commit 8d2a9aa3748d0a5ee2f0dec588f4821d26154580
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jun 24 12:20:20 2025 +0200
dispatcher: use rewrite/reset uri for event route with faked msg
(cherry picked from commit a878e7f2ec015015f53b1ad152554a81c9422674)
commit 9ed2e519dfb5933afd4a151b8bece0f5af55abbb
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Tue Jun 24 12:15:37 2025 +0200
core: dset - wrapper function to reset request uri
(cherry picked from commit e01f50fa3de5b0eb24ba0852917d682fe1d83ea1)
commit 716e89dd5a86fd17c3c60a7815796a08f230d4cf
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Fri Jun 20 08:10:45 2025 +0200
dispatcher: added ds_mark_addr(state, group, uri)
- set the state of a target by group and address
(cherry picked from commit d85e63e7c5fb422151ba0d8a08b47cedc4929d8d)
commit 483d7190cdd193b56570cb6b8bfef9235351f663
Author: Daniel-Constantin Mierla <miconda@gmail.com>
Date: Wed Jun 18 19:19:37 2025 +0200
dispatcher: docs - more details about using algorithm 12
(cherry picked from commit 1b62f165d541cf88fe37778f0e23232e45e86b3d)
commit 87f60d2b4429b4858dabd9fa5be5fe19418cfade
Author: amnapa <marvelousvip@live.com>
Date: Sat Apr 5 13:08:18 2025 +0000
ims_auth: replaced t_continue_skip_timer with t_continue in cxdx_mar.c
- fixed log message in MAR Async CDP callback
- fixed executing cfg_action after sending MAR Diameter request
- cfg_action is the callback parameter of the ims_www_challenge function
(cherry picked from commit 7470967790a78ba67ef7acb7c87d94482fbea0cb)
commit 4c6485235ab6a66e45ab20be731dd4f220e36e44
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 29 11:25:22 2025 +0200
ims_ipsec_pcscf: ipsec_reconfig() fix logic
reconfig should only happen once. Before, if more than one
REGISTER was processed when there are no contacts, the process
could be triggered more than once.
(cherry picked from commit c362531c5dccc3ed674247c18bac65c224385108)
commit 959ccfb762f1643ebfc9a57b12e8e7e0df2e7aba
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Thu Jul 24 17:54:43 2025 +0200
Makefile: fix dependency of core/cfg.tab.c rule
* don't call bison twice
Fix #4337
(cherry picked from commit d3e71874cf39c9ab50af293d647754bb589d0612)
commit b9b39e53a53dffade4b0102e6dec6f75928e3a92
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Wed Jul 23 17:13:12 2025 +0200
ims_usrloc_scscf: update SUBSCRIBER_TABLE to "subscriber_scscf"
* schema was changed at 283a77887c88c38a240567a7b165478775662d81
(cherry picked from commit 359e0df42d3e1c5880c9f465c6898fedd5bdead1)
commit 5993ec85431f5d23dcc2aac12a5e98eb6f7de989
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 22 11:16:32 2025 +0200
ims_icscf: cxdx_send_lir() return error on fail send message
(cherry picked from commit 73119407a0999ca32eed75e56e412f3087a37800)
commit 9bc482d9e859473621b5a4bebb3bf7e11e9bdd96
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 22 11:09:02 2025 +0200
ims_icscf: cxdx_send_uar() return error on fail send message
(cherry picked from commit 8a30b015e5d8da263cd6f91cc659813cc6c9946a)
commit c52a6b5a9ce6e328f327d1abc0aaf52443ae298d
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Mon Jul 21 13:27:30 2025 +0200
ims_dialog: dlg_onroute() use proper tag depending on direction
* needed for correctly updating cseq
(cherry picked from commit a3fdf6dc8f9bf74f937ccde6becb64afd74910a8)
commit bad15277b3bf35e727397ad727fb6cb4e14992ae
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Mon Jul 21 10:59:54 2025 +0200
ims_isc: build_p_associated_uri() fix tel uri build
(cherry picked from commit a93b6f5831a9e0a86d468f91bbdba9590868dec9)
commit 9bdcb7f3bb304c2f0824006542bd613c20d39f0d
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 15 18:10:38 2025 +0200
ims_isc: remove function names from log messages
* use generic PKG_MEM_ERROR messages on pkg_malloc errors
(cherry picked from commit 48d3fdb3cfa3e5eec777853e1a4d32d844e94e8f)
commit 681c76b21103045aa09db8bf79a6abc818581094
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 15 18:03:07 2025 +0200
ims_isc: fix wrong log level messages
this are clearly debug log messages, not errors
(cherry picked from commit db7c46d97cf2d3f47024dbf9583aad575dd14b35)
commit 9c6fbd3b139d9e48b7cc2323f3b902773f181c83
Author: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Tue Jul 15 08:53:38 2025 +0200
cdp: cdp_rpc_list_peers() release lock on errors
(cherry picked from commit 7f078931d3d684822e90485024672632be29741c)
commit 567a0e75e3ee780641365b9a3fb2747d57b3e4ab
Author: Kamailio Dev <kamailio.dev@kamailio.org>
Date: Sat Jun 28 04:46:18 2025 +0200
modules: readme files regenerated - modules ... [skip ci]
commit 27f09f6ee73b1eb65db839e213069511a2e8434c
Author: S-P Chan <shihping.chan@gmail.com>
Date: Sat Jun 28 07:42:41 2025 +0800
tls: document provider_quirks parameter
(cherry picked from commit e93de1d71513b444054bac0b9b668205655bf268)
commit 4e8f34cf5eca5f0a6c6dc2a32d9e521d2c3df135
Author: Xenofon Karamanos <xk@gilawa.com>
Date: Thu Jun 26 10:46:44 2025 +0000
rtpengine: Remove unnessecary log
(cherry picked from commit bd8f7b4e749f2b4d5525d5864c36252823926351)
commit 830a9f349f0356bc695b8744b4c96218e690d9e8
Author: Henning Westerholt <hw@gilawa.com>
Date: Wed Jun 18 11:10:02 2025 +0000
lrkproxy: improve randomness of cookie by using PNRG and random sequence numbers
(cherry picked from commit 4935196ee8ce1d99e77c614aaa0131a1972580ed)
commit 898bfc89fde04bb5f3d0fda059c58b0c9378d15a
Author: Henning Westerholt <hw@gilawa.com>
Date: Wed Jun 18 11:09:38 2025 +0000
rtpproxy: improve randomness of cookie by using PNRG and random sequence numbers
(cherry picked from commit 04686c40d380e16e55c359cbc6bfc28f644a4c0b)
commit 46702d80d76f6b70b63d2fca4e884def18b20385
Author: Henning Westerholt <hw@gilawa.com>
Date: Wed Jun 18 11:08:12 2025 +0000
rtpengine: improve randomness of cookie by using PNRG and random sequence numbers
(cherry picked from commit 33b80fcc4d84f955b29bd65bccee9ef2a62e7000)
===================== 2025-06-25 Version 6.0.2 Released =====================
===================== Changes Since Version 6.0.1 ===========================

@ -52,4 +52,13 @@ if(NOT NO_SIGIO_RT)
SIGINFO64_WORKAROUND)
endif()
# TODO introduce check for futex
# TODO This is placed here to match the Makefiles where both
# FAST_LOCK and USE_FUTEX are defined unconditionally.
# This also had the side effect that futex also uses the definitions
# defined for FAST_LOCK like ADAPTIVE_WAIT[_LOOPS].
# https://github.com/kamailio/kamailio/pull/4363 aims to fix this
# and we should decide whether to also apply the definitions for USE_FUTEX case.
find_path(FUTEX_HEADER_DIR linux/futex.h)
if(FUTEX_HEADER_DIR)
target_compile_definitions(common INTERFACE USE_FUTEX)
endif()

@ -4,7 +4,7 @@
# Maintainer: Nathan Angelacos <nangel@alpinelinux.org>
pkgname=kamailio
pkgver=6.0.2
pkgver=6.0.3
pkgrel=0
# If building from a git snapshot, specify the gitcommit

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2
@ -8,7 +14,7 @@ kamailio (6.0.1) unstable; urgency=medium
* version set 6.0.1
-- Victor Seva <vseva@debian.org> Mon, 10 Mar 2025 08:18:43 +0100
-- Victor Seva <vseva@debian.org> Mon, 10 Mar 2025 08:18:44 +0100
kamailio (6.0.0) unstable; urgency=medium

@ -5,12 +5,12 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
default-libmysqlclient-dev,
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2
@ -8,7 +14,7 @@ kamailio (6.0.1) unstable; urgency=medium
* version set 6.0.1
-- Victor Seva <vseva@debian.org> Mon, 10 Mar 2025 08:18:43 +0100
-- Victor Seva <vseva@debian.org> Mon, 10 Mar 2025 08:18:44 +0100
kamailio (6.0.0) unstable; urgency=medium

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
dpkg-dev (>= 1.16.1.1),
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
dpkg-dev (>= 1.16.1.1),
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,12 +5,12 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
default-libmysqlclient-dev,
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -0,0 +1,42 @@
#!/bin/bash
#
# Target dist: Debian trixie
DIST=trixie
rm -rf ${DIST}
cp -r debian ${DIST}
# No dnssec module:
sed -i -e '/libval-dev/d' -e '/^Package: kamailio-dnssec-modules/,/^$/d' \
${DIST}/control
sed -i -e '/^PACKAGE_GROUPS += dnssec/d' ${DIST}/rules
sed -i -e '/--EXCLUDED--/i EXTRA_EXCLUDED_MODULES += dnssec' ${DIST}/rules
# No app_java due lack of gcj-jdk
sed -i -e '/gcj-jdk/d' -e '/^Package: kamailio-java-modules/,/^$/d' \
${DIST}/control
sed -i -e '/^export JAVA_HOME/d' ${DIST}/rules
sed -i -e '/^PACKAGE_GROUPS += java/d' ${DIST}/rules
sed -i -e '/--EXCLUDED--/i EXTRA_EXCLUDED_MODULES += java' ${DIST}/rules
# no dh-systemd
sed -i -e '/dh-systemd/d' ${DIST}/control
# no python2
sed -i -e '/^ python,/d' -e '/python-dev/d' \
-e '/^Package: kamailio-python-modules/,/^$/d' \
${DIST}/control
sed -i -e '/^PACKAGE_GROUPS += python$/d' ${DIST}/rules
sed -i -e '/--EXCLUDED--/i EXTRA_EXCLUDED_MODULES += python' ${DIST}/rules
# no lsb-base
sed -i -e '/lsb-base/d' ${DIST}/control
# libncurses
sed -i -e 's/libncurses5-dev/libncurses-dev/g' ${DIST}/control
wrap-and-sort -sat -d ${DIST}
# clean backports scripts
rm -rf ${DIST}/backports
exit 0

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,12 +5,12 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
default-libmysqlclient-dev,
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
dpkg-dev (>= 1.16.1.1),
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
dpkg-dev (>= 1.16.1.1),
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,10 +5,10 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
dpkg-dev (>= 1.16.1.1),
erlang-dev,
flex,
libcurl4-openssl-dev,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,12 +5,12 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
default-libmysqlclient-dev,
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -0,0 +1,59 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2
-- Victor Seva <vseva@debian.org> Wed, 25 Jun 2025 08:51:11 +0200
kamailio (6.0.1) unstable; urgency=medium
* version set 6.0.1
-- Victor Seva <vseva@debian.org> Mon, 10 Mar 2025 08:18:44 +0100
kamailio (6.0.0) unstable; urgency=medium
* version set 6.0.0
-- Victor Seva <vseva@debian.org> Wed, 29 Jan 2025 09:06:18 +0100
kamailio (6.0.0~rc0) unstable; urgency=medium
* version set 6.0.0~rc0
-- Victor Seva <vseva@debian.org> Thu, 23 Jan 2025 08:54:27 +0100
kamailio (6.0.0~pre0) unstable; urgency=medium
* version set 6.0.0~pre0
-- Victor Seva <vseva@debian.org> Tue, 17 Dec 2024 20:14:42 +0100
kamailio (6.0.0~dev3) unstable; urgency=medium
* version set 6.0.0~dev3
-- Victor Seva <vseva@debian.org> Mon, 30 Sep 2024 13:58:53 +0200
kamailio (6.0.0~dev2) unstable; urgency=medium
* version set 6.0.0~dev2
-- Victor Seva <vseva@debian.org> Thu, 16 May 2024 09:46:08 +0200
kamailio (5.9.0~dev1) unstable; urgency=medium
* version set 5.9.0~dev1
-- Victor Seva <vseva@debian.org> Mon, 15 Apr 2024 08:52:26 +0200
kamailio (5.9.0~dev0) unstable; urgency=medium
* version set 5.9.0~dev0
-- Victor Seva <vseva@debian.org> Thu, 23 Feb 2024 19:45:08 +0209

@ -0,0 +1,922 @@
Source: kamailio
Section: net
Priority: optional
Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
debhelper (>= 9),
dpkg-dev (>= 1.16.1.1),
bison,
default-libmysqlclient-dev,
docbook-xml,
erlang-dev,
flex,
libcurl4-openssl-dev,
libdb-dev (>= 4.6.19),
libev-dev,
libevent-dev,
libexpat1-dev,
libhiredis-dev (>= 0.10.0),
libjansson-dev,
libjson-c-dev,
libldap2-dev,
liblua5.1-0-dev,
libmaxminddb-dev,
libmemcached-dev,
libmicrohttpd-dev,
libmnl-dev,
libmongoc-dev,
libmosquitto-dev,
libnats-dev,
libncurses-dev,
libpcre2-dev,
libperl-dev,
libphonenumber-dev (>= 7),
libpq-dev,
librabbitmq-dev,
libradcli-dev,
librdkafka-dev,
libreadline-dev,
libsasl2-dev,
libsctp-dev [any],
libsecsipid-dev [amd64 arm64 armel armhf hurd-i386 i386 powerpc ppc64 ppc64el riscv64 s390x],
libsnmp-dev,
libsqlite3-dev,
libssl-dev,
libsystemd-dev,
libunistring-dev,
libwebsockets-dev,
libwolfssl-dev,
libxml2-dev,
openssl,
pkg-config,
python3,
python3-dev,
ruby-dev,
unixodbc-dev,
uuid-dev,
xsltproc,
zlib1g-dev,
Standards-Version: 4.6.0.1
Homepage: https://www.kamailio.org/
Vcs-Git: https://github.com/kamailio/kamailio.git
Vcs-Browser: https://github.com/kamailio/kamailio/
Rules-Requires-Root: no
Package: kamailio
Architecture: any
Multi-Arch: foreign
Pre-Depends:
${misc:Pre-Depends},
Depends:
adduser,
python3,
${misc:Depends},
${shlibs:Depends},
Replaces:
kamailio-carrierroute-modules,
Suggests:
kamailio-berkeley-modules,
kamailio-cpl-modules,
kamailio-dbg,
kamailio-ldap-modules,
kamailio-lua-modules,
kamailio-mysql-modules,
kamailio-perl-modules,
kamailio-postgres-modules,
kamailio-presence-modules,
kamailio-python-modules,
kamailio-radius-modules,
kamailio-snmpstats-modules,
kamailio-tls-modules,
kamailio-unixodbc-modules,
kamailio-xml-modules,
kamailio-xmpp-modules,
stun-server | turn-server,
Provides:
sip-router,
Description: very fast, dynamic and configurable SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, kamailio can handle thousands requests
per second even on low-budget hardware. It can be configured to act
as a SIP proxy, application server, session border controller,
or call load balancer to handle a set of media servers.
.
A C Shell like scripting language provides full control over the server's
behaviour. It's easy to integrate Kamailio with 3rd party API's and applications
using HTTP, AMQP, database drivers, LDAP, Radius and many other solutions.
In addition there is support for scripting using Lua, Python, Perl, Java.
.
Kamailio's modular architecture allows only required functionality to be loaded.
There are over 100 modules available: WebSockets for WebRTC, authentication,
multiple databases - both traditional SQL databases as well as no-SQL,
message bus systems like Rabbit MQ, instant messaging, a presence agent,
integration with REST-ful APIs using HTTP and JSON or XML,
radius authentication, record routing, an SMS gateway, a XMPP/jabber gateway, a
transaction and dialog module, OSP module, statistics support,
registrar and user location services, SNMP, SIMPLE Presence and much more.
.
This package contains the main Kamailio binary along with the principal modules
and support binaries.
Package: kamailio-dbg
Priority: extra
Section: debug
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
Description: very fast and configurable SIP server [debug symbols]
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the debugging symbols for the Kamailio binaries and
modules. You only need to install it if you need to debug Kamailio.
Package: kamailio-geoip2-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: The geoip2 module for the Kamailio SIP Server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the geoip2 module, an extension enabling
real-time queries against the Max Mind GeoIP2 database within the Kamailio
configuration file.
Package: kamailio-sqlite-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Recommends:
sqlite3,
Description: SQLite database connectivity module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the SQLite database driver for Kamailio.
Package: kamailio-json-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Json parser and Json-RPC modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides a JSON parser for use in the Kamailio
configuration file and the JSON-RPC client over netstrings.
Package: kamailio-memcached-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Replaces:
kamailio-memcached-module,
Description: interface to the memcached server, for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the memcached module, an interface to the memcached
server, a high-performance, distributed memory object caching system.
Package: kamailio-lua-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: The app_lua module for Kamailio Lua support
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the app_lua module, an extension allowing to
execute embedded Lua applications within the configuration file as
well as writing the entire configuration file in Lua.
Package: kamailio-python3-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: The app_python3 module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the app_python3 module, an extension allowing to
execute embedded Python applications within the Kamailio SIP routing script.
Package: kamailio-ruby-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: The app_ruby module for Kamailio Ruby support
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the app_ruby module, an extension allowing to
execute embedded Ruby applications within the Kamailio SIP routing script.
Package: kamailio-redis-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Redis database connectivity module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the Redis NOSQL database driver for Kamailio.
Package: kamailio-mysql-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
default-mysql-client | virtual-mysql-client,
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: MySQL database connectivity module for Kamailio
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the MySQL database driver for Kamailio.
Package: kamailio-postgres-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
postgresql-client,
${misc:Depends},
${shlibs:Depends},
Description: PostgreSQL database connectivity module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the PostgreSQL database driver for Kamailio.
Package: kamailio-cpl-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: CPL module (CPL interpreter engine) for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides a CPL (Call Processing Language) interpreter for
Kamailio, turning Kamailio into a CPL server (storage and interpreter).
Package: kamailio-radius-modules
Architecture: any
Multi-Arch: same
Breaks:
kamailio (<<5.1),
Replaces:
kamailio (<<5.1),
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: RADIUS modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides a set of RADIUS modules for Kamailio, for
authentication, peering, group membership and messages URIs checking against a
RADIUS server.
Package: kamailio-unixodbc-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: unixODBC database connectivity module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the unixODBC database driver for Kamailio.
Package: kamailio-presence-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: SIP presence modules for Kamailio
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides several Kamailio modules for implementing a presence
server and presence user agent for rich presence, registrar-based presence,
external triggered presence with SIMPLE and XCAP support, as well as a
set of other SIP event packages..
Package: kamailio-perl-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Perl extensions and database driver for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides an interface for Kamailio to write Perl extensions and
the perlvdb database driver for Kamailio.
Package: kamailio-snmpstats-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
snmpd,
${misc:Depends},
${shlibs:Depends},
Description: SNMP AgentX subagent module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the snmpstats module for Kamailio. This module acts
as an AgentX subagent which connects to a master agent. The Kamailio MIBS are
included.
Package: kamailio-xmpp-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: XMPP gateway module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the SIP to XMPP IM translator module for Kamailio.
Package: kamailio-xml-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Replaces:
kamailio-xml-module,
kamailio-xmlrpc-module,
Provides:
kamailio-xmlrpc-modules,
Description: XML based extensions for Kamailio's Management Interface
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides:
- the XMLRPC transport implementations for Kamailio's
Management and Control Interface.
- xmlops module for XPath operations in configuration file
Package: kamailio-berkeley-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
db-util (>= 4.6.19),
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Berkeley database module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the Berkeley database module for Kamailio, a
high-performance embedded database. All database tables are stored
in files, no additional server is necessary.
Package: kamailio-berkeley-bin
Architecture: any
Multi-Arch: foreign
Pre-Depends:
${misc:Pre-Depends},
Depends:
${misc:Depends},
${shlibs:Depends},
Description: Berkeley database module for Kamailio - helper program
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides helper modules for the Berkeley database module for
Kamailio, a high-performance embedded DB kernel. You should normally
install kamailio-berkeley-modules and not this package directly.
Package: kamailio-ldap-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: LDAP modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the ldap and h350 modules for Kamailio, enabling LDAP
queries from the Kamailio routing scripts and storage of SIP account data in an LDAP
directory.
Package: kamailio-ims-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: IMS module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains various Diameter interfaces and modules for Kamailio
to run as an IMS core.
Package: kamailio-utils-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Utility functions for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides a set of utility functions for Kamailio, as well
as modules for restful HTTP API access using the CURL library in the
http_client module.
Package: kamailio-sctp-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: SCTP SIP transport module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the SCTP SIP transport module for Kamailio.
Package: kamailio-tls-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: TLS support for the Kamailio SIP server (authentication, transport)
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides TLS support for encrypted and authenticated
SIP connections as well as generic TLS support for many Kamailio modules.
Package: kamailio-tls-wolfssl-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: TLS support for the Kamailio SIP server (authentication, transport)
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides TLS support for encrypted and authenticated using wolfssl
SIP connections as well as generic TLS support for many Kamailio modules.
Package: kamailio-outbound-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: SIP Outbound module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the "outbound" module implementing SIP outbound extension.
Package: kamailio-websocket-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: WebSocket module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the module implementing WebSocket transport layer
for use in SIP over WebSockets, in combination with WebRTC media sessions..
Package: kamailio-autheph-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: authentication using ephemeral credentials for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the ephemeral authentication module for Kamailio,
enabling authentication using a Restful HTTP API.
Package: kamailio-kazoo-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: kazoo modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the Kazoo application server integration module for Kamailio.
Package: kamailio-rabbitmq-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: RabbitMQ and AMQP integration modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the RabbitMQ module for Kamailio, enabling AMQP
integration into the SIP routing scripts for third party service
support.
Package: kamailio-cnxcc-modules
Architecture: any
Multi-Arch: same
Breaks:
kamailio (<<5.1),
Replaces:
kamailio (<<5.1),
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: cnxcc modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the cnxcc call charging control module for Kamailio.
Package: kamailio-erlang-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Erlang modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This Kamailio module provides interaction with the Erlang node from the Kamailio
SIP routing scripts. The module allows sending, receiving Erlang messages
and RPC calls between each other.
Package: kamailio-systemd-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: systemd logging modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides logging to systemd journal directly from the
Kamailio configuration and routing scripts.
Package: kamailio-phonenum-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: phonenum modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides real-time queries against the libphonenumber to be
performed directly from the Kamailio configuration and routing scripts.
Package: kamailio-mongodb-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: mongodb modules for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides the mongodb database driver and non-db connector for
Kamailio.
Package: kamailio-mqtt-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: MQTT modules for the Kamailio SIP Server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
MQTT module allows bidirectional publish/subscribe communication by
connecting Kamailio to a MQTT Broker.
.
Messages can be published from any point in the routing script. Also
the subscriptions can be fully controlled by scripting commands.
Package: kamailio-secsipid-modules
Architecture: amd64 arm64 armel armhf hurd-i386 i386 powerpc ppc64 ppc64el riscv64 s390x
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: contains the secsipid module
Kamailio is a very fast and flexible SIP (RFC3261)
proxy server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the secsipid Module.
Package: kamailio-lwsc-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Libwebsockets module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the lwcs module, which provides a client-side WebSockets
API through libwebsockets.
Package: kamailio-nats-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Nats module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package contains the nats module, which provides a NATS consumer for Kamailio.
NATS is a real time distributed messaging platform, more details about it can be
found at nats.io.
Package: kamailio-microhttpd-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Microhttpd module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides an embedded HTTP server using libmicrohttpd.
Package: kamailio-kafka-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Kafka module for the Kamailio SIP server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides an embedded kafka producer using librdkafka.
Package: kamailio-extra-modules
Architecture: any
Multi-Arch: same
Pre-Depends:
${misc:Pre-Depends},
Depends:
kamailio (= ${binary:Version}),
${misc:Depends},
${shlibs:Depends},
Description: Extra modules for the Kamailio SIP Server
Kamailio is a very fast and flexible SIP (RFC3261)
server. Written entirely in C, Kamailio can handle thousands calls
per second even on low-budget hardware.
.
This package provides a set of modules for compression of SIP attachments,
UUID usage, JSON data structure support, HTTP restful API asynchronous
access and a few more functions: gzcompress uuid evapi jansson janssonrpcc http_async_client
Package: kamailio-nth
Architecture: any
Pre-Depends:
${misc:Pre-Depends},
Depends:
binutils,
bison,
bvi,
flex,
gcc,
gdb,
iftop,
less | most,
lsof,
mc,
ngrep,
psmisc,
screen,
sipsak,
tcpdump,
vim,
${misc:Depends},
Description: Kamailio SIP server - package for "nice to have" utilities
This is a metapackage for easy installation various useful tools that may be
handy on server with Kamailio installed.

@ -0,0 +1,309 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Kamailio
Upstream-Contact: sr-dev@lists.kamailio.org
Source: https://www.kamailio.org/pub/kamailio/
Files: *
Copyright:
2001-2003 FhG Fokus
2006-2010 iptelorg GmbH
Various others (see AUTHORS file)
License: GPL-2.0+
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'.
Files: debian/*
Copyright: 2012, 2013, 2014 Victor Seva <linuxmaniac@torreviejawireless.org>
2009, 2010, 2011, Daniel-Constantin Mierla <miconda@gmail.com>
2010, Jon Bonilla <manwe@aholab.ehu.es>
2009, Jonas Bergler <jonas.bergler@staff.snap.net.nz>
2009, Henning Westerholt <henning.westerholt@1und1.de>
2007, Julien BLACHE <jblache@debian.org>
License: GPL-2+
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'.
Files: src/code/atomic/* src/code/atomic_ops.* src/code/basex.* src/code/bit_*.c
src/code/char_msg_val.h src/code/compiler_opt.h src/code/core_stats.h src/code/counters.*
src/code/endianness.* src/code/futexlock.h src/code/hashes.h src/code/io_wait.*
src/core/lock_ops.c src/core/lock_ops_init.h src/core/lvalue.* src/core/mem/ll_malloc.*
src/core/mem/memdbg.h src/core/mem/sf_malloc.* src/core/mod_fix.* src/modules/tm/rpc_uac.*
src/modules/counters/counters.c src/modules/tls/sbufq.h
src/modules/tls/tls_bio.* src/modules/tls/tls_cfg.* src/modules/tls/tls_cfg.h
src/modules/tls/tls_ct_wrq.* src/modules/tls/tls_ct_q.h src/modules/tls/tls_domain.*
src/modules/tls/tls_server.* src/modules/tls/tls_locking.* src/modules/tls/tls_rpc.*
src/modules/malloc_test/malloc_test.c src/modules/blst/blst.c
src/core/parser/case_p_* src/core/parser/case_reas.h src/core/pvapi.h
src/core/pv_core.* src/core/rand/fastrand.* src/core/raw_*
src/core/rpc_lookup.* src/core/rvalue.* src/core/sctp_* src/core/ser_time.h
src/core/shm_init.* src/core/sip_msg_clone.* src/core/sock_ut.*
src/core/sr_compat.* src/core/str_hash.h src/core/switch.*
src/core/tcp_ev.h src/core/tcp_int_send.h src/core/tcp_options.*
src/core/tcp_read.h src/core/tcp_stats.* src/core/timer_proc.*
src/core/tls_hooks.* src/core/tls_hooks_init.h src/core/ver.*
Copyright: 2006-2010 iptelorg GmbH
License: ISC
Files: src/modules/tls/tls_select.* src/modules/tls/tls_dump_vf.*
Copyright: 2005-2010 iptelorg GmbH
License: GPL-2 + OpenSSL exception
Files: src/modules/websocket/* src/modules/outbound/* src/modules/auth_ephemeral/*
Copyright: 2012-2013 Crocodile RCS Ltd
License: GPL-2 + OpenSSL exception
Files: src/core/daemonize.* src/core/fastlock.h src/core/lock_ops.h
src/core/mem/mem.* src/core/mem/f_malloc.h
src/core/mem/meminfo.h src/core/mem/memtest.c src/core/mem/shm_mem.c
src/core/mem/q_malloc.* src/core/mem/shm_mem.h
src/core/mem/f_malloc.c src/core/pt.* src/core/sched_yield.h src/core/ut.*
Copyright: 2001-2003 FhG Fokus
License: ISC
Files: src/core/events.* src/modules/topoh/*
Copyright: 2009 SIP-Router.org
License: ISC
Files: src/modules/pv/pv_xavp.* src/modules/usrloc/ul_rpc.*
src/core/ppcfg.* src/core/xavp.*
Copyright: 2009-2010 Daniel-Constantin Mierla (asipto.com)
License: ISC
Files: src/modules/xmpp/xsnprintf.c
Copyright: 1995-1998, The Apache Group
License: Apache-1.0
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the Apache Group
for use in the Apache HTTP server project (http://www.apache.org/)."
.
4. The names "Apache Server" and "Apache Group" must not be used to
endorse or promote products derived from this software without
prior written permission.
.
5. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the Apache Group
for use in the Apache HTTP server project (http://www.apache.org/)."
.
THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
Files: src/code/list.h
Copyright: 1991, 1993 The Regents of the University of California
License: BSD-3-clause
Files: src/modules/tm/t_serial.*
Copyright: 2008 Juha Heinanen
License: BSD-2-clause
Files: src/core/parser/sdp/sdp.* src/core/parser/sdp/sdp_helpr_funcs.*
src/core/parser/sdp/sdp_cloner.h
Copyright:
2008-2009 SOMA Networks, INC.
2010 VoIP Embedded, Inc
License: BSD-2-clause
Files: src/modules/tls/fixed_c_zlib.h
Copyright:1998-2005 The OpenSSL Project
Comment: file copied from OpenSSL 0.9.8, refers to OpenSSL License. Note that
this code will not build by default in the Debian packaging.
License: OpenSSL
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
.
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
.
3. All advertising materials mentioning features or use of this
software must display the following acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
.
4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
endorse or promote products derived from this software without
prior written permission. For written permission, please contact
openssl-core@openssl.org.
.
5. Products derived from this software may not be called "OpenSSL"
nor may "OpenSSL" appear in their names without prior written
permission of the OpenSSL Project.
.
6. Redistributions of any form whatsoever must retain the following
acknowledgment:
"This product includes software developed by the OpenSSL Project
for use in the OpenSSL Toolkit (http://www.openssl.org/)"
.
THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
Files: src/core/crypto/md5.* src/core/crypto/md5utils.c
Copyright: 1991-2, RSA Data Security, Inc
Comment: Note that md5.c and md5.h have been replaced in the patches
plum_md5*.patch .
.
As for md5utils.c, according to a mail from Upstream (Daniel-Constantin
Mierla): while the initial commit log for it states that it is derived
from mddriver.c of RFC 1321, it seems that it was, in fact, written from
scratch by Jiri Kuthan (a core developer of SER at that time, working for
FhG Fokus Institute). As you can see it's rather trivial and uses a data
type of SER ("str"). I didn't reimplement it as it's too trivial and
looks like there's no other way to implement it.
License: RSA-MD5
License to copy and use this software is granted provided that it
is identified as the "RSA Data Security, Inc. MD5 Message-Digest
Algorithm" in all material mentioning or referencing this software
or this function.
.
License is also granted to make and use derivative works provided
that such works are identified as "derived from the RSA Data
Security, Inc. MD5 Message-Digest Algorithm" in all material
mentioning or referencing the derived work.
.
RSA Data Security, Inc. makes no representations concerning either
the merchantability of this software or the suitability of this
software for any particular purpose. It is provided "as is"
without express or implied warranty of any kind.
.
These notices must be retained in any copies of any part of this
documentation and/or software.
Files: src/core/mem/dl_*
Copyright: n/a
License: public-domain
This is a version (aka dlmalloc) of malloc/free/realloc written by
Doug Lea and released to the public domain, as explained at
http://creativecommons.org/licenses/publicdomain. Send questions,
comments, complaints, performance data, etc to dl@cs.oswego.edu
Files: src/core/rand/isaac/*
Copyright: n/a
License: public-domain
By Bob Jenkins. My random number generator, ISAAC. Public Domain.
License: ISC
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Files: src/lib/srutils/srjson.*
Copyright: 2009 Dave Gamble
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
,
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
License: GPL-2 + OpenSSL exception
On Debian systems, the full text of the GNU General Public
License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'.
* Exception: permission to copy, modify, propagate, and distribute a work
* formed by combining OpenSSL toolkit software and the code in this file,
* such as linking with software components and libraries released under
* OpenSSL project license.
License: BSD-3-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
4. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
License: BSD-2-clause
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
.
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
.
THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

@ -0,0 +1 @@
kamailio-autheph-modules binary: possible-gpl-code-linked-with-openssl

@ -0,0 +1 @@
kamailio-dnssec-modules binary: possible-gpl-code-linked-with-openssl

@ -0,0 +1 @@
kamailio-outbound-modules binary: possible-gpl-code-linked-with-openssl

@ -0,0 +1 @@
kamailio-secsipid-modules binary: library-not-linked-against-libc

@ -0,0 +1 @@
kamailio-systemd-modules binary: library-not-linked-against-libc

@ -0,0 +1,4 @@
kamailio-tls-modules binary: possible-gpl-code-linked-with-openssl
kamailio-tls-modules binary: library-not-linked-against-libc
# error only on stretch
kamailio-tls-modules binary: embedded-library

@ -0,0 +1 @@
kamailio-websocket-modules binary: possible-gpl-code-linked-with-openssl

@ -0,0 +1,39 @@
Kamailio for Debian
-------------------
* init script check for fork=no
-------------------------------
The Kamailio init script will not start Kamailio on boot if fork=no is
specified in the config file. The check in the initscript will match
any occurrence of fork=no in the file, even inside C-style comments.
You can disable this check in the init script if you wish; just comment
out the calls to the check_fork function in the script. Your changes to
the init script will be preserved upon upgrade, as the file is tagged
as a conffile.
* Kamailio setup
----------------
To set Kamailio up, you need to:
- configure Kamailio properly to suit your needs
- edit /etc/default/kamailio, adjust the MEMORY parameter and set
RUN_KAMAILIO to "yes"
If you are building an HA cluster using heartbeat or similar, you'll want
to disable the init script by running:
update-rc.d kamailio remove
so that Kamailio will not be launched at system startup. You still need
to set RUN_KAMAILIO to "yes" if you want to use the /etc/init.d/kamailio init
script.
Set the DUMP_CORE parameter in /etc/default/kamailio to "yes" if you want to
get a core dump in case Kamailio crashes. The debug symbols for Kamailio are
provided by the kamailio-dbg package.
-- Victor Seva <linuxmaniac@torreviejawireless.org> Wed, 11 Dec 2013 16:07:11 +0100

@ -0,0 +1,36 @@
#
# Kamailio startup options
#
# Set to yes to enable kamailio, once configured properly.
#RUN_KAMAILIO=yes
# User to run as
#USER=kamailio
# Group to run as
#GROUP=kamailio
# On systemd, to change username or group please create drop-in
# /etc/systemd/system/kamailio.service.d/10-user_group.conf file, like
# ```
# [Service]
# User=kamuser
# Group=kamgroup
# ```
# Amount of shared and private memory to allocate
# for the running Kamailio server (in Mb)
#SHM_MEMORY=64
#PKG_MEMORY=8
# Config file
#CFGFILE=/etc/kamailio/kamailio.cfg
# Enable the server to leave a core file when it crashes.
# Set this to 'yes' to enable Kamailio to leave a core file when it crashes
# or 'no' to disable this feature. This option is case sensitive and only
# accepts 'yes' and 'no' and only in lowercase letters.
# On some systems it is necessary to specify a directory for the core files
# to get a dump. Look into the kamailio init file for an example configuration.
#DUMP_CORE=yes

@ -0,0 +1,162 @@
#! /bin/sh
#
### BEGIN INIT INFO
# Provides: kamailio
# Required-Start: $syslog $network $local_fs $remote_fs $time
# Should-Start: $named slapd mysql postgresql snmpd radiusd
# Should-Stop: $named slapd mysql postgresql snmpd radiusd
# Required-Stop: $syslog $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start the Kamailio SIP proxy server
# Description: Start the Kamailio SIP proxy server
### END INIT INFO
. /lib/lsb/init-functions
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/kamailio
NAME=`basename "$0"`
DESC="Kamailio SIP Server"
HOMEDIR=/run/$NAME
PIDFILE=$HOMEDIR/$NAME.pid
DEFAULTS=/etc/default/$NAME
CFGFILE=/etc/$NAME/kamailio.cfg
RUN_KAMAILIO=no
USER=kamailio
GROUP=kamailio
# Amount of shared and private memory to allocate
# for the running Kamailio server (in Mb)
SHM_MEMORY=64
PKG_MEMORY=8
DUMP_CORE=no
# Do not start kamailio if fork=no is set in the config file
# otherwise the boot process will just stop
check_fork ()
{
if grep -q "^[[:space:]]*fork[[:space:]]*=[[:space:]]*no.*" $CFGFILE; then
log_failure_msg "Not starting $DESC: fork=no specified in config file; run /etc/init.d/kamailio debug instead"
exit 0
fi
}
check_kamailio_config ()
{
# Check if kamailio configuration is valid before starting the server
set +e
out=$($DAEMON -f $CFGFILE -M $PKG_MEMORY -c 2>&1 > /dev/null)
retcode=$?
set -e
if [ "$retcode" != '0' ]; then
log_failure_msg "Not starting $DESC: invalid configuration file!"
log_failure_msg
log_failure_msg "$out"
log_failure_msg
exit 1
fi
}
create_radius_seqfile ()
{
# Create a radius sequence file to be used by the radius client if
# radius accounting is enabled. This is needed to avoid any issue
# with the file not being writable if kamailio first starts as user
# root because DUMP_CORE is enabled and creates this file as user
# root and then later it switches back to user kamailio and cannot
# write to the file. If the file exists before kamailio starts, it
# won't change its ownership and will be writable for both root
# and kamailio, no matter what options are chosen at install time
RADIUS_SEQ_FILE="$HOMEDIR/kamailio_radius.seq"
if [ -d $HOMEDIR ]; then
chown ${USER}:${GROUP} $HOMEDIR
if [ ! -f $RADIUS_SEQ_FILE ]; then
touch $RADIUS_SEQ_FILE
fi
chown ${USER}:${GROUP} $RADIUS_SEQ_FILE
chmod 660 $RADIUS_SEQ_FILE
fi
}
test -f $DAEMON || exit 0
# Load startup options if available
if [ -f $DEFAULTS ]; then
. $DEFAULTS || true
fi
if [ "$RUN_KAMAILIO" != "yes" ]; then
log_failure_msg "Kamailio not yet configured. Edit /etc/default/$NAME first."
exit 0
fi
set -e
SHM_MEMORY=$((`echo $SHM_MEMORY | sed -e 's/[^0-9]//g'`))
PKG_MEMORY=$((`echo $PKG_MEMORY | sed -e 's/[^0-9]//g'`))
[ -z "$USER" ] && USER=kamailio
[ -z "$GROUP" ] && GROUP=kamailio
[ $SHM_MEMORY -le 0 ] && SHM_MEMORY=64
[ $PKG_MEMORY -le 0 ] && PKG_MEMORY=4
if test "$DUMP_CORE" = "yes" ; then
# set proper ulimit
ulimit -c unlimited
# directory for the core dump files
# COREDIR=/home/corefiles
# [ -d $COREDIR ] || mkdir $COREDIR
# chmod 777 $COREDIR
# echo "$COREDIR/core.%e.sig%s.%p" > /proc/sys/kernel/core_pattern
fi
# $HOMEDIR can be a tmpfs
if [ ! -d $HOMEDIR ]; then
mkdir -p $HOMEDIR
chown ${USER}:${GROUP} $HOMEDIR
fi
OPTIONS="-f $CFGFILE -P $PIDFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP --atexit=no"
case "$1" in
start|debug)
check_kamailio_config
create_radius_seqfile
if [ "$1" != "debug" ]; then
check_fork
fi
log_daemon_msg "Starting $DESC: $NAME"
start-stop-daemon --start --quiet --pidfile $PIDFILE \
--exec $DAEMON -- $OPTIONS || log_failure_msg " already running"
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping $DESC: $NAME"
start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \
--exec $DAEMON --retry 5
log_end_msg 0
;;
restart|force-reload)
check_kamailio_config
create_radius_seqfile
$0 stop
$0 start
;;
status)
log_daemon_msg "Status of $DESC: "
status_of_proc -p"$PIDFILE" $NAME $NAME
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status|debug}" >&2
exit 1
;;
esac
exit 0

@ -0,0 +1 @@
kamailio binary: example-interpreter-not-absolute *

@ -0,0 +1,23 @@
#! /bin/sh
set -e
case "$1" in
configure)
adduser --quiet --system --group --disabled-password \
--shell /bin/false --gecos "Kamailio SIP Server" \
--home /run/kamailio kamailio || true
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
#DEBHELPER#

@ -0,0 +1,27 @@
[Unit]
Description=Kamailio - the Open Source SIP Server
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=kamailio
Group=kamailio
Environment='CFGFILE=/etc/kamailio/kamailio.cfg'
Environment='SHM_MEMORY=64'
Environment='PKG_MEMORY=8'
EnvironmentFile=-/etc/default/kamailio
EnvironmentFile=-/etc/default/kamailio.d/*
# PIDFile requires a full absolute path
PIDFile=/run/kamailio/kamailio.pid
# ExecStart requires a full absolute path
ExecStart=/usr/sbin/kamailio -P /run/kamailio/kamailio.pid -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY --atexit=no
Restart=on-failure
# /run/kamailio in tmpfs
RuntimeDirectory=kamailio
RuntimeDirectoryMode=0770
# necessary for chown of control files e.g. for jsonrpcs and ctl modules
AmbientCapabilities=CAP_CHOWN
[Install]
WantedBy=multi-user.target

@ -0,0 +1,26 @@
[Unit]
Description=Kamailio - the Open Source SIP Server (instance %i)
Documentation=man:kamailio(8)
Wants=network-online.target
After=network-online.target
[Service]
Type=forking
User=kamailio
Group=kamailio
Environment='CFGFILE=/etc/kamailio/kamailio-%i.cfg'
Environment='SHM_MEMORY=64'
Environment='PKG_MEMORY=8'
EnvironmentFile=-/etc/default/kamailio-%i
EnvironmentFile=-/etc/default/kamailio-%i.d/*
# PIDFile requires a full absolute path
PIDFile=/run/kamailio-%i/kamailio.pid
# ExecStart requires a full absolute path
ExecStart=/usr/sbin/kamailio -P /run/kamailio-%i/kamailio.pid -Y /run/kamailio-%i -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY
Restart=on-failure
# /run/kamailio in tmpfs
RuntimeDirectory=kamailio-%i
RuntimeDirectoryMode=0770
[Install]
WantedBy=multi-user.target

@ -0,0 +1,271 @@
#!/usr/bin/make -f
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/pkg-info.mk
# Enable parallel builds.
NUMJOBS = 1
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
export RADCLI=1
export WOLFSSL_INTERNAL=no
# tlsa
export KTLS_INCLUDE_TLSA=yes
export LIBSSL_STATIC_SRCLIB=yes
export LIBSSL_STATIC_SRCPATH=/usr/$(LIBDIR)
# Modules not in the "main" kamailio package:
EXCLUDED_MODULES =
EXCLUDED_MODULES += mono
EXCLUDED_MODULES += geoip
# Extra modules to skip, because they are not compilable now:
# - regardless if they go to the main kamailio package or to some module
# package, they will be excluded from compile and install of all.
EXTRA_EXCLUDED_MODULES += bdb
EXTRA_EXCLUDED_MODULES += dbtext
EXTRA_EXCLUDED_MODULES += oracle
EXTRA_EXCLUDED_MODULES += pa
EXTRA_EXCLUDED_MODULES += iptrtpproxy
EXTRA_EXCLUDED_MODULES += dnssec
EXTRA_EXCLUDED_MODULES += java
EXTRA_EXCLUDED_MODULES += python
## --EXCLUDED--
# Module groups that are packaged in separate packages (with the name
# kamailio-$(group_name)-modules).
# Note: the order is important (should be in dependency order, the one
# on which other depend first)
PACKAGE_GROUPS += mysql
PACKAGE_GROUPS += postgres
PACKAGE_GROUPS += berkeley
PACKAGE_GROUPS += unixodbc
PACKAGE_GROUPS += radius
PACKAGE_GROUPS += presence
PACKAGE_GROUPS += ldap
PACKAGE_GROUPS += xml
PACKAGE_GROUPS += perl
PACKAGE_GROUPS += utils
PACKAGE_GROUPS += lua
PACKAGE_GROUPS += memcached
PACKAGE_GROUPS += snmpstats
PACKAGE_GROUPS += carrierroute
PACKAGE_GROUPS += xmpp
PACKAGE_GROUPS += cpl
PACKAGE_GROUPS += redis
PACKAGE_GROUPS += geoip2
PACKAGE_GROUPS += sqlite
PACKAGE_GROUPS += json
PACKAGE_GROUPS += ruby
PACKAGE_GROUPS += ims
PACKAGE_GROUPS += sctp
PACKAGE_GROUPS += tls
PACKAGE_GROUPS += outbound
PACKAGE_GROUPS += websocket
PACKAGE_GROUPS += autheph
PACKAGE_GROUPS += kazoo
PACKAGE_GROUPS += cnxcc
PACKAGE_GROUPS += erlang
PACKAGE_GROUPS += systemd
PACKAGE_GROUPS += phonenum
PACKAGE_GROUPS += mongodb
PACKAGE_GROUPS += rabbitmq
PACKAGE_GROUPS += python3
PACKAGE_GROUPS += mqtt
PACKAGE_GROUPS += secsipid
PACKAGE_GROUPS += lwsc
PACKAGE_GROUPS += nats
PACKAGE_GROUPS += tls_wolfssl
PACKAGE_GROUPS += microhttpd
PACKAGE_GROUPS += kafka
# Module groups to be packaged onto kamailio-extra-modules.
EXTRA_GROUPS += ev
EXTRA_GROUPS += gzcompress
EXTRA_GROUPS += jansson
EXTRA_GROUPS += uuid
EXTRA_GROUPS += http_async
.PHONY: skip-modules
skip-modules:
@echo "$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)"
D = $(CURDIR)/debian/$(DEB_SOURCE)
# Name of libdir in the path for libraries (e.g., the multiarch triplet).
export LIBDIR ?= lib/$(DEB_HOST_MULTIARCH)
# Directories with possible duplicate libraries (that should be deleted
# from current module* packages).
DUP_LIBS_DIRS = $(D)/usr/$(LIBDIR)/kamailio \
$(D)-db-modules/usr/$(LIBDIR)/kamailio
# CFLAGS + CPPFLAGS -> CC_EXTRA_OPTS
CC_EXTRA_OPTS := $(shell dpkg-buildflags --get CPPFLAGS)
CC_EXTRA_OPTS += $(shell dpkg-buildflags --get CFLAGS)
CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS)
# LDFLAGS -> LD_EXTRA_OPTS
LD_EXTRA_OPTS := $(shell dpkg-buildflags --get LDFLAGS)
# https://wiki.debian.org/ReproducibleBuilds/
CC_EXTRA_OPTS += -DVERSION_NODATE
BUILD_MODULES := $(addprefix build_, $(PACKAGE_GROUPS) $(EXTRA_GROUPS))
INSTALL_MODULES := $(addprefix install_, $(PACKAGE_GROUPS))
INSTALL_EXTRA := $(addprefix install_, $(EXTRA_GROUPS))
.PHONY: test_build_all $(BUILD_MODULES) $(INSTALL_MODULES) $(INSTALL_EXTRA)
test_build_all: configure
dh_testdir
$(MAKE) all quiet=verbose
$(BUILD_MODULES): test_build_all
$(MAKE) every-module group_include="k$(subst build_,,$@)" quiet=verbose
test_install_all-stamp: build
dh_testdir
dh_testroot
dh_prep
dh_installdirs
$(MAKE) install quiet=verbose LIBDIR=$(LIBDIR) group_include="kstandard"
touch test_install_all-stamp
# tls_wolfssl => tls-wolfssl
$(INSTALL_MODULES): module = $(subst _,-,$(subst install_,,$@))
$(INSTALL_MODULES): grp = $(subst install_,,$@)
$(INSTALL_MODULES): test_install_all-stamp
$(MAKE) install-modules-all \
quiet=verbose \
LIBDIR=$(LIBDIR) \
BASEDIR=$(D)-$(module)-modules \
cfg_prefix=$(D)-$(module)-modules \
doc-dir=share/doc/$(DEB_SOURCE)-$(module)-modules \
group_include="k$(grp)"
# Eliminate duplicate libs.
for d in $(DUP_LIBS_DIRS); do \
test "$$d" != "$(D)-$(module)-modules/usr/$(LIBDIR)/kamailio" && \
for r in `find $$d -name 'lib*' | xargs`; do \
echo "removing $(module) lib `basename $$r` present also in $$d"; \
rm -f $(D)-$(module)-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"`; \
done ; \
done
# clean empty dirs
find $(D)-$(module)-modules -depth -empty -type d -exec rmdir {} \;
$(INSTALL_EXTRA): test_install_all-stamp
$(MAKE) install-modules-all \
quiet=verbose \
LIBDIR=$(LIBDIR) \
BASEDIR=$(D)-extra-modules \
cfg_prefix=$(D)-extra-modules \
doc-dir=share/doc/$(DEB_SOURCE)-extra-modules \
group_include="k$(subst install_,,$@)"
# Eliminate duplicate extra libs.
for d in $(DUP_LIBS_DIRS); do \
test "$$d" != "$(D)-extra-modules/usr/$(LIBDIR)/kamailio" && \
for r in `find $$d -name 'lib*' | xargs`; do \
echo "removing extra lib `basename $$r` present also in $$d"; \
rm -f $(D)-extra-modules/usr/$(LIBDIR)/kamailio/`basename "$$r"`; \
done ; \
done
# clean empty dirs
find $(D)-extra-modules -depth -empty -type d -exec rmdir {} \;
configure: configure-stamp
configure-stamp:
dh_testdir
# Add here commands to configure the package.
$(MAKE) FLAVOUR=kamailio cfg prefix=/usr cfg_prefix=$(D) \
cfg_target=/etc/kamailio/ \
BASEDIR=$(D) \
skip_modules="$(EXCLUDED_MODULES) $(EXTRA_EXCLUDED_MODULES)" \
CC_EXTRA_OPTS="$(CC_EXTRA_OPTS)" \
LD_EXTRA_OPTS="$(LD_EXTRA_OPTS)" \
group_include="kstandard" quiet=verbose
touch configure-stamp
build: build-stamp
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp $(BUILD_MODULES)
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp test_install_all-stamp
# Add here commands to clean up after the build process.
$(MAKE) maintainer-clean
dh_clean
install: build $(INSTALL_MODULES) $(INSTALL_EXTRA)
mv $(D)-berkeley-modules/usr/sbin/kambdb_recover \
$(D)-berkeley-bin/usr/sbin/kambdb_recover
# install /etc/default/kamailio file
mkdir -p $(D)/etc/default
cp -f debian/kamailio.default $(D)/etc/default/kamailio
# delete /run/kamailio dir
rm -rf $(D)/usr/local
# This single target is used to build all the packages, all at once, or
# one at a time. So keep in mind: any options passed to commands here will
# affect _all_ packages. Anything you want to only affect one package
# should be put in another target, such as the install target.
binary-common:
dh_testdir
dh_testroot
dh_installdebconf
dh_installdocs
dh_installexamples -Xobsoleted -Xsr
dh_installmenu
dh_systemd_enable -pkamailio
dh_installinit -pkamailio -- defaults 23
dh_systemd_start -pkamailio
dh_installcron
dh_installman
dh_installinfo
dh_lintian
dh_installchangelogs ChangeLog
dh_link
dh_strip --dbg-package=kamailio-dbg
dh_compress
dh_fixperms
dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
# Build architecture-independent packages using the common target
binary-indep: build install
# (Uncomment this next line if you have such packages.)
# $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
# We have nothing to do by default.
# Build architecture-dependent packages using the common target
binary-arch: build install
$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
# Any other binary targets build just one binary package at a time.
binary-%: build install
$(MAKE) -f debian/rules binary-common DH_OPTIONS=-p$*
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

@ -0,0 +1 @@
kamailio source: debian-watch-file-in-native-package

@ -0,0 +1,3 @@
version=3
opts=dversionmangle=s/\~svn([\d]+)//; \
https://www.kamailio.org/pub/kamailio/([\d.]+)/src/kamailio-([\d.]+)_src\.tar\.gz

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,10 +5,10 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,10 +5,10 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -1,3 +1,9 @@
kamailio (6.0.3) unstable; urgency=medium
* version set 6.0.3
-- Victor Seva <vseva@debian.org> Wed, 10 Sep 2025 09:04:56 +0200
kamailio (6.0.2) unstable; urgency=medium
* version set 6.0.2

@ -5,11 +5,11 @@ Maintainer: Kamailio Admin Group <kadmin.hq@lists.kamailio.org>
Uploaders:
Victor Seva <vseva@debian.org>,
Build-Depends:
bison,
debhelper (>= 9),
dh-systemd (>= 1.5),
docbook-xml,
dpkg-dev (>= 1.16.1.1),
bison,
docbook-xml,
erlang-dev,
flex,
gcj-jdk,

@ -1,5 +1,5 @@
%define name kamailio
%define ver 6.0.2
%define ver 6.0.3
%define rel dev1.0%{dist}
%if 0%{?fedora}

@ -261,7 +261,8 @@ $(NAME): $(extra_objs) # static_modules
core/lex.yy.c: core/cfg.lex core/cfg.tab.h $(ALLDEP)
$(LEX) -o core/lex.yy.c $<
core/cfg.tab.c core/cfg.tab.h: core/cfg.y $(ALLDEP)
core/cfg.tab.c: core/cfg.tab.h
core/cfg.tab.h: core/cfg.y $(ALLDEP)
$(YACC) $(YACC_FLAGS) $<
nullstring=

@ -106,7 +106,7 @@ INSTALL_FLAVOUR=$(FLAVOUR)
# version number
VERSION = 6
PATCHLEVEL = 0
SUBLEVEL = 2
SUBLEVEL = 3
EXTRAVERSION =
# memory manager switcher

@ -2,6 +2,6 @@
* DO NOT EDIT IT
*/
#define REPO_VER "d4dc5d"
#define REPO_HASH "d4dc5d"
#define REPO_VER "5095b7"
#define REPO_HASH "5095b7"
#define REPO_STATE ""

@ -812,6 +812,22 @@ int rewrite_uri(struct sip_msg *_m, str *_s)
return 1;
}
/*
* Reset Request-URI
*/
void reset_uri(sip_msg_t *msg)
{
if(msg->new_uri.s == NULL) {
return;
}
pkg_free(msg->new_uri.s);
msg->new_uri.len = 0;
msg->new_uri.s = 0;
msg->parsed_uri_ok = 0;
ruri_mark_new();
return;
}
/**
* return src ip, port and proto as a SIP uri or proxy address
* - value stored in a static buffer

@ -233,6 +233,8 @@ inline static int get_request_uri(struct sip_msg *_m, str *_u)
int rewrite_uri(struct sip_msg *_m, str *_s);
void reset_uri(sip_msg_t *msg);
/*! \brief
* Set a per-branch flag to 1.
*

@ -930,6 +930,40 @@ int fixup_free_ssi(void **param, int param_no)
}
}
/**
*
*/
int fixup_sis(void **param, int param_no)
{
switch(param_no) {
case 1:
return fixup_spve_null(param, 1);
case 2:
return fixup_igp_null(param, 1);
case 3:
return fixup_spve_null(param, 1);
default:
return E_UNSPEC;
}
}
/**
*
*/
int fixup_free_sis(void **param, int param_no)
{
switch(param_no) {
case 1:
return fixup_free_spve_null(param, 1);
case 2:
return fixup_free_igp_null(param, 1);
case 3:
return fixup_free_spve_null(param, 1);
default:
return E_UNSPEC;
}
}
/**
*
*/

@ -178,6 +178,9 @@ int fixup_free_ssi(void **param, int param_no);
int fixup_sii(void **param, int param_no);
int fixup_free_sii(void **param, int param_no);
int fixup_sis(void **param, int param_no);
int fixup_free_sis(void **param, int param_no);
int fixup_sssi(void **param, int param_no);
int fixup_free_sssi(void **param, int param_no);

@ -629,14 +629,15 @@ static inline int lumps_len(
if(recv_af == AF_INET6) \
new_len += 2; \
} else { \
LM_CRIT("rcv ip - null bind_address\n"); \
LM_CRIT("null bind_address (SUBST_RCV_IP/%p/%p)\n", \
msg->rcv.bind_address, recv_address_str); \
}; \
break; \
case SUBST_RCV_PORT: \
if(STR_WITHVAL(recv_port_str)) { \
new_len += recv_port_str->len; \
} else { \
LM_CRIT(" rcv port - null bind_address\n"); \
LM_CRIT("rcv port - null bind_address (SUBST_RCV_PORT)\n"); \
}; \
break; \
case SUBST_RCV_PROTO: \
@ -666,7 +667,7 @@ static inline int lumps_len(
msg->rcv.bind_address->proto); \
} \
} else { \
LM_CRIT("null bind_address\n"); \
LM_CRIT("null bind_address (SUBST_RCV_PROTO)\n"); \
}; \
break; \
case SUBST_RCV_ALL: \
@ -707,7 +708,7 @@ static inline int lumps_len(
new_len += TRANSPORT_PARAM_LEN + 4; \
break; \
default: \
LM_CRIT("unknown proto %d\n", \
LM_CRIT("unknown proto %d (SUBST_RCV_ALL)\n", \
msg->rcv.bind_address->proto); \
} \
if((subst_l)->u.subst == SUBST_RCV_ALL_EX \
@ -717,7 +718,7 @@ static inline int lumps_len(
} \
RCVCOMP_LUMP_LEN \
} else { \
LM_CRIT("null bind_address\n"); \
LM_CRIT("null bind_address (SUBST_RCV_ALL)\n"); \
}; \
break; \
case SUBST_SND_IP: \
@ -726,14 +727,14 @@ static inline int lumps_len(
if(send_af == AF_INET6 && send_address_str->s[0] != '[') \
new_len += 2; \
} else { \
LM_CRIT("null send_sock\n"); \
LM_CRIT("null send_sock (SUBST_SND_IP)\n"); \
}; \
break; \
case SUBST_SND_PORT: \
if(STR_WITHVAL(send_port_str)) { \
new_len += send_port_str->len; \
} else { \
LM_CRIT("null send sock port\n"); \
LM_CRIT("null send sock port (SUBST_SND_PORT)\n"); \
}; \
break; \
case SUBST_SND_PROTO: \
@ -759,10 +760,11 @@ static inline int lumps_len(
new_len += 4; \
break; \
default: \
LM_CRIT("unknown proto %d\n", send_sock->proto); \
LM_CRIT("unknown proto %d (SUBST_SND_PROTO)\n", \
send_sock->proto); \
} \
} else { \
LM_CRIT("null send_sock\n"); \
LM_CRIT("null send_sock (SUBST_SND_PROTO)\n"); \
}; \
break; \
case SUBST_SND_ALL: \
@ -803,7 +805,8 @@ static inline int lumps_len(
new_len += TRANSPORT_PARAM_LEN + 4; \
break; \
default: \
LM_CRIT("unknown proto %d\n", send_sock->proto); \
LM_CRIT("unknown proto %d (SUBST_SND_ALL)\n", \
send_sock->proto); \
} \
if((subst_l)->u.subst == SUBST_SND_ALL_EX \
&& send_sock->sockname.len > 0) { \
@ -811,7 +814,7 @@ static inline int lumps_len(
} \
SENDCOMP_LUMP_LEN \
} else { \
LM_CRIT("null send_sock\n"); \
LM_CRIT("null send_sock (SUBST_SND_ALL)\n"); \
}; \
break; \
case SUBST_NOP: /* do nothing */ \
@ -2918,7 +2921,7 @@ char *via_builder(unsigned int *len, sip_msg_t *msg,
#endif /* USE_COMP */
int port;
int proto;
struct ip_addr ip;
struct ip_addr ip = {0};
union sockaddr_union *from = NULL;
union sockaddr_union local_addr;
struct tcp_connection *con = NULL;
@ -3064,8 +3067,8 @@ char *via_builder(unsigned int *len, sip_msg_t *msg,
if(con == NULL) {
LM_WARN("TCP/TLS connection (id: %d) for WebSocket could not be "
"found\n",
send_info->id);
"found - likely it is gone (dst: [%s]:%d)\n",
send_info->id, (port) ? ip_addr2a(&ip) : "", port);
pkg_free(line_buf);
return 0;
}

@ -130,7 +130,7 @@ char *parse_first_line(char *buffer, unsigned int len, struct msg_start *fl)
* H-file (this is the value which you will take later in
* processing and define XXX_LEN as length of method name;
* then just call IFISMETHOD( XXX, 'X' ) ... 'X' is the first
* latter; everything must be capitals
* letter; everything must be capitals
*/
else
{

@ -39,7 +39,7 @@
* On alpine linux musl library it is also not defined. There is no
* musl feature test macro, so we look for glibc instead.
*/
#if(defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ < 25) \
#if (defined __GLIBC__ && __GLIBC__ == 2 && __GLIBC_MINOR__ < 25) \
|| !defined __GLIBC__
#ifndef T_OPT
#define T_OPT ns_t_opt
@ -720,8 +720,12 @@ int match_search_list(const struct __res_state *res, char *name)
}
#endif
#ifndef SR_DNS_MAX_QNO
#define SR_DNS_MAX_QNO 10
#endif
#ifndef SR_DNS_MAX_ANO
#define SR_DNS_MAX_ANO 100
#endif
/** gets the DNS records for name:type
* returns a dyn. alloc'ed struct rdata linked list with the parsed responses

@ -40,7 +40,7 @@
#define TCP_CHILD_TIMEOUT \
5 /* after 5 seconds, the child "returns"
* the connection to the tcp maing process */
* the connection to the tcp main process */
#define TCP_MAIN_SELECT_TIMEOUT 5 /* how often "tcp main" checks for timeout*/
#define TCP_CHILD_SELECT_TIMEOUT 2 /* the same as above but for children */

@ -53,7 +53,7 @@
#ifdef USE_SLOW_TIMER
#include <sys/types.h>
typedef unsigned int slow_idx_t; /* type fot the slow index */
typedef unsigned int slow_idx_t; /* type for the slow index */
extern pid_t slow_timer_pid;
#endif

@ -43,7 +43,7 @@
#define S_TO_TICKS(s) ((s)*TIMER_TICKS_HZ)
/** @brief how many s pe per t ticks, integer value */
/** @brief how many seconds per ticks, integer value */
#define TICKS_TO_S(t) ((t) / TIMER_TICKS_HZ)
/** @brief how many ms per t ticks, integer value */

@ -685,7 +685,8 @@ int udp_rcv_loop()
}
if(ksr_msg_recv_max_size <= len) {
LOG(cfg_get(core, core_cfg, corelog),
"read message too large: %d\n", len);
"read message too large: %d (cfg msg recv max size: %d)\n",
len, ksr_msg_recv_max_size);
continue;
}
if(fromaddrlen != (unsigned int)sockaddru_len(bind_address->su)) {

@ -99,6 +99,7 @@ static void cdp_rpc_list_peers(rpc_t *rpc, void *ctx)
rpc->fault(
ctx, 500, "Internal error creating peers container struct");
lock_release(i->lock);
lock_release(peer_list_lock);
return;
}
if(rpc->struct_add(peerdetail_container, "ssL", "State",
@ -109,6 +110,7 @@ static void cdp_rpc_list_peers(rpc_t *rpc, void *ctx)
rpc->fault(ctx, 500,
"Internal error creating peer detail container struct");
lock_release(i->lock);
lock_release(peer_list_lock);
return;
}
if(rpc->struct_add(peerdetail_container, "{", "Applications",
@ -118,6 +120,7 @@ static void cdp_rpc_list_peers(rpc_t *rpc, void *ctx)
"Internal error creating peer application container "
"struct");
lock_release(i->lock);
lock_release(peer_list_lock);
return;
}
@ -130,6 +133,7 @@ static void cdp_rpc_list_peers(rpc_t *rpc, void *ctx)
rpc->fault(ctx, 500,
"Internal error creating appid/vendorid information");
lock_release(i->lock);
lock_release(peer_list_lock);
return;
}
}

@ -152,6 +152,7 @@ static inline void send_mail(struct cpl_cmd *cmd)
LM_ERR("fork failed: %s\n", strerror(errno));
goto error;
} else if(pid == 0) {
_ksr_is_main = 0;
/* child -> close all descriptors excepting pfd[0] */
/* 32 is the maximum number of inherited open file descriptors */
for(i = 3; i < 32; i++)

@ -139,10 +139,6 @@ static int mod_init(void)
}
if(_crypto_register_callid != 0) {
if(crypto_init_callid() < 0) {
LM_ERR("failed to init callid callback\n");
return -1;
}
if(crypto_register_callid_func() < 0) {
LM_ERR("unable to register callid callback\n");
return -1;
@ -166,11 +162,6 @@ static int mod_init(void)
*/
static int child_init(int rank)
{
if(_crypto_register_callid != 0 && crypto_child_init_callid(rank) < 0) {
LM_ERR("failed to register callid callback\n");
return -1;
}
return 0;
}

@ -82,11 +82,20 @@ static inline int crypto_bytes2hex(
/**
* \brief Initialize the Call-ID generator
* - process initialization, permute seed with pid
* \return 0 on success, -1 on error
*/
int crypto_init_callid(void)
static int _crypto_init_callid_done = 0;
static int crypto_init_callid(void)
{
static char crypto_callid_seed_str[2 * SEED_LEN] = {0};
unsigned int pid = my_pid();
if(_crypto_init_callid_done == pid) {
return 0;
}
_crypto_init_callid_done = pid;
if(!(RAND_bytes(crypto_callid_seed, sizeof(crypto_callid_seed)))) {
LOG(L_ERR, "ERROR: Unable to get random bytes for Call-ID seed\n");
return -1;
@ -95,29 +104,13 @@ int crypto_init_callid(void)
crypto_callid_seed, sizeof(crypto_callid_seed));
DBG("Call-ID initialization: '0x%.*s'\n", 2 * SEED_LEN,
crypto_callid_seed_str);
return 0;
}
/**
* \brief Child initialization, permute seed with pid
* \param rank not used
* \return 0 on success, -1 on error
*/
int crypto_child_init_callid(int rank)
{
static char crypto_callid_seed_str[2 * SEED_LEN] = {0};
unsigned int pid = my_pid();
if(SEED_LEN < 2) {
LOG(L_CRIT, "BUG: Call-ID seed is too short\n");
return -1;
}
crypto_callid_seed[0] ^= (pid >> 0) % 0xff;
crypto_callid_seed[1] ^= (pid >> 8) % 0xff;
crypto_bytes2hex(crypto_callid_seed_str, sizeof(crypto_callid_seed_str),
crypto_callid_seed, sizeof(crypto_callid_seed));
DBG("Call-ID initialization: '0x%.*s'\n", 2 * SEED_LEN,
DBG("Call-ID process initialization: '0x%.*s'\n", 2 * SEED_LEN,
crypto_callid_seed_str);
return 0;
}
@ -188,6 +181,13 @@ void crypto_generate_callid(str *callid)
static char crypto_sbuf[UUID_LEN] = {0};
crypto_inc_counter(crypto_callid_counter, CTR_LEN);
if(crypto_init_callid() < 0) {
LM_ERR("cannot initialize the seed\n");
callid->s = NULL;
callid->len = 0;
return;
}
#if OPENSSL_VERSION_NUMBER > 0x030000000L
if((crypto_ctx = EVP_MD_CTX_new()) == NULL) {
LM_ERR("can't get new context\n");

@ -35,21 +35,6 @@
#include "../../core/str.h"
/**
* \brief Initialize the Call-ID generator
* \return 0 on success, -1 on error
*/
int crypto_init_callid(void);
/**
* \brief Child initialization
* \param rank not used
* \return 0 on success, -1 on error
*/
int crypto_child_init_callid(int rank);
/**
* \brief TM API export
*/

@ -5,7 +5,17 @@ add_library(${module_name} SHARED ${MODULE_SOURCES})
# libmongoc-1.0 is required for this module Missing dependency on Ubuntu 20.04
# of libzstd-dev find_package(zstd REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(mongoc REQUIRED IMPORTED_TARGET libmongoc-1.0>=1.7)
add_library(mongoc::mongoc ALIAS PkgConfig::mongoc)
pkg_check_modules(mongoc2 IMPORTED_TARGET mongoc2)
if(mongoc2_FOUND)
add_library(mongoc::mongoc ALIAS PkgConfig::mongoc2)
else()
pkg_check_modules(mongoc IMPORTED_TARGET libmongoc-1.0>=1.7)
if(NOT mongoc_FOUND)
message(FATAL_ERROR "mongoc or mongoc2 not found! Please install libmongoc-dev.")
endif()
add_library(mongoc::mongoc ALIAS PkgConfig::mongoc)
target_compile_definitions(${module_name} PRIVATE HAVE_LIBMONGOC1)
endif()
target_link_libraries(${module_name} PRIVATE mongoc::mongoc)

@ -9,12 +9,17 @@ ifeq ($(CROSS_COMPILE),)
MONGODBC_BUILDER=$(shell \
if pkg-config --exists libmongoc-1.0; then \
echo 'pkg-config libmongoc-1.0'; \
elif pkg-config --exists mongoc2; then \
echo 'pkg-config mongoc2'; \
fi)
endif
ifneq ($(MONGODBC_BUILDER),)
DEFS += $(shell $(MONGODBC_BUILDER) --cflags)
LIBS += $(shell $(MONGODBC_BUILDER) --libs)
ifneq ($(findstring libmongoc-1.0,$(MONGODBC_BUILDER)),)
DEFS += -DHAVE_LIBMONGOC1
endif
else
DEFS += -I$(LOCALBASE)/include
LIBS= -L$(LOCALBASE)/lib -lmongoc

@ -25,8 +25,13 @@
#ifndef _MONGODB_CONNECTION_H_
#define _MONGODB_CONNECTION_H_
#ifdef HAVE_LIBMONGOC1
#include <mongoc.h>
#include <bson.h>
#else
#include <mongoc/mongoc.h>
#include <bson/bson.h>
#endif
#include "../../lib/srdb1/db_pool.h"
#include "../../lib/srdb1/db_id.h"

@ -669,7 +669,7 @@ modparam("dialog", "rr_param", "xyz")
6.4. dlg_flag (integer)
Note: This flag has beed deprecated and not used anyymore. it is not
Note: This flag has beed deprecated and not used anymore. It is not
needed to set this parameter and its corresponding flag for initial
request in case the “dlg_manage()” function is used. In other words,
use “dlg_manage()”.

@ -252,8 +252,8 @@ modparam("dialog", "rr_param", "xyz")
<section id="dialog.p.flag">
<title><varname>dlg_flag</varname> (integer)</title>
<para>
Note: This flag has beed deprecated and not used anyymore.
it is not needed to set this parameter and its corresponding flag
Note: This flag has beed deprecated and not used anymore.
It is not needed to set this parameter and its corresponding flag
for initial request in case the <quote>dlg_manage()</quote> function
is used.
In other words, use <quote>dlg_manage()</quote>.

@ -1205,10 +1205,13 @@ modparam("dispatcher", "ds_interval_mode", 7200)
congestion ms.
See also the description of the 'rweight' attribute in the
'Special Attributes' section.
+ “12” - dispatch to all destination in setid at once (parallel
+ “12” - dispatch to all destinations in setid at once (parallel
forking). Note that the XAVPs are no longer set with the
values of the destination records, no re-routing making sense
in this case.
in this case. A side effect is that marking the one
destination as inactive is not possible if the transaction
fails (which means that all branches failed, or in other
words, all the destinations were not answering the call).
+ “13” - latency optimized dispatching
- The algorithm will load balance using round-robin
prioritizing the gateways with the highest priority.

@ -124,6 +124,7 @@ extern param_t *ds_db_extra_attrs_list;
extern int ds_load_mode;
extern uint32_t ds_dns_mode;
extern int ds_dns_ttl;
extern int ds_event_callback_mode;
static db_func_t ds_dbf;
static db1_con_t *ds_db_handle = NULL;
@ -141,6 +142,7 @@ static int ds_strictest_match = 0;
#define _ds_list (ds_lists[*ds_crt_idx])
#define _ds_list_nr (*ds_list_nr)
void ds_rctx_set_uri(ds_rctx_t *rctx, str *uri);
static void ds_run_route(
struct sip_msg *msg, str *uri, char *route, ds_rctx_t *rctx);
@ -765,7 +767,8 @@ ds_dest_t *add_dest2list(int id, str uri, int flags, int priority, str *attrs,
}
}
LM_DBG("dest [%d/%d] <%.*s>\n", sp->id, sp->nr, dp->uri.len, dp->uri.s);
LM_DBG("dest [%d/%d] <%.*s> (%d %d)\n", sp->id, sp->nr, dp->uri.len,
dp->uri.s, dp->flags, dp->priority);
return dp;
error:
@ -2992,12 +2995,41 @@ error:
return -1;
}
int ds_mark_dst(struct sip_msg *msg, int state)
int ds_mark_addr(sip_msg_t *msg, int state, int group, str *uri, int mode)
{
ds_rctx_t rctx;
int ret;
memset(&rctx, 0, sizeof(ds_rctx_t));
if(msg != NULL) {
if(msg != FAKED_REPLY) {
if(msg->first_line.type == SIP_REPLY) {
rctx.flags |= 1;
rctx.code = (int)msg->first_line.u.reply.statuscode;
rctx.reason = msg->first_line.u.reply.reason;
} else {
rctx.code = 820;
}
} else {
rctx.code = 810;
}
} else {
rctx.code = 800;
}
rctx.setid = group;
ds_rctx_set_uri(&rctx, uri);
ret = ds_update_state(msg, group, uri, state, mode, &rctx);
LM_DBG("state [%d] grp [%d] dst [%.*s]\n", state, group, uri->len, uri->s);
return (ret == 0) ? 1 : -1;
}
int ds_mark_dst_mode(struct sip_msg *msg, int state, int mode)
{
sr_xavp_t *rxavp = NULL;
int group;
int ret;
ds_rctx_t rctx;
if(!(ds_flags & DS_FAILOVER_ON)) {
LM_WARN("failover support disabled\n");
@ -3019,28 +3051,12 @@ int ds_mark_dst(struct sip_msg *msg, int state)
if(rxavp == NULL)
return -1; /* dst addr uri not available */
memset(&rctx, 0, sizeof(ds_rctx_t));
if(msg != NULL) {
if(msg != FAKED_REPLY) {
if(msg->first_line.type == SIP_REPLY) {
rctx.flags |= 1;
rctx.code = (int)msg->first_line.u.reply.statuscode;
rctx.reason = msg->first_line.u.reply.reason;
} else {
rctx.code = 820;
}
} else {
rctx.code = 810;
}
} else {
rctx.code = 800;
}
ret = ds_update_state(msg, group, &rxavp->val.v.s, state, &rctx);
LM_DBG("state [%d] grp [%d] dst [%.*s]\n", state, group, rxavp->val.v.s.len,
rxavp->val.v.s.s);
return ds_mark_addr(msg, state, group, &rxavp->val.v.s, mode);
}
return (ret == 0) ? 1 : -1;
int ds_mark_dst(struct sip_msg *msg, int state)
{
return ds_mark_dst_mode(msg, state, DS_STATE_MODE_SET | DS_STATE_MODE_FUNC);
}
void latency_stats_init(
@ -3318,8 +3334,8 @@ int ds_get_state(int group, str *address)
/**
* Update destionation's state
*/
int ds_update_state(
sip_msg_t *msg, int group, str *address, int state, ds_rctx_t *rctx)
int ds_update_state(sip_msg_t *msg, int group, str *address, int state,
int mode, ds_rctx_t *rctx)
{
int i = 0;
int old_state = 0;
@ -3367,24 +3383,27 @@ int ds_update_state(
}
if(state & DS_TRYING_DST) {
idx->dlist[i].message_count++;
idx->dlist[i].probing_count++;
LM_DBG("destination did not replied %d times, threshold %d\n",
idx->dlist[i].message_count, probing_threshold);
idx->dlist[i].probing_count, probing_threshold);
/* Destination is not replying.. Increasing failure counter */
if(idx->dlist[i].message_count >= probing_threshold) {
/* Destination has too much lost messages.. Bringing it to inactive state */
if((mode & DS_STATE_MODE_SET)
|| (idx->dlist[i].probing_count >= probing_threshold)) {
/* Destination has too many lost messages.. Bringing it to inactive state */
idx->dlist[i].flags &= ~DS_TRYING_DST;
idx->dlist[i].flags |= DS_INACTIVE_DST;
idx->dlist[i].message_count = 0;
idx->dlist[i].probing_count = 0;
LM_DBG("deactivate destination, threshold %d reached\n",
probing_threshold);
}
} else {
if(!(init_state & DS_TRYING_DST)
&& (old_state & DS_INACTIVE_DST)) {
idx->dlist[i].message_count++;
idx->dlist[i].probing_count++;
/* Destination was inactive but it is just replying.. Increasing successful counter */
if(idx->dlist[i].message_count < inactive_threshold) {
if(((mode & DS_STATE_MODE_SET) == 0)
&& (idx->dlist[i].probing_count
< inactive_threshold)) {
/* Destination has not enough successful replies.. Leaving it into inactive state */
idx->dlist[i].flags |= DS_INACTIVE_DST;
/* if destination was in probing state, we stay there for now */
@ -3393,25 +3412,29 @@ int ds_update_state(
}
LM_DBG("destination replied successful %d times, "
"threshold %d\n",
idx->dlist[i].message_count,
idx->dlist[i].probing_count,
inactive_threshold);
} else {
/* Destination has enough replied messages.. Bringing it to active state */
idx->dlist[i].message_count = 0;
idx->dlist[i].probing_count = 0;
LM_DBG("activate destination, threshold %d reached\n",
inactive_threshold);
}
} else {
idx->dlist[i].message_count = 0;
idx->dlist[i].probing_count = 0;
}
}
if(!ds_skip_dst(old_state) && ds_skip_dst(idx->dlist[i].flags)) {
ds_run_route(msg, address, "dispatcher:dst-down", rctx);
if((ds_event_callback_mode == 0)
|| ((mode & DS_STATE_MODE_FUNC) == 0)) {
if(!ds_skip_dst(old_state)
&& ds_skip_dst(idx->dlist[i].flags)) {
ds_run_route(msg, address, "dispatcher:dst-down", rctx);
} else {
if(ds_skip_dst(old_state) && !ds_skip_dst(idx->dlist[i].flags))
} else if(ds_skip_dst(old_state)
&& !ds_skip_dst(idx->dlist[i].flags)) {
ds_run_route(msg, address, "dispatcher:dst-up", rctx);
}
}
if(idx->dlist[i].attrs.rweight > 0)
ds_reinit_rweight_on_state_change(
@ -3431,6 +3454,28 @@ int ds_update_state(
*
*/
static ds_rctx_t *_ds_rctx = NULL;
static char _ds_rctx_buri[MAX_URI_SIZE];
/**
*
*/
void ds_rctx_set_uri(ds_rctx_t *rctx, str *uri)
{
_ds_rctx_buri[0] = '\0';
rctx->uri.s = _ds_rctx_buri;
rctx->uri.len = 0;
if(uri == NULL || uri->s == NULL || uri->len < 0) {
return;
}
if(uri->len >= MAX_URI_SIZE - 1) {
LM_ERR("uri too long: %d\n", uri->len);
return;
}
memcpy(_ds_rctx_buri, uri->s, uri->len);
_ds_rctx_buri[uri->len] = '\0';
rctx->uri.len = uri->len;
return;
}
/**
*
@ -3444,7 +3489,7 @@ static void ds_run_route(sip_msg_t *msg, str *uri, char *route, ds_rctx_t *rctx)
{
int rt, backup_rt;
struct run_act_ctx ctx;
sip_msg_t *fmsg;
sip_msg_t *fmsg = NULL;
sr_kemi_eng_t *keng = NULL;
str evname;
@ -3471,16 +3516,14 @@ static void ds_run_route(sip_msg_t *msg, str *uri, char *route, ds_rctx_t *rctx)
}
}
if(msg == NULL) {
if(faked_msg_init() < 0) {
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
fmsg->parsed_orig_ruri_ok = 0;
fmsg->new_uri = *uri;
} else {
fmsg = msg;
if(faked_msg_init() < 0) {
LM_ERR("faked_msg_init() failed\n");
return;
}
fmsg = faked_msg_next();
if(rewrite_uri(fmsg, uri) < 0) {
LM_ERR("failed to set r-uri\n");
return;
}
if(rt >= 0 || ds_event_callback.len > 0) {
@ -3504,6 +3547,7 @@ static void ds_run_route(sip_msg_t *msg, str *uri, char *route, ds_rctx_t *rctx)
set_route_type(backup_rt);
_ds_rctx = NULL;
}
reset_uri(fmsg);
}
@ -3664,8 +3708,8 @@ void ds_fprint_set(FILE *fout, ds_set_t *node)
else if(node->dlist[j].flags & DS_TRYING_DST) {
fprintf(fout, " Trying");
/* print the tries for this host. */
if(node->dlist[j].message_count > 0) {
fprintf(fout, " (Fail %d/%d)", node->dlist[j].message_count,
if(node->dlist[j].probing_count > 0) {
fprintf(fout, " (Fail %d/%d)", node->dlist[j].probing_count,
probing_threshold);
} else {
fprintf(fout, " ");
@ -4023,6 +4067,8 @@ static void ds_options_callback(
rctx.reason = ps->rpl->first_line.u.reply.reason;
}
}
rctx.setid = group;
ds_rctx_set_uri(&rctx, &uri);
/* Check if in the meantime someone disabled probing of the target
* through RPC or reload */
@ -4044,7 +4090,7 @@ static void ds_options_callback(
/* Check if in the meantime someone disabled the target through RPC */
if(!(ds_get_state(group, &uri) & DS_DISABLED_DST)
&& ds_update_state(fmsg, group, &uri, state, &rctx) != 0) {
&& ds_update_state(fmsg, group, &uri, state, 0, &rctx) != 0) {
LM_ERR("Setting the state failed (%.*s, group %d)\n", uri.len,
uri.s, group);
}
@ -4054,7 +4100,7 @@ static void ds_options_callback(
state |= DS_PROBING_DST;
/* Check if in the meantime someone disabled the target through RPC */
if(!(ds_get_state(group, &uri) & DS_DISABLED_DST)
&& ds_update_state(fmsg, group, &uri, state, &rctx) != 0) {
&& ds_update_state(fmsg, group, &uri, state, 0, &rctx) != 0) {
LM_ERR("Setting the probing state failed (%.*s, group %d)\n",
uri.len, uri.s, group);
}
@ -4177,10 +4223,12 @@ void ds_ping_set(ds_set_t *node)
rctx.code = 500;
rctx.reason.s = "Sending keepalive failed";
rctx.reason.len = 24;
rctx.setid = node->id;
ds_rctx_set_uri(&rctx, &node->dlist[j].uri);
/* check if meantime someone disabled the target via RPC */
if(!(node->dlist[j].flags & DS_DISABLED_DST)
&& ds_update_state(NULL, node->id, &node->dlist[j].uri,
state, &rctx)
state, 0, &rctx)
!= 0) {
LM_ERR("Setting the probing state failed (%.*s, group "
"%d)\n",

@ -85,12 +85,17 @@
#define DS_DNS_MODE_TIMER (1<<2)
#define DS_DNS_MODE_QSRV (1<<3)
#define DS_STATE_MODE_SET 1
#define DS_STATE_MODE_FUNC (1<<1)
/* clang-format on */
typedef struct ds_rctx
{
int flags;
int code;
str reason;
str uri;
int setid;
} ds_rctx_t;
extern str ds_db_url;
@ -154,12 +159,14 @@ int ds_select_dst(struct sip_msg *msg, int set, int alg, int mode);
int ds_update_dst(struct sip_msg *msg, int upos, int mode);
int ds_add_dst(int group, str *address, int flags, int priority, str *attrs);
int ds_remove_dst(int group, str *address);
int ds_update_state(
sip_msg_t *msg, int group, str *address, int state, ds_rctx_t *rctx);
int ds_update_state(sip_msg_t *msg, int group, str *address, int state,
int mode, ds_rctx_t *rctx);
int ds_reinit_state(int group, str *address, int state);
int ds_reinit_state_all(int group, int state);
int ds_reinit_duid_state(int group, str *vduid, int state);
int ds_mark_dst(struct sip_msg *msg, int mode);
int ds_mark_dst(struct sip_msg *msg, int state);
int ds_mark_dst_mode(struct sip_msg *msg, int state, int mode);
int ds_mark_addr(sip_msg_t *msg, int state, int group, str *uri, int mode);
int ds_print_list(FILE *fout);
int ds_log_sets(void);
int ds_list_exist(int set);
@ -248,7 +255,7 @@ typedef struct _ds_dest {
struct ip_addr ip_address; /*!< IP of the address */
unsigned short int port; /*!< port of the URI */
unsigned short int proto; /*!< protocol of the URI */
int message_count;
int probing_count;
struct timeval dnstime;
ds_ocdata_t ocdata; /*!< overload control attributes */
struct _ds_dest *next;

@ -147,6 +147,7 @@ str ds_attrs_pvname = STR_NULL;
pv_spec_t ds_attrs_pv;
str ds_event_callback = STR_NULL;
int ds_event_callback_mode = 0;
str ds_db_extra_attrs = STR_NULL;
param_t *ds_db_extra_attrs_list = NULL;
@ -376,7 +377,20 @@ static int mod_init(void)
LM_ERR("Fail to declare the configuration\n");
return -1;
}
/* if the ping-keepalive-timer is enabled the tm-api needs to be loaded */
if(ds_ping_interval > 0) {
if(load_tm_api(&tmb) == -1) {
LM_ERR("could not load the TM-functions - disable DS ping\n");
return -1;
}
if(ds_timer_mode == 1) {
if(sr_wtimer_add(ds_check_timer, NULL, ds_ping_interval) < 0)
return -1;
} else {
if(register_timer(ds_check_timer, NULL, ds_ping_interval) < 0)
return -1;
}
}
/* Initialize the counter */
ds_ping_reply_codes = (int **)shm_malloc(sizeof(unsigned int *));
if(!(ds_ping_reply_codes)) {
@ -507,26 +521,6 @@ static int mod_init(void)
}
}
/* Only, if the Probing-Timer is enabled the TM-API needs to be loaded: */
if(ds_ping_interval > 0) {
/*****************************************************
* TM-Bindings
*****************************************************/
if(load_tm_api(&tmb) == -1) {
LM_ERR("could not load the TM-functions - disable DS ping\n");
return -1;
}
/*****************************************************
* Register the PING-Timer
*****************************************************/
if(ds_timer_mode == 1) {
if(sr_wtimer_add(ds_check_timer, NULL, ds_ping_interval) < 0)
return -1;
} else {
if(register_timer(ds_check_timer, NULL, ds_ping_interval) < 0)
return -1;
}
}
if(ds_latency_estimator_alpha_i > 0
&& ds_latency_estimator_alpha_i < 1000) {
ds_latency_estimator_alpha = ds_latency_estimator_alpha_i / 1000.0f;
@ -926,7 +920,7 @@ static int ki_ds_mark_dst(sip_msg_t *msg)
if(ds_probing_mode == DS_PROBE_ALL)
state |= DS_PROBING_DST;
return ds_mark_dst(msg, state);
return ds_mark_dst_mode(msg, state, DS_STATE_MODE_SET | DS_STATE_MODE_FUNC);
}
/**
@ -954,7 +948,7 @@ static int ki_ds_mark_dst_state(sip_msg_t *msg, str *sval)
return -1;
}
return ds_mark_dst(msg, state);
return ds_mark_dst_mode(msg, state, DS_STATE_MODE_SET | DS_STATE_MODE_FUNC);
}
/**
@ -1325,6 +1319,13 @@ static int pv_get_dsv(sip_msg_t *msg, pv_param_t *param, pv_value_t *res)
return pv_get_null(msg, param, res);
case 2:
return pv_get_sintval(msg, param, res, rctx->flags);
case 3:
if(rctx->uri.s != NULL && rctx->uri.len > 0) {
return pv_get_strval(msg, param, res, &rctx->uri);
}
return pv_get_null(msg, param, res);
case 4:
return pv_get_sintval(msg, param, res, rctx->setid);
default:
return pv_get_null(msg, param, res);
}
@ -1339,6 +1340,12 @@ static int pv_parse_dsv(pv_spec_p sp, str *in)
return -1;
switch(in->len) {
case 3:
if(strncmp(in->s, "uri", 3) == 0)
sp->pvp.pvn.u.isname.name.n = 3;
else
goto error;
break;
case 4:
if(strncmp(in->s, "code", 4) == 0)
sp->pvp.pvn.u.isname.name.n = 0;
@ -1348,6 +1355,10 @@ static int pv_parse_dsv(pv_spec_p sp, str *in)
case 5:
if(strncmp(in->s, "flags", 5) == 0)
sp->pvp.pvn.u.isname.name.n = 2;
else if(strncmp(in->s, "setid", 5) == 0)
sp->pvp.pvn.u.isname.name.n = 4;
else if(strncmp(in->s, "group", 5) == 0)
sp->pvp.pvn.u.isname.name.n = 4;
else
goto error;
break;
@ -1982,12 +1993,13 @@ int ds_rpc_print_set(
rpc->fault(ctx, 500, "Internal error creating dest struct");
return -1;
}
if(rpc->struct_add(wh, "SSdddSSSjj", "BODY",
if(rpc->struct_add(wh, "SSddddSSSjj", "BODY",
&(node->dlist[j].attrs.body), "DUID",
(node->dlist[j].attrs.duid.s)
? &(node->dlist[j].attrs.duid)
: &data,
"MAXLOAD", node->dlist[j].attrs.maxload, "WEIGHT",
"PROBING_COUNT", node->dlist[j].probing_count, "MAXLOAD",
node->dlist[j].attrs.maxload, "WEIGHT",
node->dlist[j].attrs.weight, "RWEIGHT",
node->dlist[j].attrs.rweight, "SOCKET",
(node->dlist[j].attrs.socket.s)

@ -1375,10 +1375,13 @@ modparam("dispatcher", "ds_interval_mode", 7200)
</listitem>
<listitem>
<para>
<quote>12</quote> - dispatch to all destination in setid at
<quote>12</quote> - dispatch to all destinations in setid at
once (parallel forking). Note that the XAVPs are no longer set
with the values of the destination records, no re-routing
making sense in this case.
making sense in this case. A side effect is that marking the
one destination as inactive is not possible if the transaction fails
(which means that all branches failed, or in other words, all the
destinations were not answering the call).
</para>
</listitem>
<listitem>

@ -184,6 +184,14 @@ int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
} else {
LM_DBG("Changing action from %s to %s\n", whatstr[cell->action],
whatstr[what]);
if(cell->action == CURL_POLL_IN && what == CURL_POLL_OUT) {
if(cell->reply) {
if(cell->reply->result)
shm_free(cell->reply->result);
shm_free(cell->reply);
cell->reply = NULL;
}
}
setsock(cell, s, e, what);
}
}

@ -479,7 +479,7 @@ done:
adi_list = 0;
}
LM_DBG("DBG:UAR Async CDP callback: ... Done resuming transaction\n");
LM_DBG("DBG:MAR Async CDP callback: ... Done resuming transaction\n");
set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI, &t->uri_avps_from);
set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI, &t->uri_avps_to);
set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER, &t->user_avps_from);
@ -493,7 +493,7 @@ done:
//del_nonshm_lump_rpl(&req->reply_lump);
tmb.unref_cell(t);
}
tmb.t_continue(data->tindex, data->tlabel, data->act);
tmb.t_continue_skip_timer(data->tindex, data->tlabel, data->act);
free_saved_transaction_data(data);
return;
@ -504,7 +504,7 @@ error:
//del_nonshm_lump_rpl(&t->uas.request->reply_lump);
tmb.unref_cell(t);
}
tmb.t_continue(data->tindex, data->tlabel, data->act);
tmb.t_continue_skip_timer(data->tindex, data->tlabel, data->act);
error1:
free_saved_transaction_data(data);

@ -871,6 +871,7 @@ void dlg_onroute(struct sip_msg *req, str *route_params, void *param)
dlg_cell_t *dlg;
dlg_iuid_t *iuid;
str val, callid, ftag, ttag;
str *tag = NULL;
int h_entry, h_id, new_state, old_state, unref, event, timeout;
unsigned int dir;
int ret = 0;
@ -1143,7 +1144,12 @@ void dlg_onroute(struct sip_msg *req, str *route_params, void *param)
|| new_state == DLG_STATE_EARLY)) {
if(event != DLG_EVENT_REQACK) {
if(update_cseqs(dlg, req, dir, &ttag) != 0) {
if(dir == DLG_DIR_UPSTREAM) {
tag = &ftag;
} else {
tag = &ttag;
}
if(update_cseqs(dlg, req, dir, tag) != 0) {
LM_ERR("cseqs update failed\n");
} else {
dlg->dflags |= DLG_FLAG_CHANGED;

@ -265,6 +265,7 @@ int cxdx_send_lir(struct sip_msg *msg, str public_identity,
AAAMessage *lir = 0;
AAASession *session = 0;
int ret = -1;
session = cdpb.AAACreateSession(0);
@ -287,12 +288,16 @@ int cxdx_send_lir(struct sip_msg *msg, str public_identity,
goto error1;
if(cxdx_forced_peer.len)
cdpb.AAASendMessageToPeer(lir, &cxdx_forced_peer,
ret = cdpb.AAASendMessageToPeer(lir, &cxdx_forced_peer,
(void *)async_cdp_lir_callback, (void *)transaction_data);
else
cdpb.AAASendMessage(
ret = cdpb.AAASendMessage(
lir, (void *)async_cdp_lir_callback, (void *)transaction_data);
if(ret != 1) {
LM_DBG("Error sending async diameter (%d)\n", ret);
return -1;
}
LM_DBG("Successfully sent async diameter\n");
return 0;

@ -302,6 +302,7 @@ int cxdx_send_uar(struct sip_msg *msg, str private_identity,
{
AAAMessage *uar = 0;
AAASession *session = 0;
int ret = -1;
session = cdpb.AAACreateSession(0);
@ -334,12 +335,16 @@ int cxdx_send_uar(struct sip_msg *msg, str private_identity,
goto error1;
if(cxdx_forced_peer.len)
cdpb.AAASendMessageToPeer(uar, &cxdx_forced_peer,
ret = cdpb.AAASendMessageToPeer(uar, &cxdx_forced_peer,
(void *)async_cdp_uar_callback, (void *)transaction_data);
else
cdpb.AAASendMessage(
ret = cdpb.AAASendMessage(
uar, (void *)async_cdp_uar_callback, (void *)transaction_data);
if(ret != 1) {
LM_DBG("Error sending async diameter (%d)\n", ret);
return -1;
}
LM_DBG("Successfully sent async diameter\n");
return 0;

@ -622,7 +622,7 @@ int cscf_reply_transactional_async(
* @returns the tmb.t_reply() result
*/
void ims_icscf_timer_routine()
void ims_icscf_timer_routine(unsigned int ticks, void *param)
{
//run through scscf_list and decide if they should be removed!
scscf_list *l, *tmp;

@ -179,6 +179,6 @@ int cscf_reply_transactional_async(
* @returns the tmb.t_reply() result
*/
void ims_icscf_timer_routine();
void ims_icscf_timer_routine(unsigned int ticks, void *param);
#endif

@ -69,6 +69,7 @@ extern ip_addr_t ipsec_listen_ip_addr6;
extern int spi_id_start;
extern atomic_t *ipsec_reconfig_flag;
extern unsigned int ipsec_init_flag;
// check http://www.asipto.com/pub/kamailio-devel-guide/#c16return_values
@ -1375,15 +1376,25 @@ cleanup:
int ipsec_reconfig()
{
int ret;
if(ul.get_number_of_contacts() != 0) {
return 0;
}
if(atomic_get(ipsec_reconfig_flag) != 0) {
LM_DBG("reconfig already called\n");
return 0;
}
atomic_set(ipsec_reconfig_flag, 1);
if(clean_spi_list() != 0) {
return 1;
}
return ipsec_cleanall();
ret = ipsec_cleanall();
atomic_set(ipsec_reconfig_flag, 0);
return ret;
}
int ipsec_cleanall()

@ -24,6 +24,7 @@
*
*/
#include "../../core/atomic_ops.h"
#include "../../core/sr_module.h"
#include "../../core/mod_fix.h"
#include "../../modules/tm/tm_load.h"
@ -75,6 +76,7 @@ static int unregister_fixup_free(void **param, int param_no);
extern int bind_ipsec_pcscf(usrloc_api_t *api);
unsigned int ipsec_init_flag = 0;
atomic_t *ipsec_reconfig_flag = NULL;
/* clang-format off */
@ -407,6 +409,11 @@ static int mod_init(void)
return -1;
}
if((ipsec_reconfig_flag = shm_malloc(sizeof(atomic_t))) == NULL) {
SHM_MEM_ERROR;
return -1;
}
atomic_set(ipsec_reconfig_flag, 0);
ipsec_init_flag = 1;
return 0;
@ -421,6 +428,10 @@ static void mod_destroy(void)
if(destroy_spi_gen() != 0) {
LM_ERR("Error destroying spi generator\n");
}
if(ipsec_reconfig_flag) {
shm_free(ipsec_reconfig_flag);
}
}
static int child_init(int rank)

@ -168,7 +168,7 @@ int build_p_associated_uri(ims_subscription *s)
if(!p_associated_uri.buf) {
p_associated_uri.data_len = 0;
p_associated_uri.buf_len = 0;
LM_ERR("no pkg memory left\n");
PKG_MEM_ERROR;
return -1;
} else {
p_associated_uri.buf_len = p_associated_uri.data_len;
@ -200,8 +200,8 @@ int build_p_associated_uri(ims_subscription *s)
&& strncmp(id->public_identity.s, "tel", 3) == 0) {
if(cnttel != 0 || cnt != 0) {
memcpy(p, ", ", 2);
p += 2;
memcpy(p, ">, <", 4);
p += 4;
}
memcpy(p, id->public_identity.s, id->public_identity.len);
p += id->public_identity.len;
@ -384,8 +384,7 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
str b = {0, 0};
uac_req_t req;
LM_DBG("r_send_third_party_reg: REGISTER to <%.*s>\n", r->req_uri.len,
r->req_uri.s);
LM_DBG("REGISTER to <%.*s>\n", r->req_uri.len, r->req_uri.s);
h.len = event_hdr.len + max_fwds_hdr.len;
h.len += expires_s.len + 12 + expires_e.len;
@ -432,7 +431,7 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
h.s = pkg_malloc(h.len);
if(!h.s) {
LM_ERR("r_send_third_party_reg: Error allocating %d bytes\n", h.len);
PKG_MEM_ERROR;
h.len = 0;
return 0;
}
@ -485,13 +484,12 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
LM_DBG("BODY TYPE(3rd PARTY REGISTER):<%d>\n", r->body.content_type);
if(r->body.content_type != CT_NONE) {
if(r->body.content_type == CT_SERVICE_INFO) {
LM_ERR("BODY (3rd PARTY REGISTER) \"SI\": <%.*s>\n",
LM_DBG("BODY (3rd PARTY REGISTER) \"SI\": <%.*s>\n",
r->body.content.len, r->body.content.s);
b.len = body_s.len + r->body.content.len + body_e.len;
b.s = pkg_malloc(b.len);
if(!b.s) {
LM_ERR("r_send_third_party_reg: Error allocating %d bytes\n",
b.len);
PKG_MEM_ERROR;
b.len = 0;
goto error;
}
@ -503,13 +501,12 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
STR_APPEND(h, ct_service_info);
STR_APPEND(h, content_type_e);
} else if(r->body.content_type == CT_REGISTER_REQ) {
LM_ERR("BODY (3rd PARTY REGISTER) \"REQ\": <%.*s>\n",
LM_DBG("BODY (3rd PARTY REGISTER) \"REQ\": <%.*s>\n",
r->body.content.len, r->body.content.s);
b.len = r->body.content.len;
b.s = pkg_malloc(b.len);
if(!b.s) {
LM_ERR("r_send_third_party_reg: Error allocating %d bytes\n",
b.len);
PKG_MEM_ERROR;
b.len = 0;
goto error;
}
@ -519,13 +516,12 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
STR_APPEND(h, ct_register_req);
STR_APPEND(h, content_type_e);
} else if(r->body.content_type == CT_REGISTER_RESP) {
LM_ERR("BODY (3rd PARTY REGISTER) \"RESP\": <%.*s>\n",
LM_DBG("BODY (3rd PARTY REGISTER) \"RESP\": <%.*s>\n",
r->body.content.len, r->body.content.s);
b.len = r->body.content.len;
b.s = pkg_malloc(b.len);
if(!b.s) {
LM_ERR("r_send_third_party_reg: Error allocating %d bytes\n",
b.len);
PKG_MEM_ERROR;
b.len = 0;
goto error;
}
@ -541,7 +537,7 @@ int r_send_third_party_reg(r_third_party_registration *r, int expires)
TMCB_RESPONSE_IN | TMCB_ON_FAILURE | TMCB_LOCAL_COMPLETED,
r_third_party_reg_response, &(r->req_uri));
if(isc_tmb.t_request(&req, &(r->req_uri), &(r->to), &(r->from), 0) < 0) {
LM_ERR("r_send_third_party_reg: Error sending in transaction\n");
LM_ERR("Error sending in transaction\n");
goto error;
}
if(h.s)
@ -568,9 +564,9 @@ error:
void r_third_party_reg_response(
struct cell *t, int type, struct tmcb_params *ps)
{
LM_DBG("r_third_party_reg_response: code %d\n", ps->code);
LM_DBG("code %d\n", ps->code);
if(!ps->rpl) {
LM_ERR("r_third_party_reg_response: No reply\n");
LM_ERR("No reply\n");
return;
}
@ -581,6 +577,6 @@ void r_third_party_reg_response(
return;
} else if(ps->code == 404) {
} else {
LM_DBG("r_third_party_reg_response: code %d\n", ps->code);
LM_DBG("code %d\n", ps->code);
}
}

@ -37,7 +37,7 @@ extern db_func_t ul_dbf;
#define IMPU_CONTACT_TABLE "impu_contact"
/*subscriber table*/
#define SUBSCRIBER_TABLE "subscriber"
#define SUBSCRIBER_TABLE "subscriber_scscf"
#define SUB_EVENT_COL "event"
#define SUB_EXPIRES_COL "expires"
#define SUB_VERSION_COL "version"

@ -281,9 +281,13 @@ static void rpc_pkg_info(rpc_t *rpc, void *ctx)
/**
*
*/
/* clang-format off */
rpc_export_t kex_pkg_rpc[] = {
{"pkg.stats", rpc_pkg_stats, rpc_pkg_stats_doc, RET_ARRAY},
{"pkg.info", rpc_pkg_info, rpc_pkg_info_doc, 0}, {0, 0, 0, 0}};
{"pkg.stats", rpc_pkg_stats, rpc_pkg_stats_doc, RET_ARRAY},
{"pkg.info", rpc_pkg_info, rpc_pkg_info_doc, 0},
{0, 0, 0, 0}
};
/* clang-format on */
/**
*

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save