=========================== Release 3.4.10 ============================== 2024-12-18 Razvan Crainea * [902f20532] : b2b_logic: make retry list NULL terminated (cherry picked from commit 8a547bdd6c35e8af17afed6bd54a1d49e75ec043) 2024-12-17 Bogdan-Andrei Iancu * [ae38e5cf6] : [sipmsgops] Fix messing up the max-fwd parsed value upon msg validation For more details, see #3511 for the details. Alternativ fix/workaround to #3511 (cherry picked from commit f1e3750a83dc606f96100baaaccc555e6a923ca7) 2024-12-17 Bogdan-Andrei Iancu * [40c2e94ef] : [dns_cache] Fix restoring IP array in hostend struct When restoring (from cache) a hostend structure, be sure you end the "aliases" and "addresses" arrays with a NULL element. Without that NULL terminator, when doing DNS-based failover on a cached hostend, OpenSIPS will use garbage IPs from the addresses array. (cherry picked from commit 7d31fef29eefca30a8b8be668eebf1694e4df4a5) 2024-12-16 Bogdan Andrei IANCU * [1f3bb9d94] : Merge pull request #3480 from ar45/fix-maxfwds [maxfwd]: Fix bug `is_maxfwd_lt` function limit value (cherry picked from commit e6a0c98e829eef5c62ff7507fb6afc0cd0b98d14) 2024-12-15 OpenSIPS * [d72113280] : Rebuild documentation 2024-12-10 Liviu Chircu * [2ab7e9e5c] : json: Fix handling for long integers This patch adds the "enable_long_quoting" modparam (default: OFF), which causes larger integers to be returned as strings, in order to avoid the integer overflow and data loss. (cherry picked from commit b191025b75afb07b96562f730a8e9631c8ea35fa) Author: Vlad Paiu Add support for bigints ( store as string when exposing to opensips script ) (cherry picked from commit f324a1a432b02137cab73978fe5df5e11005d938) Author: Vlad Paiu Fixed undefined int_value (cherry picked from commit ae113c7271ef0a5baa4674972d3b713ac6def6c7) (cherry picked from commit c1b23178a3a0535ee66bafcd36a0c3df8cdab3c3) 2024-12-08 OpenSIPS * [3e10b12ff] : Rebuild documentation 2024-12-04 Liviu Chircu * [7cd555003] : clusterer: Add some dev debugging logs (cherry picked from commit 5eae5fb1580feb512cc9a065c558a72d85405afb) 2024-12-04 Liviu Chircu * [b1038d4a2] : clusterer: Fix a subtle subtraction bug The "--node->no_ping_retries" operation is bogus, because that field is only written during DB reload, or when dynamically learning a new node. This can lead to the following state, where a node's link flips between ON/OFF on each ping attempt: [Nov 29 20:23:15] INFO:clusterer:do_action_trans_2: Ping reply not received, node [2] is down [Nov 29 20:23:15] INFO:clusterer:handle_pong: Node [2] is UP [Nov 29 20:23:42] INFO:clusterer:do_action_trans_2: Ping reply not received, node [2] is down [Nov 29 20:23:42] INFO:clusterer:handle_pong: Node [2] is UP [Nov 29 20:24:30] INFO:clusterer:do_action_trans_2: Ping reply not received, node [2] is down [Nov 29 20:24:30] INFO:clusterer:handle_pong: Node [2] is UP (cherry picked from commit 02c4d14d79ff6cfd76b4220cdece80c0853e4e1f) 2024-12-04 Liviu Chircu * [aa1aa937e] : usrloc HA: Improve management for replicated "labels" This patch aims to fix the occasional "differring rlabels" debugging error messages which may occur after a restart in usrloc HA scenarios, especially if the active SIP box is restarted while processing REGISTER requests in parallel. Since both record and contact labels are dynamic, per-instance and lost on restart, conflicts are to be expected. The idea behind the fix is to simply adapt the replicated contact_id to the local instance, thus preferring the local labels to the remote labels whenever detecting conflict. (cherry picked from commit 90a00795b1d0685394818c4a69c235f487389878) 2024-12-04 Liviu Chircu * [223d89a6b] : clusterer: Fix links going down during sync; Optimize pinging This patch makes it so *any* succesfully sent BIN packet is also considered a Ping (for sender) and Pong (for receiver). This helps improve the stability of the inter-node links, which will no longer go down during a lengthy sync operation (e.g. 50K+ registered phones, which take a few seconds to sync, and which would also significantly delay any Ping/Pong packets happening to be queued up on that same TCP stream). Moreover, thanks to the "last ping" timestamp updates during regular BIN replication mentioned above, the clusterer pinging timer will now only generate Ping packets during idle times (no BIN traffic produced). (cherry picked from commit 7d74f3dc6233cf0cd6ad517a2329b837e2bac8bb) 2024-12-04 Razvan Crainea * [ca35a937b] : b2b_logic: do not discard BYEs of active entities Completes/fixes ce19c70ec. Many thanks go to Norm Brandinger for reporting and testing it! (cherry picked from commit 8631e9835bef7bfdee9fac1c618096cd462e4ac3) 2024-12-03 Liviu Chircu * [518380f6f] : proto_bin: Bump 'bin_async_max_postponed_chunks' 32 -> 1024 The default of 32 chunks was too low, considering that BIN TCP conns are very low in count (often a handful of nodes!), while also transporting large volums of data within short periods of time (e.g. dialog/usrloc syncs), so async data buffering may often occur. (cherry picked from commit 1f17e3076e6946bcc54e6c627299bee60cf4210b) 2024-11-24 OpenSIPS * [175743ca1] : Rebuild documentation 2024-11-21 Liviu Chircu * [b5c1bb232] : Merge pull request #3519 from vladpaiu/troubleshoot_redis_issue Fix Cluster Master-Slave detection 2024-11-21 Vlad Paiu * [9fed325f4] : cachedb_redis: Fix Cluster Master-Slave detection; Add dbg logs 2024-11-20 Liviu Chircu * [6bf24a3ea] : Fix more logs exposing URL passwords Continuation of ed74875df6 (cherry picked from commit 1370ed710955ffef4f3e34c715f60821ce886da6) 2024-11-19 Liviu Chircu * [b3c7f70aa] : nathelper: Improve docs on fix_nated_register() and received_avp (cherry picked from commit 526b538cba8058f0829c21110597d82718d6bab4) 2024-11-19 Liviu Chircu * [9bd311bfc] : dialog: Do not crash with previous table version (11) This patch ensures OpenSIPS doesn't crash if the "dialog.script_flags" column is still of INT type (previous DB schema, before OpenSIPS 3.4). (cherry picked from commit a1b273828f3b20e1b99f9c8185d5a7bf78504d50) 2024-11-17 OpenSIPS * [448fdf959] : Rebuild documentation 2024-11-15 Gang Zhuo * [d2bd39139] : db_oracle: fix "invalid parameter value" error when do sql_query("update ...") (cherry picked from commit b5133bde0020740185e2c8c459b3b73f58623f65) 2024-11-15 Gang Zhuo * [19c7631b6] : usrloc: fix build error when ORACLE_USRLOC flag is present (cherry picked from commit 1f998239078fd5a0a067f6c56b83c3c2f4cce40f) 2024-11-15 Liviu Chircu * [e7fcb8a01] : event_routing: Clean up convoluted looping logic (cherry picked from commit a9e8b9203f405fcefda8670e7b9bbe7d0a504bab) 2024-11-15 Vlad Paiu * [1ba9ebe74] : go to the next sub on continue (cherry picked from commit 6ef166a4b1e09bdf6f535c15ed57ca62fcaab436) 2024-11-12 Bogdan-Andrei Iancu * [f17c60f79] : [drouting] do not report error if replicated flags are the same Avoid reporting error if the GW/Carrier replicated package does not change the existing status flags. (cherry picked from commit 36b916a7e1333c7f539dcc25c93ba8c143d8016f) 2024-10-27 OpenSIPS * [653361b19] : Rebuild documentation 2024-10-24 Liviu Chircu * [d6ad7687b] : clusterer sync: Fix several SHM leaks on error cases (Donor side) (cherry picked from commit 101396a59c23f91bc821c36b9bc1bd2e5daa1d35) 2024-10-24 Liviu Chircu * [8d6cd3740] : clusterer: Fix sync edge-case causing SHM accumulation This patch fixes a specific sync sequence leading to indefinite accumulation of BIN packets and SHM exhaustion, as follows: 1) Sync Receiver node times out the sync in sync_check_timer() (default timeout is 5s, by no means difficult to achieve) 2) Sync Donor continues to send SYNC packets (on Receiver side, cap state is updated: PROGRESSING) 3) ! Sync Donor node loses link-state mid-sync, due to the pings being on the same TCP connection (and delayed, way in the back) 4) Sync Donor fails & drops remaining SYNC + SYNC-END packets, as link is down. Due to this, the handle_sync_end(!is_timeout) procedure is never ran on the Receiver, so the PROGRESSING flag is never removed -> indefinite SHM buffering / memory leak Thanks to Răzvan Crainea for helping with code & troubleshooting here! (cherry picked from commit e5b2317ca9e9f33baef29205ecd792d8a5d5d2ed) 2024-10-24 Razvan Crainea * [fe9fac9d7] : b2b_logic: a BYE for a disconnected entity should not influence the call (cherry picked from commit 49ba1c37bfcd8dbc265c19c45895b3eee767b561) 2024-10-24 Razvan Crainea * [817adea7c] : b2b_logic: always terminate a bridge initiator Before this commit, only if the `notify` flag was used, the entity would have been deleted. (cherry picked from commit aff2d963126f097411753d699239bc938479c892) 2024-10-24 Razvan Crainea * [61c8ec659] : b2b_logic: do not discard a recognized cross-BYE (cherry picked from commit ce19c70ec7ca6cd6a7a12347a5acc0a282432c50) 2024-10-24 Razvan Crainea * [717940a01] : b2b_entities: always unref a transaction created programatically Ensure transactions do not leak by creating/replying them and not unreffing when callback exits SCB_DROP_MSG (cherry picked from commit 8b36f4cd6da33b26a8e2ce2bccf5cb075f2f1d04) 2024-10-24 Razvan Crainea * [06724800b] : dialog: accurate match of outgoing legs The initial code assumes that for each transaction branch, we serially create a dialog leg - therefore, when a reply is received for a specific branch, we match the leg based on its index. This logic breaks when having a branch that has no outgoing leg/message (i.e. when push notification is used), because the dialog legs id gets offsetted by the number of "blind" branches, thus we are no longer able to properly match the reply with the leg. This fix makes sure that when creating a let, it has the same index as the transaction's branch id, hence the reply is properly matched. (cherry picked from commit 5280c86a100ad9414e9beeca620648d8388bab42) 2024-10-24 Vlad Paiu * [e629e20af] : Only update the TM UAS if we are in request context and are not running on top of a fake req (cherry picked from commit 2031348d0c44da7b077b3a083973d3b525044b11) =========================== Release 3.4.9 ============================== 2024-10-23 Bogdan-Andrei Iancu * [94184a296] : [clusterer] Fix error handling when failing to load nodes On failing to add a node (to the cluster), continue, as time as that node is not the current node. And if giving up on whole cluster info loading, be sure we clean up and properly report this to the above layer - the last thing we should do is to report success (on load) but have partial, unconsistent data. Fixes #3473 (cherry picked from commit 784e1a4cc52be74c0a2e9706e74794c4ea5940cf) 2024-10-22 Liviu Chircu * [8392a70aa] : clusterer: Prevent startup delays from causing aborted syncs This patch makes it so the 'seed_fallback_interval' modparam time-counting is done in a way that *ignores* any random startup delays (e.g. mod init stuff which may take time such as loading drouting, dispatcher, rtpproxy, etc.). Previously, the effect of this issue was that some modules (e.g. usrloc) would randomly *not* sync data on startup, depending if the startup delay happened to be lesser or greater than the 'seed_fallback_interval'. (cherry picked from commit 928727410a63fa137f48aa8a77492c3c7b14b460) 2024-10-22 Liviu Chircu * [eeddfcc85] : clusterer: Add/Improve some important logs during startup sync (cherry picked from commit 2bf1bdcf5c087f16c21c99101738ed52ad8741c1) 2024-10-22 Liviu Chircu * [f423f90ec] : clusterer: Fix potential AB/BA sync deadlock on DONOR nodes This deadlock was reproduced with usrloc, but may also affect other sync-based modules, as follows: ---- sync DONOR node ---- 1) [sync send Worker-1] grabs (A) cluster lock, then (B) usrloc hash lock while building/sending the sync packets 2) [handle SIP REGISTER Worker-2] grabs (B) usrloc hash lock, then (A) cluster lock when replicating data with cl_api.send_all() This patch converts the "A+B" sequence in 1) into a "B,A" sequence. (cherry picked from commit d89f1703f60aaaa2d6cca23aab191e5671dc0c83) 2024-10-20 OpenSIPS * [0a9931075] : Rebuild documentation 2024-10-18 Bogdan Andrei IANCU * [b793fdeac] : Merge pull request #3497 from sippy/pr_fix_3495 python: Validate script_name a bit more carefully. (cherry picked from commit e9f9e8e8c298f6aa1f1d6cdad2ba50c2d4827d8d) 2024-10-17 Razvan Crainea * [ec2ccb850] : load_balancer: open db connection from every process This ensures that the `mi("lb_reload")` command runs properly from whatever process the job is dispatched from. Many thanks to Antonis Psaras (@apsaras on GitHub) for reporting it. Close #3488 (cherry picked from commit 3df04c7c6cc21999119a02301be316a605f06036) 2024-10-13 OpenSIPS * [bcbfaf83a] : Rebuild documentation 2024-10-09 Bogdan-Andrei Iancu * [0c060fb2d] : [ldap] fix error handling when no available conn Do not try to release/free a conn if we do not have one (cherry picked from commit 27acf2a08be0b60f5a6675c8b44fb65a4cab0a7b) 2024-10-08 Razvan Crainea * [2aac7fe07] : media_exchange: handle faked replies for re-INVITEs Fix possible crash when a faked reply is received for re-INVITEs (cherry picked from commit a70f7159773cb86dde220d4c851f49de83f73802) 2024-10-06 OpenSIPS * [1ebff082c] : Rebuild documentation 2024-10-03 Liviu Chircu * [7919e3222] : uac_auth(): Fix corner-case with missing "algorithm=" in 401 Make sure to convert ALG_UNSPEC to ALG_MD5 before doing the bitmask conversion, as otherwise the matching will fail! (cherry picked from commit 42fa1db32a259818495282a4eeaa1ae08087d9d3) 2024-10-03 Razvan Crainea * [f078fe057] : dialog: fix compile error in previous commit 2024-10-03 Razvan Crainea * [9c0f5b034] : dialog: update SDP on ACK as well in case of lage negotiation, we need to update the SDP in dialog as well, otherwise pinging or sending sequential messages will have no info on the callee's SDP (cherry picked from commit cacdc58e228e3c9fdd56e8107f7b528ed1c92d22) 2024-10-02 Razvan Crainea * [eb2014113] : media_exchange: keep media session until dlg ends This fixes situation when a media session is both started and ended from different (MI) processes. (cherry picked from commit d70b9c063b2da3eef05980cd826fd39a1c96ee56) 2024-10-01 Razvan Crainea * [f68caa6d9] : db_sqlite: properly store BLOB values in DB Do not insert BLOB values as strings, as they might have non-printable characters, which breaks the value when storing. Instead, store them as a hex-string. Many thanks to Eric Tamme from Five9 for reporting this bug! (cherry picked from commit 3e89bcfa935803ee4d85ba19daf2cbe8ae2c342a) 2024-10-01 Alexandra Titoc * [2dde327bb] : dialog: Fix potential copy-paste error CID #417795 (cherry picked from commit bd0989cd5d81cb06468304c07ffc5211b4307951) 2024-10-01 Alexandra Titoc * [1223e3edb] : compression: Add and fix null checks CID #58406, #200016, #58416 (cherry picked from commit 8cfb66b9050394b31ac53fd0b5117544f0838cae) 2024-10-01 Alexandra Titoc * [3f89c051f] : compression: Fix potential copy-paste error CID #58327 (cherry picked from commit 56b218bd7a065db61e02cbc9e0f759bec035dc1c) 2024-09-29 OpenSIPS * [ffb6a646b] : Rebuild documentation 2024-09-26 Vlad Paiu * [11c99480a] : Populate last dst leg for internally generated sequentials (cherry picked from commit 4d6e5d572f934c11d3c721d6beec366ee57f3a9a) 2024-09-25 Liviu Chircu * [c667f1adb] : db_sqlite: Fix some mis-placed NULL checks during row reallocs (cherry picked from commit 1cc9f5d475fa4e68a0622357c59fa2b5ba997380) 2024-09-23 Liviu Chircu * [8b19e1da9] : Clustered modules: Add sections on clusterer's "seed" mechanism * b2b_entities * cachedb_local * dialog * load_balancer * presence * usrloc (cherry picked from commit 7723f0e918d0cb562a5424104eb3077bd8dd3054) 2024-09-23 Liviu Chircu * [304ced9c3] : drouting docs: Add a section on clusterer's "seed" mechanism (cherry picked from commit 184075c4695facd370ec17e2f2184c4c255afa9e) 2024-09-23 Liviu Chircu * [4590c5784] : dispatcher docs: Add a section on clusterer's "seed" mechanism (cherry picked from commit d9a3c55f0c97c618034ed7be9b82aa17e6981ec4) 2024-09-22 OpenSIPS * [023478cf0] : Rebuild documentation 2024-09-20 Razvan Crainea * [4abf73a8e] : b2b_logic: prevent crash in case a bridging is in progress (cherry picked from commit c69201ebcc6cc382d1ec82f7e6756ff3fc0928ed) 2024-09-20 Bogdan-Andrei Iancu * [2d3f1e640] : Fix bogus active counting for procs terminating due to down-scaling Be sure to mark the proc as idel before actually doing "exit()", otherwise we will count it as busy for the whole time the proc is terminated by OS (we automatically clear the load stats only upon sigchild on attendant) (cherry picked from commit e982e90b4a7ccab0dfcff3628566359fb0ab0539) 2024-09-17 Razvan Crainea * [809a23e1e] : permissions: connect to db from each process Many thanks to Wayne Davies from Five9 for reporting it! (cherry picked from commit 4d79a71ee77ae020b9f1440bff4439257bed014a) 2024-09-15 OpenSIPS * [e1b334c90] : Rebuild documentation 2024-09-13 Razvan Crainea * [18b9c36c2] : b2b_entities: do not `reset_cancelled_t` As it is not exposed through the API. This completes c7780dbd. Many thanks to Norm Brandinger for reporting it! (cherry picked from commit 95767fc861e9c413c466989f3ac4b15efbd1a7d3) 2024-09-13 Razvan Crainea * [9159b27d1] : dialplan: no longer use per MI child init All processes already have the database connection, so there is no need to re-create it in MI (cherry picked from commit 7022a48985be59cbc3a19e3f72cf4793415cf22b) 2024-09-13 Razvan Crainea * [8cb9a9504] : b2b_entitites: do not unref cancelled cell if not ours If a CANCEL is caught by the b2b_entities but it is not part of a b2b dialog, it should not unref the cell, otherwise after the script is executed, it will be unreffed again, leading to a double unref. Many thanks to Voxtronic for spotting this issue! (cherry picked from commit c7780dbd78a2192178694283da982dee84b9f80b) 2024-09-13 Razvan Crainea * [ea95ce883] : dialplan: create DB connection from all workers This allows modules, such as mi_script, to run reload commands inline, and not through a dedicated MI process. (cherry picked from commit 9a3caeca760ec90f6bf5eaac44eff98923106f4d) 2024-09-13 Razvan Crainea * [26aaf7e36] : dialog: never update ACK cseq with 0 value In case there is no mapping for an ACK, do not update the message with 0 Many thanks to Nick Altmann for reporting this! (cherry picked from commit a47c16ffb0f98250a4e8ea8e5cef23c5c187ab06) 2024-09-12 Liviu Chircu * [6dc8c3b8e] : rest_client: Complete the fix in a3dd31ad6 Proper pointer/data management. Credits to Aron Podrigal (@ar45) for providing feedback and testing! (cherry picked from commit b15bc4451fc2a04d5896aa75d11d497e6366cd58) 2024-09-11 Aron Podrigal * [371ba4991] : Fixes #3464 when setting `connected_ts` set the address which is being used as value? (cherry picked from commit a3dd31ad6e0cb3728a7f0b0a3e6bbfc5e3beb79c) 2024-09-11 Aron Podrigal * [ba2c904bc] : Fixed - rcl_release_url() was never called in some cases (cherry picked from commit 50d1efbe9753706a8891ed28be04e4986484db64) 2024-09-11 Vlad Paiu * [920d4e15b] : Fix fetching TLS domain for a redis connection (cherry picked from commit b3e81a6472214694a4ba47e3c717281e26a04466) 2024-09-09 Razvan Crainea * [be67b0a08] : topology_hiding: remove bogus debugging (cherry picked from commit 4eda102a5398d63e9b4c45796695fa7408de14c6) 2024-09-09 Razvan Crainea * [5cfe3cfef] : b2b_entities: alocate mem for empty str Otherwise the `reason` variable points to a volatile memory that dissapears, leading to an uninitialized variable (cherry picked from commit 550eb6b7b1e08d5ea235659038fe536ceecf398a) 2024-09-08 OpenSIPS * [7039ab89b] : Rebuild documentation 2024-09-05 Razvan Crainea * [5c5d8a57c] : clusterer: fix possible inconsistent list handling The tags `active_msgs_sent` list might become inconsistent due to the fact that the `ni->next` is being populated outside locks. (cherry picked from commit 3092ec2d07419f64dc3152e770cfdbdd186b9f1d) 2024-09-03 Liviu Chircu * [c075eb0f0] : Merge pull request #3457 from Shkiperon/3.4-builder-fix Fix HP_MALLOC build flag - DBG_MALLOC is not necessary for it 2024-09-03 Razvan Crainea * [0fbabbe1d] : topology_hiding: do not mark the contacts parts as HDR_CONTACT_T This ensures that when a fixed contact is restored from a shm lump, it does not overlap to contact parts, as topology hiding builds them. Many thanks to David Trihy from Genesys for reporting and helping us troubleshoot. (cherry picked from commit e65173fc9737a0023e23799a330e852404605548) 2024-09-03 Razvan Crainea * [91af8ccd6] : Revert "tm: fix bogus contact built without domain" This reverts commit de50249961a25fdf3defbe77601c45c2dd2f0399. (cherry picked from commit 307a9862edf60e8c394bb9c0e9062f645d3e3978) 2024-09-02 Shkiperon * [ed632d43f] : Fix HP_MALLOC build flag - DBG_MALLOC is not necessary for it Style fix 2024-09-01 OpenSIPS * [e39971e28] : Rebuild documentation 2024-08-28 Vlad Paiu * [600f0518f] : NULL check received connections (cherry picked from commit 2b566e67ad207bf05cd1f5768e4482d21b7059f3) 2024-08-28 Liviu Chircu * [96cf16819] : SIP PN: Prevent overlapping modifications of pn_ebr_filters template The @pn_ebr_filters templates are actually allocated in shared memory and can be modified by multiple SIP workers concurrently, leading to occasional strange routing of INVITEs. The fix is to simply allocate the objects in private memory instead. Credits to Ondrej Jirman for documenting, troubleshooting and providing an initial fix! Related to #3394 (cherry picked from commit 078e65b98909f477c819b57e79de0b8e18dccdb4) 2024-08-25 OpenSIPS * [883683dc3] : Rebuild documentation 2024-08-22 Vlad Paiu * [d5ca8c6da] : Fix comparision of SIP URIs, add GR and PN related params checks (cherry picked from commit 8fa7bcb9ce4550c978f99bc7aaed21fdf7e28e7e) 2024-08-21 Razvan Crainea * [b802ff40c] : tm: fix bogus contact built without domain When fixing headers for fake messages (`fix_fake_req_headers` func), the function was looking for lumps that were removing the contact, because it would assume they will be the same that would add a new one (i.e. `fix_nated_contact`). However, the `toppology_hiding("U")` function, would create a del lump, but then adding 3 lumps over it. This would make the fixing bogusly learning the contact as "sip:$user" instead of hole URI. The fix for this was to make sure that there is only one ADD lump, otherwise it would point to a shorter (broken) URI. Credits go to David Trihy from Genesys for reporting and helping us troubleshoot. (cherry picked from commit de50249961a25fdf3defbe77601c45c2dd2f0399) =========================== Release 3.4.8 ============================== 2024-08-21 Liviu Chircu * [7aeb53cab7] : tm docs: Expand $T_fr_inv_timeout section (cherry picked from commit b71cf95b3ed0c32d3ddaf33b5d382b298ebf3ac0) 2024-08-20 Razvan Crainea * [842a3025dc] : packaging: add python3-setuptools dependency on redhat 2024-08-20 MonkeyTester <57145271+Integration-IT@users.noreply.github.com> * [27057b9d04] : Update stir_shaken.c - enforce verifier pvar error reason - more explicit SET_VERIFY_ERR_VARS. - stir_shaken_verify generic err_reason pvar is now more explicit to easily reflect the real reason. - replace verifier generic "Internal Server Error" by dedicated internal error like "Failed to parse headers", "Failed to parse identity header", "Failed to get current time", "Failed to get UNIX time from Date header", "Failed to load certificate", "Error validating certificate", "Error while verifying signature". (cherry picked from commit 2f5be1642b6e8ddf0e1f851f6be2777c87a54198) 2024-08-20 MonkeyTester <57145271+Integration-IT@users.noreply.github.com> * [c32d8da568] : Update stir_shaken.h - define new internal server error scopes. (cherry picked from commit 85f9250131bd44b080efbb92a875d84609a36ed7) 2024-08-19 Razvan Crainea * [ef0b9a7af8] : redhat: replace deprecated radiuslient with radcli (cherry picked from commit b36a2479c6433d09e7d560c1e466dc5b87735f4e) 2024-08-19 Razvan Crainea * [b8e9e77c9f] : b2b_logic: fix error logging when bridging existing entities (cherry picked from commit 35d7e1f53d2a3433a71ec154e935fcc5cd9481e0) 2024-08-12 Bogdan-Andrei Iancu * [c76a542480] : [TCP] fix OOM error logs (pkg versus shm) Part of 50650b7ab64b1cc6e81c051d30e55a6d57e2b173 2024-08-12 Bogdan-Andrei Iancu * [50650b7ab6] : [TCP] fix pkg versus shm for the TCP workers array Due to the process auto-scaling, this array may visible not only to TCP Main, but also to attendet and TCP workers procs. See the comments in the code for more details 2024-08-11 OpenSIPS * [c310812b60] : Rebuild documentation 2024-08-08 Razvan Crainea * [5b87766f65] : rtp_relay: fix debugging in prev commit 2024-08-08 Razvan Crainea * [6668c07890] : rtp_relay: add enhanced leg debugging (cherry picked from commit 28129a177ac1d7c44e498ee21371fc9d04897b64) 2024-08-08 Razvan Crainea * [eecb64108a] : rtp_relay: try first to match by tag, and only fallback to index (cherry picked from commit c689ec3a40938c59e49a51ddd02ae0dbbe08902d) 2024-08-07 Razvan Crainea * [43cd7f8f32] : rtp_relay: sync leg tag on late (cherry picked from commit 2b80f1a04c2e1c75726429e9e6a09011a089efde) 2024-08-06 Razvan Crainea * [739c0596d5] : rtp_relay: fix leg detection on newer branches (cherry picked from commit 33f42743bb4942cab02b448572bc7d14b3fbc123) 2024-08-06 Liviu Chircu * [4bc0bee25a] : mi_script: Avoid race condition in async(mi()) Make sure to read & clean @job->req before dispatching @job to a different OpenSIPS worker, which may do a quick free() on it. Credits to Suchi Sahoo from Five9 for reporting! (cherry picked from commit c7a9f68d12da814e25c4c7b0398aeccf2fdbcb95) 2024-08-04 OpenSIPS * [4ad27782c4] : Rebuild documentation 2024-08-02 Razvan Crainea * [c104d90114] : rtp_relay: do not check for pending when late Many thanks to Voxtronic for spotting this issue! (cherry picked from commit 471dab3130eea8788cbbf0884c6e5c2af8d61622) 2024-08-02 Razvan Crainea * [dafe08381f] : topology_hiding: store the appropriate routes in headers for indialog Credits go to Bence Szigeti for reporting and troubleshooting! (cherry picked from commit 46e3d05de1455eaf1797d313352f2daab7912b9b) 2024-08-02 Razvan Crainea * [e5bf3e172f] : tm: clean receive_info for replicated packages (cherry picked from commit 2cdda849040118e621967dfcfbd6483a99cf44d6) 2024-07-31 Razvan Crainea * [888f099aba] : rtp_relay: prevent patch on abnormal traffic (cherry picked from commit 6edaba2281e16c7fd6fa044c9a28d33067fb3f28) 2024-07-31 Razvan Crainea * [6ba0f3019b] : rtpengine: respect disable state when choosing a node (cherry picked from commit 454b71312040bd3ac893c3d3c2433be11c37d1cc) 2024-07-30 Razvan Crainea * [de32161e05] : media_exchange: sync SDPs when offering/answering (cherry picked from commit a30ded6bee2fa63b764686b88f561c0cb1a910e3) 2024-07-30 Razvan Crainea * [6763383e50] : rtp_relay: update $rtp_relay doc on branch route It provisiones the flags for the callee, rather than caller (cherry picked from commit cb9c8c94804cea080ad00f90103f5dc1e32e8e5c) 2024-07-28 OpenSIPS * [c209d635ca] : Rebuild documentation 2024-07-26 Razvan Crainea * [25647154a5] : media_exchange: register index on pre_init this avoids overlapping with other modules that register the pointer and start storing in it immedately, without allowing to register other indexes (cherry picked from commit 267205d77c06795c40cbf6df8a37ed77b2610069) 2024-07-26 Liviu Chircu * [7da509ea36] : usrloc federation: Fix shutdown crash edge-case This patch fixes a destroy() issue, where _synchronize_all_udomains() needs to sync an AoR (empty, no contacts) to CacheDB, but @cdbc is NULL in "attendant" process, per 7b62f2453b. 2024-07-26 Razvan Crainea * [7c8b5b234e] : siprec: make sure dialog exists when restoring session 2024-07-25 Liviu Chircu * [c0bc614de1] : media_exchange: Fix bad free in MI `media_exchange_from_call_to_uri` (cherry picked from commit 19add7c5bb71e7fa93ff5c96783cd4349001a66a) 2024-07-25 Liviu Chircu * [54bea59763] : tm: Avoid running hop-by-hop ACK callbacks before reply callbacks Commit aaa6b6867 mitigated the effects of a poor HEP connection affecting the OpenSIPS's responsiveness by delaying the reply callbacks until after the hop-by-hop ACK is sent out. However, a side-effect in doing so is that the reply/ACK HEP packets on un-established calls became swapped. This patch aims to address the issue. Related to #3255 (cherry picked from commit 43477da50c67eaa4b7bd206c2d8bcaa09b0b6b25) =========================== Release 3.4.7 ============================== 2024-07-24 Razvan Crainea * [1d36aff573] : event_kafka: fix xml admin doc file (cherry picked from commit ea1f23eb3d7e1bf6ce639e2c9d3d112db272a9d1) 2024-07-23 Liviu Chircu * [c594a1188b] : [I/O reactor] Small improvements to c15bd04aa4 * add @idx check against upper bounds of h->fd_array (avoid overflow) * recover @idx even when it's out-of-bounds (e.g. idx == -10) * simplify backtrace call (cherry picked from commit 46e2085b60bbd2784511cb31ec6a0a213e8cb081) 2024-07-23 Bogdan-Andrei Iancu * [ff816876a4] : [IO reactor] added an enhanced logging when detecting a reactor data corruption Use a basic/simple array to store logs to be eventually dump later if a corruption of the reactor data is detected after an io_wait_del() operation. This is debugging only, with the intention of helping the troubleshooting some ongoing investigations. (cherry picked from commit a28e500a0bffa9fcdf1a6223d94bbfe465135228) 2024-07-23 Bogdan-Andrei Iancu * [bbb65c2f1a] : [I/O reactor] do sanity check on the provided fd index On del operation, if an index (in the fd_array) is provided, check its consistency, to avoid corrupting the reactor's data. Upon corruption, do a backtrace and force recovery by resetting the index to -1 IMPORTANT: this is not a fix, but a detection and recovery, hoping to help identifing bad ops over the reactor's fds. (cherry picked from commit c15bd04aa47843147427fd56f427152addda8e93) 2024-07-23 Bogdan-Andrei Iancu * [1f4ee25b58] : Fixed test over the IO flags when removing a fd from reactor ignore the internal flags during the test (cherry picked from commit 5e11c80de870f22bca3aae85e88ef8b8b57c0f93) 2024-07-22 Liviu Chircu * [722547d431] : presence: Fix subtle race condition in update_db_subs() While walking the list and collecting expired subscriptions, it is incorrect to temporarily release, then re-acquire the lock and still make use of the @s or @prev_s pointers afterwards, as the list may have changed in the meantime! The fix is to detach and collect any expired subs, then walk & handle them in a separate iteration. (cherry picked from commit b8e0250bc957bb408f23317012716524129f1fa9) 2024-07-22 Liviu Chircu * [2ddd14a35d] : TCP debugging: Fine-tune TCP conn history settings * reduce logline buffer from 100 -> 80 * only keep the last 300 events per connection (down from 2000) * avoid auto-logging (flushing) of all TCP conn histories to syslog These changes should reduce the default TCP conn debugging footprint from ~2GB to ~0.3GB of shared memory, as well as clean up the logs. (cherry picked from commit e496cfc28aa6e88259dd17054912f88859087534) 2024-07-22 Liviu Chircu * [d2792575e4] : TCP: Fix race condition in "proto_tcp.tcp_parallel_handling" During F_TCPCONN handling by a TCP worker, the @con pointer must *not* be de-referenced if the READ was successful and connection already returned to TCP Main. This patch adds a new retcode to the tcp.read API function in order to achieve this. Credits to Yury Kirsanov and Bogdan Iancu for helping troubleshoot this issue! (cherry picked from commit 6108ee296fe372cb59719acde9499d0cbe8fbdc8) 2024-07-22 Razvan Crainea * [c67e16b817] : sql_cacher: remove test key from cache Since this key is stored in a non-base64 format, when the hash is being iterated, this value breaks the convesion - and when trying to `base64_decode("cdb_test_val")`, this results in a larger value than the expected integer, resulting in a stack crash. Removing the key from the hash fixes this crash, as all keys remain are properly base64 encoded. Moreover, if the key is not properly encoded, we should make sure that its decode does not overwrite the stack frame. (cherry picked from commit dc38cf3a19819bc010489e0f88a663a4f35f9aca) 2024-07-19 Razvan Crainea * [b5ba833d7a] : b2b_sdp_demux: reset successful legs for in-dialog The number of successful legs should be reset after completing the initial setup, so that if sequential legs are being rejected, we should not assume they are successful. Many thanks to Eric Tamme (@etamme) for reporting the issue and for providing testing scenarios. (cherry picked from commit fd37fa5ea54f67093dd014297ca8451bdeffccf3) 2024-07-16 Liviu Chircu * [31c8c55842] : db_mysql: Add the 'tls_opts=' optional DB URL parameter With some DBaaS, the TLS connections only require a CA setting on the client side -- no need to explicitly set the "cert=" or "private_key=", as they might not even be available. (cherry picked from commit 616ddd660a3444e937a5080e18432d5a404dc5a3) 2024-07-15 Liviu Chircu * [abcda64265] : TCP: Add more connection debug logs from TCP workers (cherry picked from commit 4074f8723d938070f720cc16c664e3146c92172a) 2024-07-10 Bogdan-Andrei Iancu * [306952cb15] : [tracer] remove useless line, pron to crashes Setting the tracing info into the processing context here is useless as none of the following funcions are using /accessing this context. Even more, there are cases (like tracing an UAC b2b transaction triggered by a b2b timeout) where there is not processing context set (so crashing). (cherry picked from commit 759d08f9168052005eea88742abcb3577f745247) 2024-07-09 Liviu Chircu * [058863cd71] : TCP Main: Make connection frees easier to troubleshoot By rewriting _tcpconn_rm() as a macro, the built-in shared memory debugging support (see `shm_memlog_size` core parameter) will record the TCP connection free() operations more accurately (file/func/line). (cherry picked from commit 42ebe1dbc46f7ea850c80b011b00dd76b022a512) 2024-07-08 Bogdan Andrei IANCU * [9145fd1b19] : Merge pull request #3429 from okhowang/uac-expires uac_registrant: using Expires header if expires is absent in contact (cherry picked from commit 3e592b60f4a4883b203fade4f1404c12d4bec2a0) 2024-07-08 Liviu Chircu * [3f3ee783c5] : backtrace.h: Make code more usage-friendly * avoid having to define -DEXTRA_DEBUG for backtrace logging * now you can define -DDBG_NO_BACKTRACE in order to disable all traces * default logging level changed from DBG to CRIT * fix issue with log level always being INFO; fix bad include (cherry picked from commit bbe8f809d119695577792a5438d97d51a4eb420d) 2024-07-08 Razvan Crainea * [caefff7157] : siprec: fix failover crash When a failover happens, the initial_sdp is no longer available, hence the module crashes when trying to use it. This fix makes sure that the initial_sdp is not released, so that sequential failover can catch and use them. Many thanks to Farzaneh Soltanzadeh (@Fr-Soltanzadeh on GitHub) for reporting it in #3421 and trying to fix it in #3425. Fix #3421 Close #3425 (cherry picked from commit a970903c113b47c152c0077689c70faa2a1816cf) 2024-07-05 Bogdan-Andrei Iancu * [47659e3491] : [stir_shaken] updated docs... ...to reflex the fix in a2560af0f7e0180589228267553fbe37d5885140 (cherry picked from commit 005aa2e5be85920f5cda82e8b0f89760b8d678b8) 2024-07-05 Bogdan-Andrei Iancu * [25b7e362b2] : [stir_shaken] fix agressive test on Identity hdr. This will fail in a scenario like: INCITE with Identity received, remove the Identity hdr, call stir_shaken_verify again to add a new Identity hdr. (cherry picked from commit a2560af0f7e0180589228267553fbe37d5885140) 2024-07-04 Liviu Chircu * [0f0d08dbad] : fraud_detection: Fix possible SHM allocation bug w/ prefixless rules During the check_fraud() call, in case dr_binds.match_number() finds a prefixless route, the output @matched_len is un-initialized, potentially leading to a bogus map.get_map() call and arbitrary-sized shm_malloc(). Many thanks to @okhowang for spotting the bug! Closes #3413 (cherry picked from commit e8344e88fed2ac2ef9f3737e619f38361d949fc3) 2024-07-02 Norm Brandinger * [cf708e1b2e] : Update README (cherry picked from commit 2f0940a6cec5e2e7378411e5856821478b52561b) 2024-07-01 Razvan Crainea * [ab093e4734] : siprec: proper handling recording resuming (cherry picked from commit 79fced4aa5f28354f004e1e9ed5cfefd903b56b6) 2024-06-25 Bogdan-Andrei Iancu * [26e9a75d26] : [rabbitmq_consumer] fix wrong IPC advertising in rabbitMQ aux process (cherry picked from commit 50006eae756edb075ebe15b7582cd0bfdbc57492) 2024-06-21 Razvan Crainea * [481c12df89] : domain: init db connection in all processes If the db_mode says we should cache the dialog table and only reload it in MI proceeses, the module would not initialize the db connection for SIP workers/timers. This would prevent the mi_script from running the mi() commands. This fix initializes the db connection in all proceses, thus enabling the reload behavior from any process. (cherry picked from commit e0d0f6b8fbfdabb8c7fd6e0a9307fb8df0caefe5) 2024-06-19 Razvan Crainea * [c8f852fb84] : dialog: advertise dst_leg in callbacks This is particularly useful for in-dialog requests that come before the dialog is established, such as a PRACK - this patch makes sure that the correct leg is chosen by the topology hiding in such situations. (cherry picked from commit 93e90a5ac3a32dc9fde60ed974789f398e6d0885) =========================== Release 3.4.6 ============================== 2024-06-19 Bogdan-Andrei Iancu * [31bbb28e2] : [event_kafka] remove bogus example in docs (cherry picked from commit ccc346b8e3c85fb07de0f05c8cde0123857382f2) 2024-06-18 Bogdan-Andrei Iancu * [2d8ea8ef2] : [tcp] check if the history list exists when doing unref There are cases where the tcp conn may fail right at the beginning (like a failed connect/accept) and maybe the hist list is not yet attached to the conn. 2024-06-17 Razvan Crainea * [ecbaff29c] : rtpengine: fix uninitialized tmp warning (cherry picked from commit 675db4c00019f7e782afcc4dbdc2c0860a710362) 2024-06-17 Bogdan-Andrei Iancu * [3bb0d23d9] : [net/tcp] log the unref BEFORE destroying the conn 2024-06-16 OpenSIPS * [27cc42dea] : Rebuild documentation 2024-06-14 Razvan Crainea * [5b4a17035] : rtpproxy: fix structure copying (cherry picked from commit 80bee9b8c26efd1f3a5cd4b7df4c1a7c27a2dde3) 2024-06-14 Razvan Crainea * [3b4f48a0c] : rtpengine: fix unitialized warning (cherry picked from commit 1c3139ae28ed815749e84c7289c50703d16f9191) 2024-06-14 Razvan Crainea * [1b40fea3c] : rtp_relay: ignore correct branch index Many thanks to Liviu Chircu for spotting the issue (cherry picked from commit 90c9b78fb3330231129d49ab32ce4593654e7408) 2024-06-13 Razvan Crainea * [231c71bf6] : packaging/debian: do not run berkeley stubs if not built If the berkeley package is not build, we should not run its stubs, as they result in errors. Thanks go to Richard Revels (@rrevels-bw on GitHub) for reporting it. Close #3389 (cherry picked from commit 2fba04ae731a519b8eb3a033e7a491aa3c7e8f66) 2024-06-13 Razvan Crainea * [f36f40b05] : tracer: use own flag for B2B tracing This fix prevents crashes generated when the B2B module is loaded, but tracing is done at the transaction layer - since the transaction layer was setting the same flag, B2B tracing was also engaged, but without the necessary structures, leading to crashes. (cherry picked from commit efc25521b294f61955b8a181234278dc8313ccf4) 2024-06-13 Razvan Crainea * [65a5c86a5] : siprec: properly handle paused recording (cherry picked from commit 0091ab4751164b77a1ea928f04899101ea51c3fe) 2024-06-13 Razvan Crainea * [77924d948] : siprec: expose streams in xml Close #3287 and #3293 (cherry picked from commit fb4402da3969eea64ecdd79b1233325d45346651) 2024-06-13 Liviu Chircu * [54b671f9b] : db_sqlite raw queries: Fix unnecessary lowercase restriction The code was searching for the " from " string chunk in the query but in a case-sensitive manner (??), causing formatted queries (e.g. " FROM ") to fail. Credits to Eric Tamme (@etamme) for spotting and reporting the issue Fixes #3409 (cherry picked from commit 388d4faa99e1d1842d9510947020c3d11157aa2b) 2024-06-11 Liviu Chircu * [098168d45] : Update opensips.vim syntax file (v3.4) 2024-06-11 Liviu Chircu * [9d30b05cd] : menuconfig templates: Fix nat_uac_test() flags; Load a TLS module (cherry picked from commit 1768d6543ebd927081e27e78035c27472dc045d2) 2024-06-11 Bogdan-Andrei Iancu * [4896e5cc2] : Remove b2b_logic_xml from exclude list The module does not exist anymore 2024-06-10 Bogdan-Andrei Iancu * [bcaadf81c] : [nathelper] do proper URI enclosing for FROM and TO URIs Reported by @InnovateAsterisk Closes #3405 (cherry picked from commit 9308abc20f177fdd49c1be770dccb100a696e524) 2024-06-09 OpenSIPS * [5a8cca2f1] : Rebuild documentation 2024-06-06 Liviu Chircu * [d607d10aa] : Fix shutdown crash when 'event_shm_threshold' is enabled The SHM lock is NULL at that point, so use shm_free_unsafe() instead. (cherry picked from commit d076141e4fa3f5c4ef9a67a72e0c0b23dcd37e7c) 2024-06-03 Bogdan Andrei IANCU * [41475ade0] : Merge pull request #3400 from NormB/NormB-patch-4 Update b2b_logic_admin.xml (cherry picked from commit 909ac1b8896b9d7b76b840cf24e3b900a929a504) 2024-06-03 Bogdan Andrei IANCU * [b353e3e01] : Merge pull request #3399 from NormB/NormB-patch-3 Update b2b_logic_admin.xml (cherry picked from commit e22e9c51a0562f453431610fc5c201ff9dbed13e) 2024-06-03 Liviu Chircu * [6fe6e96ec] : Merge pull request #3403 from p120ph37/3.4 Fix `perl_exec_simple` memory leak 2024-06-02 OpenSIPS * [9d0e05a92] : Rebuild documentation 2024-05-31 Aaron Meriwether * [a861f90a8] : Fix `perl_exec_simple` memory leak 2024-05-28 Liviu Chircu * [9cfdab532] : db_mysql: Drop usage of MYSQL_OPT_RECONNECT in 8.0.35+ The auto-reconnect feature of libmysqlclient has been deprecated starting with version 8.0.34 and is subject to future removal. Moreover, OpenSIPS was explicitly disabling it anyway on startup, in favour of the "max_db_queries" application-level query retrying loop. (cherry picked from commit 39f056b617c2997daa0fc7f49e7570b5ed94ca6f) 2024-05-26 OpenSIPS * [185980664] : Rebuild documentation 2024-05-23 Razvan Crainea * [577ffe1b2] : b2b_entities: logic_key should always be printable Many thanks to Voxtronic for spotting this issue! (cherry picked from commit f96335091d82a15c0a2d2e70f3a03fd7adfb1868) 2024-05-22 Liviu Chircu * [1779c5060] : cfg parser: Avoid unnecessary strlen on error case When getline() returns -1, the @lineptr argument is never safe to read, nor is this recommended. So when both rc == -1 and EOF conditions occur, it is safe to assume we read 0 bytes, without doing the strlen(). Many thanks to Dhiraj Mishra (@RandomDhiraj) for detecting, documenting and reporting the potential risk of a heap buffer overflow here! (cherry picked from commit 50b651c230eec5daaf52f8742a9c3dd92123f3d2) 2024-05-12 OpenSIPS * [3eb9916b4] : Rebuild documentation 2024-05-10 Liviu Chircu * [fdfe37f3b] : status_report: Avoid return 0 in sr_set_status() (cherry picked from commit 64c0042b4258eeaf1c52d6f37bda5b2d7d7a1ff7) 2024-05-10 Liviu Chircu * [9f2d4d53b] : status_report: Fix bad 3rd parameter to sr_set_status() (cherry picked from commit 7f12c44813f080a3a2177c8d89a5c160b80139c9) 2024-05-10 Liviu Chircu * [2939930ca] : Remove references to README-MODULES; Remove svn '$Id$' tags Reason: this file was slowly becoming more and more outdated and was ultimately removed in 8292659d5, in favour of the opensips.org listing. Fixes #3375 (cherry picked from commit 5f3baea398885b93f25e6652001170a440758954) 2024-05-07 Liviu Chircu * [a81afc112] : mid_registrar: Improve robustness vs. bad traffic in mode 2 In case the main registrar returns extra contacts, make sure to correctly match the mid-registrar's *single* contact within the list, then strip all Contacts from the 200 OK, effectively fixing it. Thanks go to Slava Bendersky for reporting and helping troubleshoot. (cherry picked from commit 7a9912602aa76b2af9dbdf8632cccb8aace7b22a) 2024-05-07 Maksym Sobolyev * [126712e37] : usrloc: simplify processing of the refresh events Do not abuse "struct socket_info" just to pass sock_str over. Instead, add str to the refresh event data and pass that alone. Not only it reduces amount of data to pass, but also makes code much easier to read and understand. (cherry picked from commit 04cb08e70ef467e5d599289abec485c957587d7c) 2024-05-05 OpenSIPS * [dbe02b7ff] : Rebuild documentation 2024-05-02 Liviu Chircu * [deb6b25e2] : freeswitch: Fix off-by-one comparison bug; Add safety checks Many thanks to Five9 (https://www.five9.com) for reporting this issue! 2024-05-02 Razvan Crainea * [ee65c4def] : tracer: proper detection of dummy messages Complete commit 6fcfc70 (cherry picked from commit 99ea7e85722becabfc6788b2c089ecadd1115238) 2024-05-02 Liviu Chircu * [80178f0c5] : Exclude "snmpstats" from multi-arch build It seems LTO is not possible with clang on the below arch, since LLVMgold.so is not available, yet snmpstat's `net-snmp-config` program includes the -ffat-lto-objects CFLAGS, which activates LTO. build_multiarch (clang-arm64-qemu-cross, ubuntu-22.04) /usr/bin/ld: /usr/lib/llvm-18/bin/../lib/LLVMgold.so: error loading plugin: /usr/lib/llvm-18/bin/../lib/LLVMgold.so: cannot open shared object file: No such file or directory clang: error: linker command failed with exit code 1 (use -v to see invocation) (cherry picked from commit 7e421329810a7d11e5721e934d9e4ab52f3eb80a) 2024-05-02 Liviu Chircu * [9590bd7e4] : Fix various ARM32 time_t warnings (Ubuntu 22.04) (cherry picked from commit 25107836920b2caa0e94d40538691752f3183f57) 2024-05-02 Liviu Chircu * [b70c9270a] : usrloc: Fix a data packing bug (cherry picked from commit 52f21088b78647f4aa94bb66334e9ebeac6558a7) 2024-05-02 Liviu Chircu * [8f6a9798f] : snmpstats: Fix clang warnings on ARM32/QEMU/Ubuntu-22.04 clang: warning: argument unused during compilation: '-fno-stack-clash-protection' [-Wunused-command-line-argument] (cherry picked from commit 077072d9a87c974d1a9cce67cbea66344db9e1a8) 2024-05-02 Liviu Chircu * [fa4aa2143] : python build: Ensure "setuptools" is available (cherry picked from commit 4250ccd78f7c900a7eea844e9b41a0f487d08fa9) 2024-05-02 Liviu Chircu * [cab8e5191] : b2b_entities: Fix ARM32 time_t warnings (Ubuntu 22.04) (cherry picked from commit 61ba2cc98cc63acca4774d153d6f66b5282831f0) 2024-05-02 Liviu Chircu * [19236750e] : github/workflows: Auto-detect available libodbc packages (cherry picked from commit 63c9eb2306d7989cd63e53e778317e11c8ed16b5) github/workflows: Move auto-detection post apt-update (cherry picked from commit 3ab5a1cfb6372a40032989fe5e9e4b36df80aa94) github/workflows: Fix bash multi-line error (cherry picked from commit a09e75e8610925f4737b57dbcb1a38ef79068a2e) github/workflows: Avoid fancy bash syntax (cherry picked from commit 1e0ea18a637553a4c4ab51fb95428f05c37ddd62) 2024-05-02 Liviu Chircu * [6893324a1] : Complete b8fdce475d (ARM32 warnings) (cherry picked from commit 41a20d6deca2861e2dce6b06485b3e0347c8fb4c) 2024-05-02 Liviu Chircu * [e7c798e2b] : github/workflows: Add exception for multi-arch Ubuntu 22.04 (cherry picked from commit 761b844e6804ccba2aa006a8d2efd873e2d54992) 2024-05-02 Liviu Chircu * [5a847bdad] : Attempt to fix GitHub Workflow On newer 22.04 Ubuntu, it seems the ODBC package has been bumped to "2". Related commits: - fa652e8 - 6bfd7d2 (cherry picked from commit dbf794dccad5f2865f955e693c85a65bc5046237) Fix a bunch of ARM32 printf() warnings (Ubuntu 22.04) (cherry picked from commit b8fdce475d6c8b7a3df3b2ae1b6d7ec64a053d9c) Attempt #2 to fix GitHub Workflow Previous commit fixed 22.04 but broke 20.04, so this commit should make both work. (cherry picked from commit d7fcd90432494b259b608d5397c6dd2bcdaa3f59) Fix package typo (cherry picked from commit 44c995aae67d24f80161096a529ded398bd69c45) 2024-05-02 Razvan Crainea * [6d6a0bec6] : parser: log_event_level_filter should be signed int This allow setting the filter to more severe levels, i.e. ERROR and upper 2024-04-30 Liviu Chircu * [0eafd4f7f] : Fix the E_CORE_SHM_THRESHOLD event For some time now, this event has not been functional, due to init_shm_mallocs() being called *before* parsing the opensips.cfg, leading to un-initialized event holders and a quick-exit at runtime, including times when the event actually needs to be raised. Credits to Bogdan Iancu for reporting this issue! (cherry picked from commit b38b06aa763d8c7457d5e87c28b2d5f6676c5798) 2024-04-30 Bogdan-Andrei Iancu * [f019ddc15] : [pua] properly insert sh_tag into pua table Credits go to @NormB Fixes #3377 (cherry picked from commit 92b0dcfbdf75c456da2a66c607875ab60801df89) 2024-04-28 OpenSIPS * [9a503f35c] : Rebuild documentation 2024-04-26 Razvan Crainea * [c36068a2b] : event_route: fix int interpretation in $param Treat the integer as signed when building the $param value Many thanks to Norm Brandinger (@NormB on GitHub) for reporting it in #3367 (cherry picked from commit 999b8ac5d35f1e53af5cf854b3be2ef5936b2cd0) 2024-04-26 Bogdan-Andrei Iancu * [2d82d20ee] : [presence] fix evaluating shtag when cluster disabled Avoid evaluating sharing tags when the clustering support in presence module is disabled. Related to #3359 (cherry picked from commit 6af90398171f8f872e68ffe52ee664a285ad6b6c) 2024-04-25 Bogdan-Andrei Iancu * [adf1f7907] : [presence_callinfo] fix non-optional params for sca_set_xxx_line() funcs The line parameter is supposed to be optional Reported by @NormB Closes #3361 (cherry picked from commit a80ff86657dc1bb31abb490f151b74317d99c1bd) 2024-04-25 Bogdan-Andrei Iancu * [f8941cb77] : [registrar] fix mem bug and mem leak in UA-regexp filter The compiled RE (for UA) is to be freed by the fixup-free function and not by the script function. Reported by @feiyingcheung Closes #3356 (cherry picked from commit b7a8040711f5d801a361722d5ff5bce236ebdfb0) 2024-04-25 Bogdan-Andrei Iancu * [f3912dc34] : [registrar] removed old obsolete fixup function (cherry picked from commit 887f17b6e076c89b845c81b6ed0741bd3c5177a7) 2024-04-24 Bogdan-Andrei Iancu * [253ad43d3] : [proto_ws] fix mem leak when hdr parsing fails Even if the hdr parsing failed (due to a bogus hdr), you still have to free whatever hdrs were already parsed ;) Reported by @11qeq11 Closes #3353 (cherry picked from commit 6a847364b5122d6abc76229c892fb8d48c24fac5) 2024-04-23 Razvan Crainea * [79953d755] : tracer: do not trace dummy messages If a message is dummy, it should not be traced, as it is never actually sent to any participants. This fixes the errors dumped by the module when trying to trace a dummy (such as a locally generated BYE due to timeout) message that does not have a bind socket, erroneously logging `CRITICAL:tracer:proto2str: unsupported proto 0` (cherry picked from commit 6fcfc706082c124809ed68186ce6299af884dccd) 2024-04-22 Bogdan-Andrei Iancu * [799da7c2d] : [presence] fix federation with local HA combination Added a sharing tag to control which node (from the HA combination) is active in the federated cluster. See all the details here https://github.com/OpenSIPS/opensips/issues/2960 (this is fully backward compatible) Closes #2960 (cherry picked from commit 8b96b70327ab80e14499edfabd6021d24acbc020) 2024-04-21 OpenSIPS * [b278b74ae] : Rebuild documentation 2024-04-19 Bogdan-Andrei Iancu * [fc3609552] : [tracer] adapt the backport 2024-04-19 Bogdan Andrei IANCU * [5b5ac2768] : Merge pull request #3364 from ovidiusas/master tracer: set proper IP instead of FQDN for locally generated requests and outgoing replies (cherry picked from commit 0b9916c1bd5bb000cf93e761c79129409ecca615) =========================== Release 3.4.5 ============================== 2024-04-15 Razvan Crainea * [f4921e3bf] : tracer: avoid crash in case bind_address is not present Introduced in a13e034 (cherry picked from commit b7f471f7b106b1594cb8bccd3fc07228c071713e) 2024-04-14 OpenSIPS * [9a0852850] : Rebuild documentation 2024-04-09 Liviu Chircu * [5f7b25036] : usrloc: Avoid firing DELETE and EXPIRE for same ct This patch fixes a usrloc callbacks API issue where both the UL_CONTACT_DELETE and UL_CONTACT_EXPIRE events would often be fired for the same contact, when the "write-back" SQL mode is in use. The following modules should notice improved behavior: mid_registrar, pua_bla, pua_usrloc, snmpstats (cherry picked from commit 1a50d66475310b8d1c73fd383b2a64733f24ea2f) 2024-03-31 OpenSIPS * [68bfb9b40] : Rebuild documentation 2024-03-29 Bogdan-Andrei Iancu * [40f661bba] : [drouting] fixed weight based selection if the last element has weight 1, it will never be selected. This was instroduced with 48c051fc16f4d83bf176d1eefe1df642882b6b88. The fix is to actually follow the initial PR approach, which was correct. My attempt to improve the original PR actually broke stuff there :( (cherry picked from commit cdd84307a4b4cc08209111e96adef0df8b6ae3ea) 2024-03-27 Liviu Chircu * [7b37bdd72] : registrar docs: Clarify that save/lookup flags are CSVs (cherry picked from commit 9357cd43860f77057e8a0c17dded94b12357d840) 2024-03-19 Bogdan-Andrei Iancu * [de6fcb66b] : [db] fix wrong size for mangled_from/to_uri columns in dialog table They are URIs, so let's use the URI len, not USER len :) (cherry picked from commit 18e7d8dbb56289e83531f51983f63e58f152ef3f) 2024-03-10 OpenSIPS * [829786eb8] : Rebuild documentation 2024-03-08 Razvan Crainea * [07e063c44] : rtpengine: proper count of the exported processes This should fix a memory corruption generated by reloading a process that was not initially counted. Moreover, an overflow is no longer possible, as the commit checks on it and triggers a BUG in case it happens (cherry picked from commit 831cdd5ac46412ba8c82e36d4a61648717d9b5b2) 2024-03-08 Liviu Chircu * [9664d5dc1] : rest_client: Fix RHEL 7.9 build regression in commit 7e85fddb6 RHEL 7.9 is using libcurl 7.29 (from 11 years ago), so the CURLINFO_CONNECT_TIME_T easyinfo option is not available. So let's use the CURLINFO_CONNECT_TIME info instead, which returns the exact same data (i.e. the `data->progress.t_connect` handle info), but divided as (double)seconds instead of being returned as (long)useconds. Credits to Răzvan Crainea for reporting this issue! (cherry picked from commit 975f5d13e9444dcb4ebab8f0dec50637ca3809da) 2024-03-08 Răzvan Crainea * [aa2778bb0] : Merge pull request #3330 from NormB/master Update rtp_relay_ctx.c to avoid segfault (cherry picked from commit fcfacae755a8ea7fb0b103a1b5ad8d65c1a65546) 2024-03-03 OpenSIPS * [87e9c6598] : Rebuild documentation 2024-02-29 Liviu Chircu * [e50c6736e] : aaa_diameter docs: Fix missing default 'answer_timeout' (cherry picked from commit 3d386f4e22a76bdd4487b15284afd9795b42cd86) 2024-02-28 Razvan Crainea * [c57dfe4dc] : proto_hep: clear context in case of error Thanks go to Jonathan Hulme from ConnexCS for reporting and providing valuable troubleshooting information (cherry picked from commit ff2923cc4bfb9b6e6a497becbd97f2407cbdc6f8) 2024-02-26 Liviu Chircu * [5393f19cb] : aaa_diameter: Fix some AVP typos; Add a few notices (cherry picked from commit 4da5b7317fcccbcd48725d8fbde8aeaa47f3b69f) 2024-02-25 OpenSIPS * [e4c61e3c4] : Rebuild documentation 2024-02-23 Bogdan Andrei IANCU * [7ffc81238] : Merge pull request #3306 from jes/getsockopt-warnings Getsockopt warnings (cherry picked from commit be64db1383fc2d66cfb1d343474562d7b132c478) 2024-02-22 Razvan Crainea * [6d7ccca31] : msg_translator: avoid mem leak when via params are present Many thanks to Nick Altmann for spotting the issue and fixing it! (cherry picked from commit d0f238ca8bd47e75b3867b3194962421dbf523c0) 2024-02-22 Bogdan Andrei IANCU * [c7e2c163f] : Merge pull request #3308 from ovidiusas/master core: consistent usage of int2str_buf (cherry picked from commit 358afd07328c10434a2575cee8ce977d42e7656c) 2024-02-22 Razvan Crainea * [8cdbfe619] : rtpengine: always provide flags for any subcommand (cherry picked from commit 4bf072d6338d584db64145c798b3dabc3e454248) 2024-02-22 Razvan Crainea * [4b212321e] : rtp_relay: proper cleanup of a copy context When a copy context was deleted, a dangling pointer would have remained in the session - this would lead to a crash, since it would access invalid memory. Thanks go to Rob Moore from Dubber for reporting this! (cherry picked from commit 4efc482fc1fa1c518357e6b47a0cc1ee15e25cd1) =========================== Release 3.4.4 ============================== 2024-02-21 Liviu Chircu * [47776bc00] : rest_client: Improve cURL compatibility when using async() This patch aims to fix a regression in 1ecb32491f, breaking the "SUCCESS" async download test case. Mitigation as follows: * improved detection for the "Request Sent" state, before putting the download on async hold. It seems that whenever both the CURLINFO_CONNECT_TIME_T and CURLINFO_REQUEST_SIZE become available, the file descriptor can be safely polled on, awaiting the reply. Note: there is no official cURL library mechanism to detect this state. * make the async() statement timeout accessible to modules. This fixes a bug where a GET on a dead HTTP server would time out after `curl_timeout` seconds, instead of `async()` seconds (lower). Fixes #3286 (cherry picked from commit 7e85fddb6e463cbdfb43015c3384ef5dbb5e5896) 2024-02-21 Razvan Crainea * [a4b6b21ae] : rtp_relay: handle NULL resetting the rtp_relay_ctx value Thanks go to Rob Moore from Dubber for reporting this! 2024-02-18 OpenSIPS * [f299b68c8] : Rebuild documentation 2024-02-13 Bogdan Andrei IANCU * [0f46cdd76] : Merge pull request #3262 from jes/jes/topology-hiding-fix topology_hiding: fix encoded Contact length calculation (cherry picked from commit da20b2259fd3f96a7530bfd72753a8338e3c4212) 2024-02-12 Liviu Chircu * [45d8d21e0] : freeswitch: Avoid failed "unref" operations during mod init This fixes a bug where if a FreeSWITCH socket were defined in both modparam and DB, it would get a +2 ref instead of +1, thus after a DB removal + reload operation it would remain in a dangling state. Many thanks to Five9 (https://www.five9.com) for reporting this issue! (cherry picked from commit 6e6c60bd60329e1b0202e7e57cee5f71e2210f34) 2024-02-11 OpenSIPS * [736cd72b4] : Rebuild documentation 2024-02-09 Razvan Crainea * [9846f9979] : siprec: avoid double unref for failed transaction Many thanks to Voxtronic for reporting this! (cherry picked from commit 28ea0565cabdbd703ddaab9351628aad43e03775) 2024-02-09 Razvan Crainea * [202a9c705] : rtp_relay: clear established when sess is deleted This avoids crashes when ctx->established pointer remains dangling Many thanks to Voxtronic for spotting this issue! (cherry picked from commit 9600ae72d74ed3d7c7a3bf9655dc4e578ea5d3af) 2024-02-04 OpenSIPS * [7edd32586] : Rebuild documentation 2024-02-02 Razvan Crainea * [4b7f12172] : dialog: get ACK cseq from src leg, rather than dst (cherry picked from commit b8bbf1440481c6a2744b6223adfca4608c88c5ea) 2024-02-02 Liviu Chircu * [80acd74af] : b2b_logic: Fix a logical bug which could cause crashes ... in b2b_init_request(). Completes c84fe372c. Neither @e1 or @e2 can be NULL after the "if" guard, otherwise there is a good chance of a crash shortly afterwards. (cherry picked from commit dec380907283b962fa2f1296b0fec1cd730708ea) 2024-02-02 Bogdan-Andrei Iancu * [42a6d3277] : [b2b_logic] fix bogus documented prototype for b2b_init_request (cherry picked from commit e5f0b5a2cff12e0cbce32d37eb116d489d2fdfc4) 2024-01-29 Liviu Chircu * [2ac87e6e1] : RADIUS/Diameter: Fix AVP type for Sip-From-Tag, Sip-To-Tag This patch fixes a copy/paste error in commit a2c6c62ba1. (cherry picked from commit f8205d1f2d0ea831f1af171e9426dcb928dd3780) 2024-01-28 OpenSIPS * [73b88429b] : Rebuild documentation 2024-01-23 Bogdan-Andrei Iancu * [c97e87d38] : [sql_cacher] fix proper update on status/report upon quick exit Be sure the SR info is properly updated (on the reload result) even when doing a quick return upon no records loaded (cherry picked from commit 32539ef8b31f6aefff424219ebf90b4fede86058) 2024-01-23 Bogdan Andrei IANCU * [8cca345ff] : Merge pull request #3289 from purecloudlabs/hotfix/sql-cacher_load_entire_table_memory_leak sql_cacher: fix SQL result leak when insert_in_cachedb fails (cherry picked from commit 3bef4afe600054a52252ca5513ebce50daac2c3a) 2024-01-23 Bogdan-Andrei Iancu * [1c8e55f05] : [sql_cacher] promote DBG to ERR to report failures Similar to 4ddb507f19bb48654a1dd1f279d4092b301d17f2 (cherry picked from commit d3cc59ba6fe52e243acf2f9177583048f068e477) 2024-01-23 Bogdan Andrei IANCU * [0b88c8cf0] : Merge pull request #3288 from purecloudlabs/hotfix/sql_cacher_mi_reload_error_loglevel sql_cacher: MI/timer initiated table reload error logged on different log level (cherry picked from commit 4ddb507f19bb48654a1dd1f279d4092b301d17f2) 2024-01-23 Razvan Crainea * [9bda21e73] : b2b_logic: document adv_contact param for b2b_bridge_request Complete 726fca1523 (cherry picked from commit ce9fccc7f7347568cb16621a02c6480eb8a89542) 2024-01-21 OpenSIPS * [6a8761078] : Rebuild documentation 2024-01-19 Bogdan-Andrei Iancu * [b9c291f7b] : [presence_dfks] fix XML namespace URL (cherry picked from commit 012587e22fa9e7e3b47f66f1afe85e63fab43b44) 2024-01-17 Liviu Chircu * [00130dd54] : for-each statement: Fix iteration when context is used Make sure to interpret the variable's context, if any, e.g.: for ($var(ct) in $(ct[*])) xlog("300 Redirect Contact: $var(ct)\n"); (cherry picked from commit 1d6d2e4b5b91990199b8351b473b8d159e362fba) 2024-01-16 Razvan Crainea * [9f5a598a7] : rtp_relay: match reply leg by index, if tag not present (cherry picked from commit 133c971e8ecb002f79d4113a2c8754b7d39a58a7) 2024-01-16 Razvan Crainea * [2101c75b6] : dialog: do not populate dst_leg on unmatched dlg Avoid chaning the dst_leg on unmatched dialogs, as this might lead to inconsistent states. A common pattern is to match a dialog in state 5, which would set a dst_leg, but then "invalidate" the dialog due to the bad state - proceeding to a next dialog would not set the dst_leg (as it was set by the previous match), leading to an invalid access in the second dialog. Credits go to NFON for reporting and providing valuable troubleshooting information (cherry picked from commit 224a3236cbeaeb06a897cb3beab8c3a0c3d5903f) 2024-01-16 Bogdan-Andrei Iancu * [98781cde4] : Fix printing all values of branch(subfield) The [*] range was printing all the time the URI subfield of the branches, instead of the requested one. (cherry picked from commit 1a11c03a3822cf710ae8af5b5da358d0003d61d5) 2024-01-14 OpenSIPS * [a9bc81085] : Rebuild documentation 2024-01-11 Liviu Chircu * [072abebe9] : tracer: Fix mixing between "src_ip" and "dst_ip" Completes a13e03420c Credits to James Seer for reporting this issue! (cherry picked from commit fd894705feacc95f1eae1af2d6554ce2b10bf5ad) 2024-01-11 Bogdan-Andrei Iancu * [49692174c] : [presence_dfks] updated link to DFKS specs (cherry picked from commit f3657e4860e38f7f18f26481f21de245afea9da1) 2024-01-09 Liviu Chircu * [041a7b5bc] : transformations: Fix edge-cases with {param.value} and {uri.param} For inputs containing only the parameter part, these transformations would return a bogus {NULL, 0} value (flagged as PV_VAL_STR), which cannot be used in assignments or conditional checks: Credits to Bogdan-Andrei Iancu for finding this issue! (cherry picked from commit b7c4f2a3bb3307b3c505f7017934a52bef8762fd) 2024-01-08 Liviu Chircu * [6e71d9293] : nathelper: Improve nat_uac_test() docs The function involves neither trying nor guessing, it's quite precise. (cherry picked from commit 0fb0094b2e4be6638bce51872f1b4aa6d5438c2d) 2024-01-07 OpenSIPS * [5e50fd871] : Rebuild documentation 2024-01-04 Peter Lemenkov * [b61381fd7] : Ensure VERSIONTYPE is always defined Signed-off-by: Peter Lemenkov (cherry picked from commit 22ef73ed10cc08995211763293a6b87ee88a2666) 2024-01-04 Razvan Crainea * [9f69bc033] : rtp_relay: fix broken ref taken with lock This caused a deadlock when DLG registers were not able to be setup. (cherry picked from commit aae8b39b5779f37f41c828687d6e54667ddc13e4) 2023-12-29 OpenSIPS * [f3c3f1132] : Rebuild documentation =========================== Release 3.4.3 ============================== 2023-12-20 Razvan Crainea * [eb02da6d6] : cJSON: provide support for adding header to functions This avoids conflicts between overlapping libs that use different cJSON implementations. Many thanks to He Huang from Five9 for reporting and providing tests (cherry picked from commit 3a891b9085d2efdf03ae02274452da7c24279cc6) 2023-12-18 Liviu Chircu * [0c12fd67b] : freeswitch: Avoid dangling socket structs in reactor Should reactor_del_reader() ever fail, retry it using index "-1" in order to guarantee removal of the file descriptor from the EPOLL controller. Also fix several occurences of bad 3rd parameter (IO_WATCH_READ instead of IO_FD_CLOSING, which was probably the intended argument). (cherry picked from commit 26a9e3a269f9e9b13c5de04422d4efd79ba27b54) 2023-12-18 Liviu Chircu * [0abdcf2ab] : cfgutils: Fix "lock" operations during MI listing * fix missing lock check, causing too many unlocks * always lock the shv during MI listing, to avoid reading garbage (e.g. partial data), as a WRITE is taking place in parallel (cherry picked from commit 0c9aa6ffff31d40db9604be616b1b27053b53235) 2023-12-14 Liviu Chircu * [8c08020eb] : rest_client: Improve previous commit (async timeouts) * fix corner-case causing module timeout to be discarded * change logging level on transfer timeout from INFO -> ERR (cherry picked from commit 1ecb32491ff891c5002f8de47373cd1cc5b70376) 2023-12-14 Liviu Chircu * [435aa4bab] : drouting: Fix rule fallback across multiple prefixless rules ('') Mostly affects the "do_routing() + use_next_gw()" scripting logic. (cherry picked from commit fd5066a0459228ab388bd00fd8b1157c34b20ce0) 2023-12-12 Bogdan-Andrei Iancu * [8ffd36c81] : [tm] remove unappropriated RW locks and use standard ones In the timer list implementation, all the ops over the list are like writer, so it makes no sense to use the RW locks which overall are a bit slower than the standard simple locks (cherry picked from commit ac364c169dfb29e79887c20e1c08af0d24673953) 2023-12-12 Vlad Paiu * [7b595ce4f] : If we are receiving/sending from/to an interface with advertised address, replicate to HEP using the advertised address (cherry picked from commit a13e03420c063c3e43666d73b6cd3bcbd6a807b9) 2023-12-11 Liviu Chircu * [3e6195363] : rest_client: Fix handling for async timeouts This patch improves all rest_client async operations such that they now correctly time out after the minimum between: * the "rest_client.curl_timeout" modparam (seconds) * the async() statement timeout, if any (seconds) Credits to Bence Szigeti for helping diagnose and fix the issue (cherry picked from commit 1ea1852ed79ba4b79cba39643e1274eed509081b) async: Add support for module-injected timeouts In some cases, the module may have its own timeout for the async operation which it would prefer to force into the reactor wait loop, possibly even have it combined with the async(..., X) statement timeout as well, with the minimum of the two timeouts to win out. (cherry picked from commit 03db3688a4c44577db483c1aecdaacc208490ebd) 2023-12-11 Liviu Chircu * [ab36f59b2] : acc: Fix possible crash if 'aaa' module not loaded If do_accounting("aaa") is used without a backend module loaded, OpenSIPS would actually start, then crash when generating an acc record. Credits to Simon Gajski and Bogdan Iancu for reporting and diagnosing the issue here. 2023-12-08 Bogdan-Andrei Iancu * [5231ab8bf] : [tm] fix missing Route hdrs in locally generated ACK/CANCEL Even if those requests are hop-to-hop (and they do not need Route hdrs), this is valid only for stateful SIP servers. Yes, woow, we need to take care of stateless SIP server :P. As various module may add lumps with Route hdrs, let's mark this, so we will know later if we should re-parse and check for such Route hdrs (in the outbound buffer) Closes #3131 (cherry picked from commit 13bd2b877ca82f0b692208e7c9d46df15aa4b35a) 2023-12-08 Razvan Crainea * [fc1278751] : blacklists: initialize backlist net structure Thanks go to Jonathan Hulme from ConnexCS for spotting it. (cherry picked from commit 58adeca9968a64f3e2ee0e47c76d18153b4f2dd1) 2023-12-07 Bogdan Andrei IANCU * [2d24623ac] : Merge pull request #3266 from jes/jes/proto_tls-rlen proto_tls: report error with correct variable (cherry picked from commit 2cb54ee862f4fe93586e4383519043e4dbaa2773) 2023-12-07 Razvan Crainea * [a01f269b6] : b2b_logic: Fix pkg_str_dup ret code check Fix bug while checking the return of pkg_str_dup - due to the bad return check, we were no longer terminating dangling entities with BYE. Many thanks to David Escartin from Sonoc for reporting and help in troubleshooting this issue! (cherry picked from commit 5d90a34b401c48cc680d9f3343f9efce15ad6a28) 2023-12-05 Razvan Crainea * [fba5d4d10] : siprec: handle SRS in-dialog UPDATE and re-INVITEs (cherry picked from commit ec6b5c4e0e714a7fc81d215950a33a6b7b72dee0) 2023-12-05 Razvan Crainea * [11d0ee65a] : rtp_relay: fix creating caller's tag in branch route (cherry picked from commit 937e1340c96113bc337bbf4270f9d2501d918831) 2023-12-04 Bogdan-Andrei Iancu * [2b7770a37] : [b2b_logic] fix TO hdr setting in UAC entities Keep the original idea (<=3.1) to have TO and RURI set to the same URI. Starting 3.2 this was accidentally changed, TO hdr being preserved from the UAS entity. Fixes #3176 (cherry picked from commit d3e3ad118ce57dcf93947e25ed2efe0193286c71) 2023-12-04 Liviu Chircu * [0bc0e07d6] : acc: Code improvements * make the is_xxx_on() macros more practical, by returning `int` instead of `unsigned long long`, to avoid integer overflows during result check * add more unit tests (cherry picked from commit f635a63a7acfc5b55c8f06bd14693d3e710a633b) 2023-12-04 Liviu Chircu * [9608d8a1d] : acc: Fix drop_accounting() regression (211a63c9b2) Commit 211a63c9 changed drop_accounting() from doing too little dropping (the "backend bit" would never get reset) into doing too much dropping (the "backend bit" would always be reset, despite some of the flags still remaining enabled after the drop operation). This commit fixes the code and also adds some unit tests for the set/reset bitmask operations, to lock in the correct behavior. (cherry picked from commit 0f0de89f6a050255050e913bd3295c2ae2a43fdc) 2023-11-29 Razvan Crainea * [e48fe86eb] : rtpengine: avoid serializing if rtpengine ctx was not created (cherry picked from commit d8323704b05a1e64a9c7531856879a1e14501e18) 2023-11-28 Bogdan-Andrei Iancu * [f94618adc] : [tm] fix the visibility of $T_branch_idx in failure route The bavp's are already available in failure route and they are using the same internal variable for the branch index. So, to keep consistency, the branch index should be visible also in failure route via $T_branch_idx (cherry picked from commit ae9e51ec131e5d2dd20fc2ac1e28835916a70c7f) 2023-11-28 Bogdan-Andrei Iancu * [8b4771d9d] : [tm] fix setting _tm_branch_index in case of internal timeout Be sure the _tm_branch_index variable is properly set for internal timeout and not only for received replies (cherry picked from commit 43590e93f457df32dfec9dff6ef859624e13b852) 2023-11-28 Bogdan-Andrei Iancu * [53d9ccbde] : [cfg] fix bogus constraint on ':=' operator It is actually implemented by BAVP also (not only AVPs), but the script does not allow its usage :(. Removing the check is safe as all the other variables will treat the ':=' as '=' - they do not test the operator during "set", assuming '=' all the time. (cherry picked from commit 5bab986c7c887a438e0cb007afa617ff6a5dcb4b) 2023-11-28 Razvan Crainea * [1a8606dea] : rtpproxy: handle timeouts for stats command Fixes a crash when OpenSIPS was timing out when fetching statistics (cherry picked from commit 2b5392d5394edf9ce346cd10363dae5a66d82fcd) 2023-11-27 Razvan Crainea * [f556bf62c] : cgrates: return 1 while setting a non-object return Comply with documentation with functions that always return 1 if success Reported by MonkeyTester (@Integration-IT on GitHub) for reporting this. Close #3256 (cherry picked from commit 51b8a2bc87ed8cb508cf3e8c3f7c6ff75012ac04) 2023-11-27 Razvan Crainea * [fb707972c] : rtpengine: make oom error logs more verbose (cherry picked from commit 6d38787c1ecee65899377cef3167987923889ece) 2023-11-21 Razvan Crainea * [a382e73d4] : dispatcher: fix partition parsing ending (cherry picked from commit 2a70e611649a0fa70680bd2dee0625ca2a805b10) 2023-11-21 Bogdan-Andrei Iancu * [ff28100a4] : [tm] fix NULL on out of index for bavp() vars (cherry picked from commit 492df453de434f49131dd61fcf5fd6f4f5e8025a) 2023-11-20 Răzvan Crainea * [f74b210d5] : Merge pull request #3250 from dunst0/fix/b2b_logic_deadlock b2b_logic: fix deadlock on error case (cherry picked from commit d2a41690c4f9a48cf0b0e51f06e0e5c65ddda9aa) 2023-11-20 Razvan Crainea * [91f7ea7af] : b2b_logic: unlink entity in the tuple before destroying This prevents a crash generated while trying to iterate through the tuple bridging_entities in the local route - since the entity has been destroyed, but not removed from the tuple, accessing it may cause in invalid memory access and crashes. Thanks go to @BTa7BxrHYn on GitHub for reporting it Close #3240 (cherry picked from commit ae098f7d86ba022d34b1fcd013a8504b023648f7) 2023-11-16 Razvan Crainea * [3ffcf7d5e] : rtpproxy: fix rtpproxy_enable setid docs (cherry picked from commit e8aaca713949c5c52c48c389066a820f2a4eb33b) 2023-11-16 Liviu Chircu * [aa4a93272] : dialog: Fix bad test in prev commit 2023-11-15 Liviu Chircu * [e3ef2750b] : usrloc: Clarify docs for MI 'ul_cluster_sync' (cherry picked from commit 8f328428cb218cdfaefdc3e22bac7e5dc28992af) 2023-11-15 Liviu Chircu * [95a27fec5] : dialog: Mitigate 'dlg_list' PKG fragmentation; Fix dlg_list_ctx memleak By using pkg_str_extend() instead of pkg_realloc(), we avoid a constant creation of PKG fragments (the buffer will eventually stop growing), which seems to gradually fragment the private memory pool, as the MI 'dlg_list' is continuously polled by various monitoring software. As a bonus, this patch also fixes a 'dlg_list_ctx' PKG memory leak introduced in 543a40c8ff and only present on OpenSIPS 3.4+. Related to #3235 (cherry picked from commit 34dc02bf8e118891ca68e8bf06261980ec7130b0) 2023-11-15 Liviu Chircu * [1a00e1e9f] : Fix PKG memory leak on {s.eval} corner-case Make sure to correctly free the transformation data structures even when parsed by {s.eval} at runtime, as opposed to one-time parsing during startup, which would never highlight the leak: $var(proxy) = "$(du{nameaddr.uri}{re.subst,/scscf-int-/scscf-/})"; $var(proxy) = $(var(proxy){s.eval}); Fixes #3233 (cherry picked from commit be764a16fe606294339252623deeeaa374e7dae0) 2023-11-13 Vlad Paiu * [562f2279d] : Increase the static buffer size where the dialog info gets printed to Since we also have the SDP going there, that can grow pretty large ( in webrtc context ) (cherry picked from commit 1a3ff9b66e029f32e22a6a3251fd8073479f7af9) 2023-11-13 Răzvan Crainea * [8738c5cb6] : Merge pull request #3243 from purecloudlabs/hotfix/json-array-del-element json: fix array element deletion (cherry picked from commit 6ec8840f0e67520b05db0427fd05ead845ae3871) 2023-11-07 Liviu Chircu * [590b51aed] : mid_registrar/usrloc: Small doc improvements Many thanks to Conrad de Wet and Devang Dhandhalya for the hints! (cherry picked from commit f0488b5fa38378b1f0d3875177b7d0fe3cb8a0a8) 2023-11-03 Liviu Chircu * [1f7988317] : CacheDB: Allow "@" in URL passwords (cherry picked from commit 1df9afd3886a3bddf837927aafca7bff8763acd1) 2023-10-31 Razvan Crainea * [02b683d1b] : proto_hep: fix type in hep_async_local_write_timeout param name (cherry picked from commit 267b938422cf146f1a9de545b2acedb2780af064) 2023-10-31 Razvan Crainea * [54e49227b] : call_center: fix usage of parameter passed to cc_handle_call (cherry picked from commit d6bcd2d49561e95581803bd1b56c4b9c40ef7697) 2023-10-31 Liviu Chircu * [5115c4d8f] : tls_wolfssl: Fix tarball generation Since ".patch" files are explicitly excluded during tarball packing, let's just rename the patch file to ".diff" instead so it gets included, thus allowing the tarball module code to compile once again. (cherry picked from commit 82876a79058885e14cfb6099cee68aa95f184099) 2023-10-25 Razvan Crainea * [1c622dbd1] : call_center: passthrough in-dialog requests, except BYE (cherry picked from commit c0f5b124127f6ad9ff68344f8764198dee9bf9c6) 2023-10-25 Razvan Crainea * [c86df7585] : Revert "call_center: passthrough re-INVITEs" This reverts commit 61a86a9256058044e86c651918671ac0bef1e9ca. 2023-10-25 Razvan Crainea * [61a86a925] : call_center: passthrough re-INVITEs (cherry picked from commit f971fa17310c654c54305608855cfc28c1477bd0) =========================== Release 3.4.2 ============================== 2023-10-17 Razvan Crainea * [2c5245fb9] : dialog: only publish cseq mappings for INVITEs (cherry picked from commit 8a6e78ddeb720f3cdbdd69d0ad696eb25a97e729) 2023-10-13 Razvan Crainea * [b37619c43] : b2b_entities: proper handling of overlapping BYE Although in normal circumstances we should reply with a 500 reply code, in case a BYE is received, we should process it accordingly, and as soon as the overlapping transaction completes, we should terminate the other leg as well. Completes c4032f94f3993d1b62a0483eaae3ac0bd6c7c358 (cherry picked from commit 761e8800ad45eb2a674b1d167e02d2904011a414) 2023-10-12 Razvan Crainea * [eab3496f8] : prometheus: fix labels documentation Many thanks to Norman Brandinger (@NormB on GitHub) for spotting it. (cherry picked from commit 5449d944e74903fea463150c99455a0e7d949c95) 2023-10-12 Bogdan-Andrei Iancu * [4f6d3ae83] : [parser] parse_min_expires() returns FALSE if hdr no found Alternative to #3165 (cherry picked from commit b3990ad41c348c6a34e1e0e13033c54427453d79) 2023-10-11 Liviu Chircu * [472014357] : fix_nated_sdp(): Fix crash due to mis-managed flags Fixes #3226 (cherry picked from commit b524764aed8c6295be6f38b6923ef57d4f63043f) 2023-10-11 Bogdan Andrei IANCU * [513daba74] : Merge pull request #3223 from purecloudlabs/hotfix/wolfssl-client-cert-verify `tls_wolfssl`: Fix certificate verification in client mode (cherry picked from commit a1b2c3c1ca041a3474d432c4ece8f7cdad493c08) 2023-10-11 zhengsh * [5a30c75c9] : cachedb_redis_dbase: Fix the type of port with unsigned short. (cherry picked from commit 59b076048b106a4d9c9d8246746fa229526e21e8) 2023-10-11 Liviu Chircu * [559285713] : cachedb_redis: Fix a bug with parsing custom ports This patch fixes an issue where custom Redis ports (i.e. not 6379) in simple URLs with just 1 host were always being parsed as 6379. Most likely, the issue dates back to the "circular failover hosts" feature (69179289). Many thanks to Artiom Druz (@Shkiperion) for a full report + PR attempt! Fixes #3168 Closes #3169 (cherry picked from commit 3532746c1f830540a61b04863df2236c1a85978c) 2023-10-10 Bogdan-Andrei Iancu * [f8701a271] : [load_balancer & dispatcher] FS stats do not depend on probing Enabling the stats collection (via timer) from FS boxes must not be conditioned by the activation of probing - there is not relation / dependency between the two. Closes #3216 Reported by @spacetourist (cherry picked from commit 14df28478f902826cf9e36b32a6b0da4ddbf3c06) 2023-10-09 Bogdan-Andrei Iancu * [26d6d95ff] : [async] fix async launching without report route Handle the case where no report route is provided. Closes #3188 2023-10-09 Bogdan-Andrei Iancu * [09548eeb8] : [evi] do not raise event from TCP MAIN The TCP MAIN process does not have script capabilities, so we should NOT raise event here (as they may translate into scripting due to the event_route module). So, if we have an event to be raised from TCP MAIN (as E_CORE_TCP_DISCONNECT) we better use the newly added evi_dispatch_event() function which does IPC dispatching (into a different process) and raise for the event. Closes #3212 (cherry picked from commit fd0657602734f242223e99655e49aa967ffec423) 2023-10-09 Bogdan-Andrei Iancu * [46b2dc758] : Fix persistency of the globally set log_level The globally set log_level (via MI cmd) must impact the future forked processes (due to auto scalling). Closes #3146 (cherry picked from commit 942509835adfe59ee841f16f12a876d828be269f) 2023-10-06 Razvan Crainea * [684f6df2f] : dialog: proper update contact of callee on seq fixes bug introduced in a76af3f Close #3218 (cherry picked from commit fc144da23d806ab691c0b8479f333f599ebfd73f) 2023-10-06 Razvan Crainea * [b1654b044] : tls_wolfssl: amend patch with Fix RNG with writedup Amend patch with wolfSSL/wolfssl#6843 (cherry picked from commit e393d4cd20957909f34572910b28f1ec7897c2fa) 2023-10-05 Bogdan-Andrei Iancu * [25cc934db] : [b2b_entities] proper handling of B2B requests without active dialogs If we have a requests that is 100% looking as a B2B related request, but it's not matching any active/ongoing b2b dialog, better reject with 481 and drop instead of pushing it into the script (where may be proxyed). Closes #3205 (cherry picked from commit caa78d9676017ae93c35862de90974f407ab25e7) 2023-10-05 Razvan Crainea * [030dd3bbe] : rtpengine: allow passing flags for subscribe answer cmds (cherry picked from commit faafd70f4c4ccf74a9192a2e31f5864d6b1b9965) 2023-10-04 Razvan Crainea * [ab4f73c18] : statistics: do not allow duplicate stats in different groups The statistic's name should be unique, whether it is located in a different group or not. Completes 4640465, Fixes #3136 (cherry picked from commit e7f887d354d8d98d9fe00f2ca9edf3b8d4401cba) 2023-10-02 Razvan Crainea * [8b5d2e274] : drouting: allow usage of goes_to_gw in LOCAL_ROUTE (cherry picked from commit 483ee0be161fbfd374cc3e631e354b312a05baa5) 2023-09-27 Liviu Chircu * [630ce8abf] : stir_shaken VS: Improve several return codes * on bad client-side signature length, return "438 Invalid Identity Header (bad signature)" vs. "500 Internal Server Error" (??) * on encountering expired certificates advertised by clients, return "438 Invalid Identity Header (cert validity)" vs. "403 Stale Date" (?!) * fix abs() related compiler warnings introduced earlier (cherry picked from commit e2977a4f49f1a164369c515bb7a79b5b436aeb31) 2023-09-27 Liviu Chircu * [d3ff32570] : stir_shaken: Fix detection for invalid "future Date/iat" This patch fixes a bug where both the Date hf and the "iat" PASSporT claim could be filled in with a random timestamp value "in the future" and still bypass the OpenSIPS "freshness" integrity checks. Issue discovered during OpenSIPIt'03, thanks to Pavel Bussel & Maksym Sobolyev (Sippy Software) (cherry picked from commit 75a168a9f4315e59ba92bdcc2920639176e7f415) 2023-09-27 Razvan Crainea * [e03165121] : [WIP] statistics: fix crash when creating a series stat Under normal circumstances, when a statistic is updated, we first search whether it exists, and if not, we add it to the statistics hash. However, due to the way it is implemented, searching and adding a statistic is not atomic, hence, with high concurrency, when adding a new statistic, we might already find an existing one there. In this case, the code tries to return that statistic in the `pvar` parameter - however, that parameter might be a (r/o) function, hence a crash happens. This commit fixes the crash. Close #3136 However, it returns 0, as if the statistic was properly added - the problem with this approach is that from the caller's perspective, we do not know whether the statistic was already there or not, to free the existing structure - hence this might result into a leak. We are still working on a solution for this. (cherry picked from commit 4640465215f131592326363bd0748d9f0e79f04d) 2023-09-27 Razvan Crainea * [ca968c21a] : siprec: fix memory leaking while setting the same field of siprec var Credits go to Rob Moore, Daniel Bryars and Steven Ayre from Dubber, as well as Liviu Chircu from the OpenSIPS team for working together to spot this leak. (cherry picked from commit 1dde47b524e4bb27e992ede2b15631eb12092537) 2023-09-26 Bogdan Andrei IANCU * [4993bf7b1] : Merge pull request #3189 from Keyyo-Private/fix_ldap_memleak ldap: Fix memory leak (cherry picked from commit d82ddd85d97fcf0b5c3f01e686c9018b9f00e89c) 2023-09-26 Razvan Crainea * [d4aead240] : dialog: increment last_gen_cseq only if initialized Many thanks to Denys Pozniak (@denyspozniak on GitHub) for reporting and providing troubleshooting information. Close #3206 (cherry picked from commit 7bafee1f91327f91c0372318cf0cd8e6dc4bceaa) 2023-09-25 Vlad Paiu * [a5a70106f] : Added support for rtx RFC 4588 when deleting a codec that has RTX attached to it (cherry picked from commit ebc3edd78e7603fd1928bcefc0c775f7f9a9dd65) 2023-09-25 Liviu Chircu * [892a6e483] : stir_shaken: Add the `e164_max_length` parameter This parameter allows the 15-digit number length restriction of the E.164 format to be bypassed. Especially useful in scenarios where various telephony number prefixes are in use, causing some numbers to exceed the standard maximum length. Credits to @Integration-IT for watching over the core issue and helping work towards the current solution! Fixes #3202 Fixes #3182 Fixes #3181 2023-09-21 Razvan Crainea * [c03bbc4f6] : build: add patch as requirement (cherry picked from commit 9e87934732a195e8cea262ebac42bfb626633a66) 2023-09-21 Razvan Crainea * [d0dba981d] : tls_wolfssl: adapt patch with upstream Grabbed from wolfSSL/wolfssl/#6785 As soon as the patch gets in a released version, we shall bump our version as well. (cherry picked from commit 2548f475528bb6b31b769be83091bc944ec01f06) 2023-09-21 Razvan Crainea * [cf45a666f] : tls_wolfssl: patch wolfssl lib to fix memory leak More information about the leak can be found on the wolfssl issue tracker: wolfSSL/wolfssl#6760 (cherry picked from commit 716f1d633d19e08165917423cb141c29c0f2b2df) 2023-09-21 Razvan Crainea * [93b25949b] : tls_wolfssl: refactor makefile to use dependencies (cherry picked from commit 3e6a0fcb0f72a56ad066af97f0fabafe8ded2c83) 2023-09-21 Razvan Crainea * [ab2c15c7b] : digest_auth: restore support openssl for 1.0.2 This completes commit f566fb which used a new interface of openssl, one that is not available in 1.0.2. Many thanks to Oleksandr Kozmenko (@11qeq11 on GitHub) for reporting it. Close #3183 Also squashed all corrections to the Makefile in this commit (cherry picked from commit 3c11d3c0f50adcc3a92dc893a11866cd6aafbe13) (cherry picked from commit d92607f2d7825a9d000b14e6f3d9aa037b273b23) (cherry picked from commit d1c8a475186f94e6a8aae74e0ad884663039b0ac) (cherry picked from commit 8fccc49c7c8c0fb3ae4cf500fffebd00914c3db5) 2023-09-21 Razvan Crainea * [09e8705aa] : proto_ws: enclose IPv6 Host IPs with square brackets Many thanks to @alekseiZh on GitHub for reporting it Close #3198 (cherry picked from commit 3b4beb2c4fa7be27032dbc82f0a0be03677db893) 2023-09-18 Razvan Crainea * [6a60715e9] : b2b_entities: fix Notify buffer timeout build Complete 312cdd4 Related to bug in #3195 (cherry picked from commit 9d61465fe82c1abeb3795915bfc805944abf068b) 2023-09-15 Razvan Crainea * [999fc7252] : b2b_logic: do not abort bridging if re-INVITE is rejected with 491 If the SDP negociation gets rejected with 491, we should not abort negociation, since most likely it is an indication that the remote UAS is trying to lock its codecs, hence do the same thing we are trying to do, but in the other direction. If however, the other participant does not send itself a re-INVITE, we arm a timer to re-try the bridging according to the RFC 3261, section 14.1: If a UAC receives a 491 response to a re-INVITE, it SHOULD start a timer with a value T chosen as follows: 1. If the UAC is the owner of the Call-ID of the dialog ID (meaning it generated the value), T has a randomly chosen value between 2.1 and 4 seconds in units of 10 ms. Fix #3137 (cherry picked from commit 66493ce7ecb8be5eb29c0d365a29eb31101158bf) 2023-09-15 Razvan Crainea * [400fb34b6] : b2b_logic: properly initialize socket for topo hiding Fix possible crash when no socket is forced in topology hiding scenario (cherry picked from commit 01a3568eff57f56179f3e3b82647eaf489482d11) 2023-09-15 Liviu Chircu * [e42f7c4c8] : dialog: Fix $dlg_val memleak Fixes #3135 (cherry picked from commit e2bfeda4e6c714dc65ab096d1664799c1f9bd5d2) 2023-09-15 Bogdan-Andrei Iancu * [e435d7fc4] : [b2b_entities/logic] use the newly added pref_socket When creating a new B2B client, avoid using the UAS side incoming socket as a forced socket. By doing that we override the proto given by the UAC RURI (and forcing to use the same proto as the UAS side - of course, unless we do not do a force send socket from script to manually indicate a new socket/proto). Shortly, th dynamic selection of the correct UAC socket is broken. With this change, we do: * if the UAS/msg side has a forced socket (from script), we will push it as forced socket to the UAC too (as before this change). * if there is no forcing, the current UAS/msg incoming socket is passed as "preferred" socket to the UAC - like use it as time as it fits the RURI proto. This helps in preserving (during the whole b2b logic) the same socket when having multiple sockets serving the same protocol. Fixes #3138 (cherry picked from commit 4244c286e19e85f10f2873e1c4f1deee2661eb50) 2023-09-15 Bogdan-Andrei Iancu * [8700f6936] : [tm] t_uac() gets a preferred socket too The function already receives a send_socket (a forced socket) which overrides the protocol given by the destination URI. But are cases were we need a milder approach, like a preffered socket to be used if not conflicting with the protocol given by the RURI. What we have now: * send_socket - it is a forced socket, overrides the proto given by RURI, it will be used for sure * pref_socket - a preferred socket, to be used if no send_socket is given and if there is no conflict with the proto given by RURI (in case of a conflict, the pref_socket is discarded and a new socket is looked up based on the RURI info). First part fix for #3138 (cherry picked from commit 2824a3818bcb40a980b795aaece69545eb963397) 2023-09-15 Razvan Crainea * [c01ebd575] : b2b_entities: prevent hop-by-hop ACK to change the status of dialog (cherry picked from commit 4fe2fb6f5cf16dd069c803e3d4542ae8a756a1d3) 2023-09-15 Razvan Crainea * [2348a82c9] : tm: simplify API interface for t_relay and t_check_trans (cherry picked from commit 1bf83d61b6a9607c903bf26ac76ac50a4aca10b9) 2023-09-14 Bogdan-Andrei Iancu * [e4236b578] : [b2b_entities] Proper handling of overlaping transactions As per RFC3261, Section 14.2 : A UAS that receives a second INVITE before it sends the final response to a first INVITE with a lower CSeq sequence number on the same dialog MUST return a 500 (Server Internal Error) response to the second INVITE and MUST include a Retry-After header field with a randomly chosen value of between 0 and 10 seconds. A UAS that receives an INVITE on a dialog while an INVITE it had sent on that dialog is in progress MUST return a 491 (Request Pending) response to the received INVITE. Changes: * 491 is now generated when receiving a request while already having an outbound one - the old code was generating 491 upon receiving a request while having another INCOMING one :-/ * generate the 500 reply when receiving a new request while handing another incoming one. (cherry picked from commit c4032f94f3993d1b62a0483eaae3ac0bd6c7c358) 2023-09-12 Razvan Crainea * [193e65d6d] : rtp_relay: remove context from the list on repicated deletes (cherry picked from commit 1af376b71ee235ce723ccda2716ee507c575b8d8) 2023-09-08 Bogdan-Andrei Iancu * [38dc08828] : Revert ERR back to DBG log Introduced by mistake via e0fe732e9c9d28c24ed6860fbd3531940978b8f9 Reported by Bence Szigeti. (cherry picked from commit 3b04f2185c419e295a471fa14f8436cdb0f02fff) 2023-09-04 Razvan Crainea * [6aae49826] : rtp_relay: fix invalid contexts leaked in list When a session would have been established on a provisional reply with body (i.e. 183), the rtp contexts would have been stored in the list. However, if the call would not establish (with a 200 OK), there would be no one removing it from the list, even though the context was released - this resulted in unexpected and almost impossible to track down invalid memory usage. The current patch makes sure that the context is removed from the list if the call does not establish. Many thanks to Rob Moore, Daniel Bryars and Steven Ayre from Dubber for pushing an enormous amount of time into troubleshooting and debugging this, as well as to Liviu Chircu for guiding the troubleshooting! (cherry picked from commit d6ef279f63aa0682bf0fb7ef1d30a6abdfb8b942) 2023-08-31 Liviu Chircu * [3abd3a265] : Update ChangeLog for 3.4.1 =========================== Release 3.4.1 ============================== 2023-08-31 Razvan Crainea * [59006776c] : Bump version to 3.4.1 2023-08-31 Razvan Crainea * [c5b281fe4] : Update ChangeLog for 3.4.1 2023-08-31 Razvan Crainea * [48927a3c9] : route: fix previous commit (cherry picked from commit d86668889dcaef68b87eab0c0cb4bd61a592ce21) 2023-08-31 Razvan Crainea * [3aaf534b2] : route: fix another crash related to f07048c (cherry picked from commit 242598f70959f491761fcb039b76b3359b94cc18) 2023-08-31 Razvan Crainea * [461d92ce1] : route: do not unref if route not initialized Prevents crash when init fails and routes have not yet been initialized (cherry picked from commit f07048c5875974d4057cd0b60ab984d1ee490858) 2023-08-31 Liviu Chircu * [670fa6d12] : siprec: Fix invalid READ operation on freed memory Also tidy up the cleanup phase Thanks to Rob Moore, Daniel Bryars and Steven Ayre from Dubber for reporting it and providing valuable information for troubleshooting! (cherry picked from commit 9996f9fd13adfae5e4cbbad9de5265e43b5a75b3) 2023-08-28 Razvan Crainea * [9b7e17c92] : dst_blacklists: append _rule check_blacklist func This avoids collision with the userblacklist's module check_blacklist function. Many thanks to Bence Szigeti from Genesys for reporting it! (cherry picked from commit bc239b1f8cffcb300328f390363546e1df1018b6) 2023-08-28 Razvan Crainea * [3323bf901] : b2b_sdp_demux: fix client key concurrency case Thanks to Suchi Sahoo from Five9 for reporting! (cherry picked from commit 6678bae9301d007257049ce8827ba97410473a27) 2023-08-17 Razvan Crainea * [639d7f711] : rtp_relay: fix missing ref for legs in session This missing ref would (almost all the time) lead to possible invalid memory accesses and possilbe double free. Thanks to Rob Moore and Steven Ayre from Dubber for reporting it and providing valuable information for troubleshooting (cherry picked from commit 3aeeee43111ef78d6224e81e70f820961965bef3) 2023-08-16 Bogdan-Andrei Iancu * [af33d64fb] : Switch default xlog level from ERR to NOTICE ERR is too scary for a default value :) (cherry picked from commit c290071682fad30323aa36c0d3b64281b4edd2e5) 2023-08-16 Razvan Crainea * [9bcf7b50e] : db_sqlite: fix possible crash when the values is relocated When the query does not manage to count the rows in a first shot, the values buffer might be reallocated, which can result in a relocation of the buffer - if that's the case, we should repoint all the old values to the new location, otherwise they will point to an invalid value. Many thanks to Rob Moore and Steven Ayre from Dubber for reporting and helping us testing and troubleshooting this corner case. (cherry picked from commit 45aa9a947c6306f5723132f9c38903988be6cf8b) 2023-08-16 Razvan Crainea * [28e74a456] : db_perlvdb: fix valdata inline Thanks go to @varghesepaul for reporting it Close #3152 (cherry picked from commit 8b2ac92794d1fe2d2e5a2cc6f1b08396a0322407) 2023-08-16 Razvan Crainea * [b529ce7ab] : rtpproxy/rtpengine: document socket type if protocol is missing Close #3154 2023-08-09 Razvan Crainea * [9bf02af27] : ipc: initialize job structure before dispatching it (cherry picked from commit 243e0e3abe5bbea5ee1384a0964e7c2af7cbe587) 2023-08-09 Razvan Crainea * [f2fa437c0] : prometheus: properly initiate local stats val (cherry picked from commit bc1a9ceab57e9f6a40b35cb2f0fca7e8711e5782) 2023-08-08 Razvan Crainea * [442a08c60] : dprint: fix compile time printf checking (cherry picked from commit 93e88f28e2ba489d2c9879e82c4d5dcefe439d0e) 2023-08-07 Razvan Crainea * [f44d7c91a] : action/params: do not run route if params were not properly built Thanks go to Nick Altmann for reporting it Close #3141 (cherry picked from commit 3cdc8f1ebdbe49f920298ba60d409b6011ea84c6) 2023-08-05 Razvan Crainea * [402ca197a] : dialog: fix warning without proper variables provided (cherry picked from commit 11f613622b74b148f59b2073ff06e234372007b5) 2023-08-05 Razvan Crainea * [e2b69aa14] : dialog: complete cseq maps implementation Do not limit the number of maps, update existing in case the same cseq is incremented multiple times (due to authentication), optimize the number of maps and remove them when the transction is deleted. Complete and close #1071 (cherry picked from commit a76af3f49ccc8bf62fbdbf29d240e652e86050c8) 2023-08-05 Ovidiu Sas * [c3901132f] : dialog/uac: fix in-dialog authentication - closes #3041 (cherry picked from commit 155995b2bae4e4947c07c4df1cb0901da4a72a82) 2023-08-04 Razvan Crainea * [58ede2468] : rtp_relay: suppress warning if session is established (cherry picked from commit b417951b615a10acfed5ea69c131ab4949026365) 2023-07-31 Razvan Crainea * [c117f2e90] : proto_*: move TCP request in shm, not pkg This is because TCP connection might get re-balanced on different nodes Thanks go to ConnexCS for reporting this! (cherry picked from commit c49ba7007aad78aa56d3d2f1959dd939e87be63a) 2023-07-31 Razvan Crainea * [050db8893] : context: return 0 if pushing context fails 1 otherwise (cherry picked from commit 7c93e59cb07e0e9357d768f64f92aeca1280d002) 2023-07-31 Vlad Paiu * [16b406755] : Added str flag to out pvar (cherry picked from commit f6377ca7a8246253563b464e5a1dd103bd0e2cd9) 2023-07-26 Razvan Crainea * [46e889e02] : b2b_entities: make sure we don't "leak" transaction when canceling it (cherry picked from commit 0a0a0d65a8732231c41f0519dbd737072433e42b) 2023-07-26 Razvan Crainea * [fdaddb7bf] : tm: add set_t in API (cherry picked from commit 5339179b011f20b002429649fc30fe95ff26e7d7) 2023-07-26 Razvan Crainea * [e909cc848] : rtp_relay: do not unsubscribe from terminated sessions (cherry picked from commit 7c618fb23e90822794f13d20d92f0d60fd04ba73) 2023-07-26 Razvan Crainea * [d07e27b24] : rtpengine: use rtp_relay api only if loaded Thanks go to ConnexCS for reporting this (cherry picked from commit 73351da0212cf4d6a988b06ecec3c341bb32530c) 2023-07-25 Razvan Crainea * [e42a648ff] : rtp_relay: mark session as successful if we have callee's SDP (cherry picked from commit 9d77b6def960c1dffab7013eb2bab4a2837e3eaf) 2023-07-24 Bogdan-Andrei Iancu * [f2f87bc3e] : [tm] avoid incoming request matching against UAC transactions (cherry picked from commit e6c733595eeeaa74fec18a5911fc45592f45e737) 2023-07-24 Razvan Crainea * [efdf7881a] : siprec: do not require SDP for a 200 OK This should be OK if the SDP was completed on the 183. (cherry picked from commit 2a0990d0886108bb09987bd69be2efd15fe4ac05) =========================== Release 3.4.0 ============================== 2023-07-17 Vlad Paiu * [5ca0beb63] : set async ctx to 0 prevent crash in timeout_f not being set but reactor still somehow timing out fds (cherry picked from commit cfcd9a65eb6eb41f6c8c5b69a55d0f930c383efc) 2023-07-14 Vlad Patrascu * [bfa7018d2] : Remove obsolete tests from test/ dir (cherry picked from commit 004f465655cd1041596e09a04d80a6511c10b7e7) 2023-07-13 Vlad Patrascu * [d4d210a44] : clusterer: fix restoring "cap:" status/report IDs after reload Thanks to Suchi Sahoo from Five9 for reporting! (cherry picked from commit 0b2cc8b62f80678c7f1b5d36dba75cc975cb5d6c) 2023-07-13 Bogdan-Andrei Iancu * [30f6c2aa0] : [tm] fix accessing free'd reference to script route When setting the T->failure reference to NULL, the previously set script reference is automatically free'ed, so be sure you do not use if afterwards. Closes #3115 Credits to @Integration-IT for helping with the troubleshooting and testing 2023-07-12 Vlad Patrascu * [69a573922] : b2b_logic: fix deadlocks due to calling API functions from callbacks Related to #3117 2023-07-12 Razvan Crainea * [503eef28d] : rtpengine: search through rtp_relay calldis when terminating Reported as part of the #3121 ticket (cherry picked from commit 58863fc9296490bd7d708a698c39bf8d56757d5e) 2023-07-12 Razvan Crainea * [f29e76542] : rtp_relay: provide more precise dialog matching based on ids (cherry picked from commit 2ff9c59035ee4fd23826242a06f34edad3d8735c) 2023-07-12 Razvan Crainea * [54521908a] : dialog: indicate if dialog was not found when terminating (cherry picked from commit 8d6cfba715f5477e1c6f43ed6630d908af9d82ba) 2023-07-12 Razvan Crainea * [7a321d564] : dialog: provide means to fetch dialog by h_entry and h_id (cherry picked from commit f73a2b4ab1c0e8c9a7ad53cfa885c6ade8c6fed3) 2023-07-11 Vlad Paiu * [dbc36057b] : Generate correct OPTIONS pings for NATed devices (cherry picked from commit c4c376484cdbefa9eb8da84dfb0a011a07ddb27d) 2023-07-06 Razvan Crainea * [7f5e08319] : tm: proper cleanup for anycast CANCEL transactions Thanks go to Rizwan Syed and Jonathan Hulme from ConnexCS for reporting, providing testing environment and support the troubleshooting and fix! Close #3111 (cherry picked from commit 24ec4ebd901c18feba418b7c995faa9778357fc7) 2023-07-05 Vlad Patrascu * [eab713153] : logging: fix crashes when some main initializations fail The shm allocated consumer structures could still be accessed after the shm was destroyed. (cherry picked from commit a1cd6230f29fbf3a90ad55e30df36b7494ffbece) 2023-07-05 Razvan Crainea * [a74d6b46f] : rtp_relay: engage indialog callbacks when session is established This allows the module to run callbacks on UPDATEs even if the dialog was not estabhished yet (cherry picked from commit ae09c986c0b5e74be2668531e584bae66565a229) 2023-07-04 Vlad Patrascu * [ea5a014b7] : clusterer: fix deadlock when receiving clusterer_reload via cluster Running cluster_send_mi or cluster_broadcast_mi with clusterer_reload as the command to dispatch would cause a deadlock on the receiving nodes. (cherry picked from commit aa8e5ff0a020c1569880fe51a4af54cb9866cded) 2023-07-04 Bogdan-Andrei Iancu * [0b50a9dce] : Small code beautification Related to 1d83a0c (cherry picked from commit e455d009436b8ac5f3c879c410d0901a77769820) 2023-07-04 Bogdan-Andrei Iancu * [eba18aade] : Merge branch 'warning_delay_timer' (cherry picked from commit daaef52c1375d05e66318d2ae375a304d15f15f4) 2023-07-04 Bogdan-Andrei Iancu * [406a0887f] : [tracer] properly do per-request traceing in local route As in local route we have only outbound (callee) leg, we cannot the typical incoming request tracing here. We need to "fake" it a bit to look as an outbound tracing. Funny enough, this problem poped only when doing per-request/message tracing in local route; otherwise the per-transaction tracing was doing the correct job. Credits for reporting go to @ovidiusas Closes #3066 (cherry picked from commit 9eb13bf2ca6d8dae84fc84c4c2c113217d36aea5) 2023-07-04 Vlad Patrascu * [61401ea40] : b2b_logic: fix compile error 2023-07-04 Vlad Patrascu * [92772e69f] : b2b_logic: properly reset the current tuple in all cases The global variable used to identify the current tuple in the local_route was not properly reset in all cases (when retrying a birdge action for example). This could lead to a failure to identify the current tuple when acessing the $b2b_logic variables, the b2b logic context etc., even when we're not in the context of a local_route. 2023-07-04 Vlad Patrascu * [ebf40c91f] : b2b_logic: fix some locking issues Properly access the b2b logic context of the current tuple under lock. Also, protect the access to the tuple when using the b2bl_get_entity_info() API function. Related to #3117 2023-07-04 Vlad Patrascu * [d05d408b0] : b2b_logic: don't crash when searching inexistent tuple by key Searching the current tuple by key for accessing the logic context should not cause a crash. As the hash is not locked or the structure ref counted, there is a distinct possibility that the tuple cannot be found anymore. Related to #3117 2023-07-04 Bogdan-Andrei Iancu * [2b48dea20] : [ratelimit] Fix accuracy on the ratelimit timer The computation perform by the ratelimit module is very time sensitive - any deviation of the interval between the runs of the timer handler may lead to false positive detection of CPS thresholds. So, let's move the timer handler from regular timer (1s sensitivity) to utimer (100ms sensitivity) -> 10 times more accurate. Still, the number of triggerings is the same, only the precision is 10 times better. Credits go to @ovidiusas Closes #2797 (cherry picked from commit 03788691a145bd1597ab6c5ec43544718143aad3) 2023-07-04 Bogdan-Andrei Iancu * [482944c74] : Fixed CacheDB URL escaping. The ability to escape/encode DB URLs using %xy became a must with the auto generated user and passwords in the cloud envs. Cloned from 5b0bc1e Closes #2412 (cherry picked from commit 88a0622fd90436191f412a9cfd83152d9a2e9491) 2023-07-04 Bogdan-Andrei Iancu * [c1f3ac590] : Fix advertising IPv6 IP addresses Enclose the IPv6 advertised address when using it as string Fixes #2774 (cherry picked from commit 4c16207a5be0bdb12a303e4c932b8bc3345a24f2) 2023-07-03 Vlad Patrascu * [d9cc29959] : clusterer: fix crash after MI reload The crash was caused by accessing a dangling pointer to the capability structure after it was freed. Thanks to Suchi Sahoo from Five9 for reporting! (cherry picked from commit cb8d63193b84909e1c238418dc3e80825ebb746e) 2023-06-30 Maksym Sobolyev * [1e1e63e6b] : Make sure CC is set. 2023-06-30 Maksym Sobolyev * [5c8308dc9] : Remove packages that are auto-installed by GitHub and create a version conflict later when we install our version. This is the reason the build were failing in the past few days. 2023-06-30 Maksym Sobolyev * [611ee1ec2] : Move list of required packages into plain text file and GC .travis.yml which "serves no purpose anymore". 2023-06-30 Maksym Sobolyev * [cab92778b] : Fix build on non-linux systems. The HOST_NAME_MAX is not portable, POSIX way to find it out is to use sysconf(_SC_HOST_NAME_MAX), but for now just fix it with ifndef. 2023-06-30 Razvan Crainea * [b555f31b2] : Revert "Reset sources.lst to default ubuntu's." This reverts commit 9cc29c6ae2021b4c7f87d064ea4325b6e4a3bb53. 2023-06-30 Razvan Crainea * [94e5c867b] : Revert "scripts/build: remove apt forced sources" This reverts commit e2c3ab3af4f9799f51298c0ef8b130452b6a899c. 2023-06-30 Razvan Crainea * [e2c3ab3af] : scripts/build: remove apt forced sources 2023-06-30 Maksym Sobolyev * [9cc29c6ae] : Reset sources.lst to default ubuntu's. (cherry picked from commit f4e90f3d6ac9478bb1d22e0d456a54dd91bb8192) 2023-06-30 Razvan Crainea * [62947c5a1] : siprec: fix pvar definition (cherry picked from commit e5185e114d6080d45cf9be1a2d4dc2f8083b7f12) 2023-06-30 Vlad Patrascu * [a55520241] : b2b_entities: fix crashes due to races when deleting entity An entity might have been deleted and freed while the lock has been released when running the entity storage callbacks. Related to #3110 (cherry picked from commit 22bd8184e6c1cbd52ce3be79fbe0c52306226f37) 2023-06-30 Razvan Crainea * [c976ce08d] : tracer: fix refs for multiple transactions in b2b scenarios Many thanks to @vtzan for reporting and intensive testing (cherry picked from commit 02869583bda92801b44069ac90e8037d532758dd) 2023-06-30 Bogdan-Andrei Iancu * [2c1c1acae] : Fix resuming partial msg reading on TCP When conn rebalancing or parallel processing is enabled for TCP, a read operation may start (partial reading) in one process and be completed in a different one. So the con_req (buffer for partial reading) must be in shm mem and also it must survive a conn release (passing the conn back to MAIN). Many thanks to @liviuchircu for reporting and helping with the troubleshooting This issue was found during the TCP performance tests done for the 3.4 release (cherry picked from commit e0fe732e9c9d28c24ed6860fbd3531940978b8f9) 2023-06-30 Bogdan-Andrei Iancu * [04bcfee50] : [uac_registrant] avoid code duplicate Use common/shared functions for pushing / poping new processing context A follow up on 3705209d524b7f61b193df8b56310fe9600e14b1 (cherry picked from commit 44c25dba422671497fda672762acdf4dd27b5a6e) 2023-06-30 Bogdan-Andrei Iancu * [a0bbd60c3] : [b2b_logic] fix crash on tracing expired b2b tuples When a tuple expires via timer, be sure to provide a processing context, otherwise the tracer (if enabled) will simply crash. As part of the fix, two new helper functions were added for pushing and poping new processing contexts - these are to be reused by some prev similar fix on uac_registrant. Related to #3110 Many thanks to @vtzan for helping with the troubleshooting and testing (cherry picked from commit 2a3eb1e2a8e609b6b7b37074c1d1fd4dffc76f5e) 2023-06-28 Vlad Patrascu * [57c2a8d91] : dialog: fix matching dialog by integer dialog value This fixes the matching of dialogs when using the get_dialogs_by_val() and get_dialog_info() functions. 2023-06-27 Bogdan-Andrei Iancu * [888a62cc9] : Fix computing the size to clone for a body part Take the optional header len into account also when cloning a body part struct. This particular bug occured when using add_body_part() with extra hdr parameter in conjunction with an async() operation (or failure route) Credits for reporting and helping with repoducing this go to @thuroc Fixes #3067 (cherry picked from commit a042588e322c5acf997313773cbc5ff6e007c956) 2023-06-27 Bogdan-Andrei Iancu * [a7e2b1ef7] : [dialog] fix dropping empty string dlg vals Upon DB recovery (after an OpenSIPS restart) do not drop emtpy string dlg vals - as we do allow creation of such vals via cfg and api and have them saved to DB, it makes all the sense to also restore them This triggers some startup warnings when using in-dialog re-INVITE probing. Closes #3108 (cherry picked from commit e24668131bcd828214c4fb9bccb208e9483a2a4e) 2023-06-23 Vlad Patrascu * [be0e3c12c] : Also register a custom event from subscribe_event() fixup This will permit raising an event from MI with an event subscribtion done in startup_route without the need to define an event_route for this event or using a raise() in the script. (cherry picked from commit f69b150c8090adb86f2fcaadd56873f61cdb7097) 2023-06-22 Vlad Patrascu * [dbe4fcd08] : lua: fix duplicate logs to syslog (cherry picked from commit 949422a938ed12c5b5a820dc4af6de1c437b3798) 2023-06-22 Vlad Patrascu * [bbc5dfc0d] : lua: don't register functions under a name This fixes issues with running the "opensips" table functions on Lua library version 5.1. This essentially reverts commit ab964d9. (cherry picked from commit 5e4d10cff40fed34cc419d81d5791b207cfb6a96) 2023-06-21 Vlad Patrascu * [8e5f064f2] : lua: fix opensips lua API docs (cherry picked from commit a53ba3d0d696ef56684a03b7bbf4a4e8474c3e33) =========================== Release 3.4.0-rc1 ============================== 2023-06-20 Liviu Chircu * [723bc9cb3] : F_MALLOC: Optimize the free() operation Commit bdaaf60b2c introduced a side-effect of gradually moving the fragment "action" towards the exponential, non-optimized hash table buckets (i.e. buckets 2049 ... 2100). Here, the fragments were inserted in a sorted fashion, with the sorted-insert algorithm costing a O(N) iteration on each free operation instead of a simple O(1). Consequently, the user experience of this effect is that "dr_reload" operations were stalling for 12 minutes (coming up from 24 seconds!), when working with large rule sets (millions of rules). Interestingly enough, the stalling was not due to the caching phase -- malloc() -- rather due to the cleanup phase, when clearing the old rules -- free()! To address this issue: * we drop the sorted insertion completely for buckets 2049 ... 2100, and simply do a list prepend operation: O(1), as with the others * we make all allocation requests from these buckets return the next bucket (!!), thus guarantee'ing our requested fragment. Examples: malloc(18K) -> now you always get a 32K+ frag, but instantly! malloc(37K) -> now you always get a 64K+ frag, but instantly! * this does not make F_MALLOC more wasteful, since the extra frag space gets split anyway into a new fragment, with the two eventually coalescing together again thanks to commit bdaaf60b2c (cherry picked from commit e6b4de51298eb78aef097cbfd1c34ada17b9b78f) 2023-06-20 Liviu Chircu * [073ce6bf7] : drouting: Fix 'inherit_reload' related errors on MI reloads Related to e871882cb6. Be silent about "MI param not found" errors, in case the function was _meant_ to be called without those parameters. (cherry picked from commit 47fbe3627640d60166e794dac3d0dcec1c7727a6) 2023-06-20 Vlad Patrascu * [7e014926a] : cachedb_mongodb: fix regression in commit 69ed4f7 Loading the cachedb_mongodb module alongside the tls_openssl module, but before tls_mgm would cause a crash. This is a result of the OpenSIPS versus mongoc library openssl initialization issues (initially fixed in commit 298bf6b). Commit 69ed4f7 split all the openssl related code from the tls_mgm module into a new tls_openssl module but some openssl initialization bypasses from the cachedb_mongodb module were left to depend on loading the tls_mgm module (instead of the new tls_openssl module). Fixes #3072 (cherry picked from commit ce177c133724ca913d9e4b0ab12fe30eb44e4561) 2023-06-20 Bogdan-Andrei Iancu * [1b00ed9f3] : [tracer] fix bogus multiple tracing When calling the trace() function multiple times from script (to do tracing via different backends), be sure and install all the tracing callbacks (in TM, dialog) only first time. Reported by @gmaruzz Closes #3082 (cherry picked from commit 18ccdbe0efbf327c88026dd9006513a06dd4a348) 2023-06-19 Bogdan-Andrei Iancu * [e73cb3b90] : [uac_registrant] fix passing wrong context to authenticated REGISTER When sending the authenticating REGISTER, be sure a new context is provided. This will avoid the usage of the context belonging to the first (challenged) REGISTER. This mixup of the context was breaking the tracing of these REGISTER requests via local route. (cherry picked from commit c64766a8526c3953bd5adf45030a29a9aacb4550) 2023-06-16 Vlad Patrascu * [deeefa7cb] : b2b_logic: prevent initializing B2B session on non-INVITEs This prevents crashes when the b2b_init_request() function is used on methods other than INVITE or from other routes than request routes where the INVITE SIP message is visible. Related to #3102 (cherry picked from commit 8c0a9e0ae48841e27d4b1e803b584f5de0c3419b) 2023-06-16 Vlad Pătrașcu * [b4d591c3a] : Merge pull request #3103 from Giedriusj1/master Improve passthru_prack behaviour so it actually passes through PRACKs (cherry picked from commit 1e8efb7d8e7951c6441ccadd0e50109222ef98f2) 2023-06-14 Bogdan-Andrei Iancu * [73f00edc3] : [dialog] fix too strict restrictions for get_profile_size() The function does not require any existing dialog context, so it can be used from any route (cherry picked from commit a5f85013ea9156410a48614079105a7c5b41fe8e) 2023-06-09 Vlad Patrascu * [7680b58e2] : logging: complete fix in commit a4bf044 (cherry picked from commit 1e5fbeca529a3c22c909dc09431bf37ba3493017) 2023-06-09 Vlad Patrascu * [3c1c5c7ff] : logging: improve the format of the logging interface's own errors Align the format of the error logs from the consumers printing functions with the rest of the plain stderror logs. For the event consumer, the error logs can be sent as normally to the rest of the consumers (stderror and syslog). (cherry picked from commit 91c264abd63bfe200d0cf0f15aa300c5d1b4c799) 2023-06-09 Vlad Patrascu * [5d55e51bd] : b2b_logic: fix issues when new entities are unused New entities created with b2b_server_new() or b2b_client_new() functions would leak if they were not eventually used by a b2b_init_request() call. This would lead to pkg memory leaks and bogus errors from successive calls to b2b_init_request(). Also, fix an entity memory leak when using the b2b_bridge_retry() function for a tuple that is in a non-initial bridging state (eg. triggered by b2b_bridge_request()). (cherry picked from commit c84fe372c50becc177f57732ff087da53b71be0f) 2023-06-09 Răzvan Crainea * [d14793bd5] : Merge pull request #3104 from purecloudlabs/hotfix/sipmsgops-allowed-routes sipmsgops: fix allowed routes for exported functions (cherry picked from commit 14e1eab55b67992e4493602248628777d7d6d9a9) 2023-06-06 Vlad Patrascu * [59d4ff600] : logging: fix print buffers length check for JSON CEE format (cherry picked from commit d148232fe2f1b4d7222c091c345702391aecfebf) 2023-06-06 Vlad Patrascu * [9e0acc3d5] : logging: print log level in xlog() messages (cherry picked from commit e18662aa96aceb0cb304e5153e57a70914a8b6f2) 2023-06-06 Vlad Patrascu * [55835b775] : logging: improve E_CORE_LOG suppression mechanism Do not stop all logs, to any logging consumer, from being printed when handling the E_CORE_LOG event in the event consumers. Only suppress the triggering of the event itself. This also fixes the blocking of OpenSIPS when xlog() is used from the event_route. (cherry picked from commit a4bf0442640ba4ef52035de0908166f55182afe8) 2023-06-02 Razvan Crainea * [e23be5d19] : topology_hiding: properly quote contact hdr params Thanks go to @manojmth for reporting this on GitHub Close #3090 (cherry picked from commit e767b87123191b9f44db004e3a33b25982724672) 2023-05-31 Vlad Patrascu * [ff34e6171] : Use the fixup_named_flags() function consistently Always let the fixup_named_flags() function internally set the values to NULL for unused key-value flags. (cherry picked from commit 6bab367f038a1a4be2313fc6f1427b943db21f2f) 2023-05-31 Vlad Patrascu * [a8a4e3d5e] : Update the -h help message regarding the -E option deprecation (cherry picked from commit a050cc581802aea42fb2bbe6def4645ac94333f4) 2023-05-31 Vlad Patrascu * [bf506aeaa] : logging: revise the JSON CEE format * Add the "@cee:" prefix only for the syslog consumer. * Add the "hostname" and "pname" CEE mandatory fields. * Use nested objects for the function and PID fields instead of the "proc!id" and "native!function" notation. * Change the PID field to string instead of number data type. * Add the "log_prefix" field. (cherry picked from commit 61ecc1047ba89c428ec58ec2d1f87a9ea3fc316a) 2023-05-31 Vlad Patrascu * [7c0daedb0] : b2b_entities: trigger the E_UA_SESSION event for initial INVITEs Add ability to trigger the E_UA_SESSION event, with the 'NEW' event type, for initial INVITES handled with the ua_session_server_init(). This can also be suppressed with the 'n' flag. (cherry picked from commit fb5b35866740e6a0509341cca698684a02b3b968) 2023-05-31 Vlad Patrascu * [a89ff2445] : b2b_entities: rename ua_session_start to ua_session_client_start Rename the ua_session_start MI command as originally inteded. (cherry picked from commit 3102318223b3babf76ee6b8ed090f8d824aa2c80) 2023-05-31 Vlad Patrascu * [98b068c9b] : b2b_entities: make 'reason' param mandatory for ua_session_reply Omiting the 'reason' parameter for the ua_session_reply MI command would cause a crash in the tm module. (cherry picked from commit 19b6d3e940c074c05c37cac049241fdd2b8c119f) 2023-05-31 Vlad Patrascu * [6223edac6] : b2b_logic: remove leftover debugging log (cherry picked from commit 28471600b813c869d1c49e52df05961d2363e9ea) 2023-05-31 Vlad Patrascu * [1cb5a4f8e] : msrp_relay: fix check for running the socket_route (cherry picked from commit a2f2ec64580f98e0332b4925a48ee85217a03491) 2023-05-31 Maksym Sobolyev * [1467a11a7] : Restore -E option, which has became core(5) implementation after incomplete removal in b3644964573d7. Instead of dumping core, print error message directing user to the "stderror_enabled=yes" at the script level. 2023-05-29 Razvan Crainea * [8bafdd078] : rtp_relay: avoid crash when dialog/b2b not loaded (cherry picked from commit e00300c46178eb0e22d3bc062b6fc0abf63ca9fb) 2023-05-29 Razvan Crainea * [4c0418a78] : rtpengine: add docs for via-branch-param (cherry picked from commit 96eac0be302228cc59a0dce8d463e2b3972417c0) 2023-05-24 Razvan Crainea * [3d63a85c0] : sdp: fix crash in SDP parsing Introduced in commit 7743524 (cherry picked from commit dbceae2d20e03749ab68ff57837b187ed5225bfb) 2023-05-23 Bogdan-Andrei Iancu * [68f3653c9] : Improved error logging on parsing KV flags for lookup() (cherry picked from commit 397e1daa1cf4c619aa848405d93ba86194ca1629) 2023-05-23 Bogdan-Andrei Iancu * [1c96fb510] : Improved error logging on parsing KV flags for save() (cherry picked from commit f9cade9d756a5ab916df3824748ecd4c2c34eda2) 2023-05-23 Bogdan-Andrei Iancu * [e6dd878a5] : fix uninitalized returned list of KV flags closes #3100 (cherry picked from commit 1668bc3f0f249f690fe5479a859ad0de988ab928) 2023-05-19 Vlad Patrascu * [69f5f824b] : [mid_]registrar: fix default flag values for lookup() and save() The default values for unset flags were not properly set if any other flags were provided to the save()/lookup() functions. Fixes #3097 (cherry picked from commit 89f947b690f54d17425235d0e6d5c3cb00f9d37a) 2023-05-19 Vlad Patrascu * [4c1b9a5ce] : b2b_entities: fix incorrect entity key after loading from DB Do not generate a new random part for the entity key when loading from DB. (cherry picked from commit 168808757d45af6ce098e123b1524f2a7d367cd6) 2023-05-19 Vlad Patrascu * [99c9d66d8] : logging: expose missing level filter param for event consumer (cherry picked from commit a9401510f5c6091f7721a5c19abe495af0d30881) 2023-05-18 Vlad Patrascu * [692a680ef] : b2b_logic: fix crash if no B2B routes are set This fixes a crash when the 'script_req_route'/'script_reply_route' module parameters are not set and b2b_init_request() is called with no route parameters. (cherry picked from commit 94acb11f567117ef3baa095c01c8ef1bab00aecb) 2023-05-18 Nick Altmann * [c9a4f4ba7] : Set version number for apt and yum builds =========================== Release 3.4.0-beta ============================== 2023-05-17 Liviu Chircu * [c0e15f5ad] : Bump version to 3.4.0-beta 2023-05-17 Vlad Pătrașcu * [daaacfe94] : Merge pull request #3074 from Giedriusj1/master b2b_entities: add more randomness to callid generation to handle client_htable collisions 2023-05-17 Vlad Patrascu * [8a6421e78] : Update log related global params in doc examples 2023-05-17 Vlad Patrascu * [dcd42a91b] : Update log related global params in config samples 2023-05-17 Vlad Patrascu * [9f1845421] : event_kafka: fix syntax errors Related to commit d69a8cc5beb7a968c09a87e29ac08c5fb1c5e6b0 2023-05-17 Vlad Patrascu * [c05cb7561] : Add a new core event triggered for every log message 2023-05-17 Liviu Chircu * [f89b21b6a] : Docs: Fix various outdated opensips.cfg syntax samples 2023-05-17 Liviu Chircu * [a4c8d9d25] : Merge pull request #3084 from rrb3942/dialog_profile_remove_all Add options to set_dlg_profile and unset_dlg_profile to remove all values on a profile 2023-05-17 Liviu Chircu * [e0bdf5932] : dialog: Improvements to recent set/unset profile additions 2023-05-17 Bogdan-Andrei Iancu * [75a17b460] : [tm] Updated the XML doc for t_reply_by_callid() Completes 870f322270683a596a9f38e0b365e41645d89fb3 2023-05-17 Bogdan Andrei IANCU * [870f32227] : Merge pull request #2937 from MayamaTakeshi/t_reply_by_callid Adding tm function t_reply_by_callid 2023-05-17 Bogdan-Andrei Iancu * [e09eb58ac] : Merge remote-tracking branch 'origin/regex_max_groups_segfault' 2023-05-17 Bogdan Andrei IANCU * [c17d15f74] : Merge pull request #3086 from wangduanduan/dr_reload add inhert_state param for mi dr_reload 2023-05-16 Liviu Chircu * [95abb6884] : async.h: Fix compile warning 2023-05-16 Bogdan-Andrei Iancu * [e0b0ac74b] : [b2b_logic] fix syntax error Related to d69a8cc5beb7a968c09a87e29ac08c5fb1c5e6b0 2023-05-16 Bogdan-Andrei Iancu * [fce0eaeb2] : Fix reload of timer routes Use a separate, dynamic list of timer tasks that can be update by other proc than the timer itself (which has no info on the script). The proc doing the reload, upon success, re-generates the list of timer tasks corresponding to the new set of timer routes. NOTE: a more complex logic is needed when purging the old set of timer tasks, as they may still be under execution - we use here a pending list where we wait their completion. 2023-05-16 Bogdan-Andrei Iancu * [01b49f14c] : Fix double increase of script version The process triggering the script reload was doing double version increase, once when testing the new script and second when actually reloading along the other procs. 2023-05-16 Vlad Patrascu * [651908ffc] : logging: escape unprintable characters in JSON logs 2023-05-16 Vlad Patrascu * [0e7aafdfa] : logging: properly configure the 'log_json_buf_size' global param 2023-05-16 Bogdan-Andrei Iancu * [d69a8cc5b] : [modules] migrate to new route references Related to 2e65a82e657731fe70844768013287443b266068 2023-05-16 Bogdan-Andrei Iancu * [c637bb43c] : [tm] migrate to new route references Related to 2e65a82e657731fe70844768013287443b266068 2023-05-16 Bogdan-Andrei Iancu * [35bb59e09] : Migrate from index to references when pointing to a script route The idx are hard to work with in the context of script reload, as they cannot be upated or checked (if still valid). So, instead of pointing to the route by its idx, use an intermediary structure that holds: name of the route, the idx of the route, the version of the script. Now, such intermediary structs (or route refs) may operate in 2 ways: * they are per process, in pkg; all such refs are linked in a single list and automatically updated (their idx) upon reload. * they are shared (like attached to data structs in shm), in shm; if so, before using it, the version is checked, and if old, the idx is updated on spot. 2023-05-15 Liviu Chircu * [63309e55f] : Merge branch 'lemenkov-ping_failure_direction_indication' 2023-05-15 Liviu Chircu * [d572bd423] : Merge branch 'ping_failure_direction_indication' of https://github.com/lemenkov/opensips into lemenkov-ping_failure_direction_indication ... with some improvements: - fix upstream/downstream mixing - fix coding style 2023-05-15 Vlad Patrascu * [712fdd2d0] : logging: fix crashes when using HP_MALLOC Allocate the shm log consumers table after shm is properly initialized( including statistics, memory warming etc.). 2023-05-15 Razvan Crainea * [efd40feee] : mysql: fix migration typos 2023-05-15 Vlad Paiu * [774352470] : Added parsing of custom a= attributes related to a payload Fixed codec_delete() to also delete the custom attributes related to the codec to be deleted ie. For m=video 38453 UDP/TLS/RTP/SAVPF 96 97 98 99 a=rtpmap:96 VP8/90000 a=fmtp:96 annexb=yes a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli OpenSIPS will save all the rtcp-fb: lines as custom attributes for the VP8 codec and when doing codec_delete("VP8") it will delete all the corresponding attributes 2023-05-15 Vlad Patrascu * [672540900] : Fix str_match() invocations with str_init() macro 2023-05-15 Vlad Patrascu * [b36449645] : Enhance the logging interface and add structured JSON logging Logs can now be sent to both standard error and syslog. Each logging consumer can be enabled/disabled separately via global parameters or at runtime via the 'log_mute_state' MI function. Additional filtering by log level, for each consumer, ca be achieved by setting global parameters or at runtime via the 'log_level_filter' MI function. Logs can now also be printed in a JSON based, structured format, with two schema options: a basic opensips schema and CEE. 2023-05-13 Maksym Sobolyev * [0da576565] : Record SCM type (i.e. "git") and SCM revision (i.e. commit hash) in the module and compare it to the same values in the core upon load. This is basic anti-foot-shooting mechanism so that users don't report issues that are caused by the changes in internal APIs. Also make all log levels LM_CRIT consistently in version_check(). 2023-05-13 Maksym Sobolyev * [85457c6a2] : Make VERSIONTYPE and THISREVISION also available for modules and other libs in subdirs that include Makefile.defs from the top-level. 2023-05-14 OpenSIPS * [526501447] : Rebuild documentation 2023-05-12 Ryan Bullock * [1421afc26] : Add unset_dlg_profile_all_values and ability the ability for unset_dlg_profile to remove all values, and for set_dlg_profile to remove a previous value or all values 2023-05-12 wangdd * [e871882cb] : feat: add get_mi_bool_like_param 2023-05-12 Razvan Crainea * [58c7abaf2] : aaa_diameter: skip newline in vendor_id detection 2023-05-12 Razvan Crainea * [81dd95f15] : Update MySQL DB migration scripts for "3.3 to 3.4" 2023-05-11 Liviu Chircu * [2eab4fc0a] : rtpengine: Enhance child init to work with mi() scripting Make sure to initialize the DB handle in the UDP/TCP workers as well, since nowadays they can also perform MI "rtpengine_reloads" as such: random SIP packet -> opensips.cfg -> mi("rtpengine_reload") Also, this commit fixes an issue where MI processes (mostly FIFO and HTTPD) were doing 2X the amount of communication with each RTPEngine on startup, due to the initialization being called twice in these: once in child_init(), then in mi_child_init() by calling child_init() again :-) Related to #3056 2023-05-11 Liviu Chircu * [da6a96aa5] : profiling.h: Fix missing `inline` (fix compiler warnings) In file included from pt.c:27: lib/dbg/profiling.h:58:12: warning: ‘_ProfilerStart_child’ defined but.. 58 | static int _ProfilerStart_child(const struct internal_fork_par.. | ^~~~~~~~~~~~~~~~~~~~ 2023-05-11 Liviu Chircu * [fb6e9bbf7] : db_http: Avoid crash on NULL DB handle Return an error and keep OpenSIPS running, do not abort. Related to #3056 2023-05-11 Liviu Chircu * [be99cb917] : Profiling: Use a different output fname for TCP workers 2023-05-11 Razvan Crainea * [2d1c109b7] : aaa_diameter: provide AVP as len+s, as they may contain binary data 2023-05-11 Razvan Crainea * [86e12dddf] : rtpengine: move E_RTPENGINE_STATUS doc in the proper place 2023-05-09 Liviu Chircu * [b0068befd] : Startup phase: Fix regression in 6940ca8cf The "attendant" process was no longer showing in MI "ps" command outputs due to being internally considered as "not running". 2023-05-09 wangdd * [9afa2ee4e] : Merge branch 'master' into dr_reload 2023-05-09 wangdd * [87157c1e8] : feat: add inhert_state of ds_reload 2023-05-08 Razvan Crainea * [028704c60] : aaa_diameter: allow -1 occurences, as they indicate infinite 2023-05-08 Razvan Crainea * [e72ef526d] : aaa_diameter: consider AVPs as INTs only if they are integers This allows the usage of AVPs that start with a number 2023-05-08 Razvan Crainea * [ba0612376] : aaa_diameter: make Transaction-Id optional if Session-Id is provided 2023-05-08 Razvan Crainea * [008b86165] : aaa_diameter: extend avps file to allow custom vendors 2023-05-08 Razvan Crainea * [1ebf1eef4] : aaa_diameter: allow freeDiameter to load extensions 2023-05-08 Razvan Crainea * [8d6542905] : aaa_diameter: provide aaa_url in the module This saves us from loading the auth_aaa module and its requirements just for providing the AAA client config. 2023-05-08 Bogdan-Andrei Iancu * [a2fefe4db] : [dialog] add $DLG_del_delay for per-call delete delaying The $DLG_del_delay variable allows per call setting of the delete delaying (see delete_delay modparam) 2023-05-08 Bogdan-Andrei Iancu * [24bfdf4c8] : [dialog] fixed missing unlock Unlock the list of dialogs to be deleted also if the dialog was already found in the list. Related to the new `delete_delay` functionality 2023-05-08 Bogdan-Andrei Iancu * [8e6000d5f] : [stun] migrate from "select" to standard IO reactor This will help coping with larger fds (above 1024) Fixes #3080 2023-05-08 Vlad Paiu * [5c8b40bfe] : Added get_glob_header_values 2023-05-08 Bogdan-Andrei Iancu * [afeb85865] : Revert "Reduce number of sockets created by closing off one half" This reverts commit a571e938e57b39b5e9759af6a9eda47f8aa081e2. This revert is needed as the commit breaks the IPC communication during startup , see #3081 2023-05-08 Bogdan-Andrei Iancu * [c9f5eff91] : Revert "pt: fix -std=c99 error" This reverts commit 4ea0ec3a74c3283166649ed4de11b2d7fb5a311e. This revert is needed in order to revert a571e938e57b39b5e9759af6a9eda47f8aa081e2 also 2023-05-07 OpenSIPS * [222116d29] : Rebuild documentation 2023-05-06 Razvan Crainea * [4ea0ec3a7] : pt: fix -std=c99 error Thanks go to Nick Altmann for reporting it 2023-05-05 Maksym Sobolyev * [a571e938e] : Reduce number of sockets created by closing off one half of the socketpair in child after forking. This results in 30% decreate of the total number of sockets allocated, from 8k to some 5.8k on my test config with 10 workers and 10 sockets. 2023-05-05 Bogdan-Andrei Iancu * [075789fb7] : update README files 2023-05-05 Bogdan-Andrei Iancu * [d4db20087] : [call_center] fix skill overflow on refreshing agents via MI Completes 6617ecc805520961642c16ac1e6c5a49787af2ab 2023-05-04 Bogdan Andrei IANCU * [c46514827] : Merge pull request #3076 from wangduanduan/ds_reload_1 feat: add inherit_state to ds_reload 2023-05-04 wangdd * [4c619847d] : feat: add inherit_state to ds_reload 2023-05-04 Bogdan-Andrei Iancu * [6617ecc80] : [call_center] fix overflowing the per-agent array of skills As the array of skills is pre-allocated inside the agent struct, be sure you do not overflow it when populating the agent's skills (from DB). Also, the logstate/logged_in value for an agent is read from DB or MI and it must be forced to 0/1 values, as it is later used as index. Yet another overflow fixed here. 2023-05-03 Bogdan-Andrei Iancu * [54b03a172] : [acc] removed old workaround multiple int2str() in acc_extra Since 2.3 we actually do not need this, as each acc_extra is individually set into its own buffer. Related to 6c0b37f907d30749266e2deca3c9ccc475dd32e4 2023-05-03 Liviu Chircu * [1ec041d36] : tm: Add performance measurement logs for both timers 2023-05-02 Giedrius * [7ea4f1ffd] : b2b_entities: add more randomness to callid generation to handle client_htable collisions 2023-05-02 Vlad Patrascu * [c6ef3a44b] : [mid_]registrar: add missing file from commit ad37cac 2023-04-29 Norm Brandinger * [bb989775f] : Fix: indentation 2023-04-29 Norm Brandinger * [124fdd148] : Fix: typo in error message 2023-04-29 Norm Brandinger * [7bd5ff8ee] : Fix: regex segfault of max_groups is exceeded 2023-04-28 Vlad Patrascu * [806381ed4] : sample config: update lookup() 'm' flag 2023-04-28 Vlad Patrascu * [3b301fd7b] : [mid-]registrar: fix a flag fixup issue for save() and lookup() Properly detect the presence of key-value flags. 2023-04-28 Vlad Patrascu * [25078bd3e] : [mid-]registrar: add migration hints for new named flags 2023-04-28 Vlad Patrascu * [a06bc529b] : nathelper docs: add migration hints for the new named flags 2023-04-28 Vlad Patrascu * [f2bd6174d] : tm docs: add migration hints for t_relay()'s flags 2023-04-26 Vlad Pătrașcu * [cdb5d4986] : Merge pull request #3065 from Ellipsis753/patch-1 Fix buffer overflow in b2b_logic 2023-04-26 Vlad Pătrașcu * [895a53440] : Merge pull request #3063 from jes/master Fix 'NO_SSL_GLOBAL_LOCK' typos 2023-04-26 Vlad Patrascu * [376740036] : registrar: fix unit tests 2023-04-26 Liviu Chircu * [1a753be3c] : aaa_diameter: Fix uninitialized variable Makes GCC happy! 2023-04-26 Liviu Chircu * [d571c4d23] : Add a useful notice regarding allocator stress-tests 2023-04-26 Vlad Patrascu * [ad37caca9] : [mid-]registrar: replace letter flags with CSV named flags Replace the letter flags for the [mid_registrar_]save() and [mid_registrar_]lookup() script functions with a CSV list of named flags. 2023-04-26 Vlad Patrascu * [4cfb798b0] : b2b_logic: replace letter flags with CSV named flags Replace the single letter flags for the b2b_init_request() and b2b_bridge() script functions with a CSV list of named flags. 2023-04-26 Vlad Patrascu * [819eba064] : nathelper: add RFC 6333 addresses in the nat_uac_test() checks 2023-04-26 Vlad Patrascu * [f18885771] : nathelper: use CSV named flags for script functions Translate integer flags to CSV named flags for fix_nated_sdp() and nat_uac_test(). 2023-04-26 Vlad Patrascu * [b836accae] : tm: replace t_relay() integer flags with CSV named flags 2023-04-26 Razvan Crainea * [c44566adb] : uac: specify in-dialog auth without dialog limitations in docs 2023-04-24 Shanee Vanstone * [5108444dc] : Fix buffer overflow in b2b_logic 2023-04-24 Bogdan-Andrei Iancu * [6c0b37f90] : [acc] workaround for compiling issue Related to 0ff82562bd74a177184b1e179c3a607446c47b78 We need to review this logic (of static_detector) as it looks to be broken as it is now. 2023-04-24 Bogdan-Andrei Iancu * [0ff82562b] : Fix logging multiple IPs in the same time Use a multiple static rotating buffers for convering the IPs to str, so that we can print multiple IPs in the same time. Closes #3062 Reported by @jes 2023-04-21 Maksym Sobolyev * [410c30687] : Add function to register at fork handlers to be called in child after each fork. Examples of such function would be calling _ProfilerStart() routine, or task of closing redundant pipes / socketpair ends used for IPC to reduce overall file descriptors consumption. 2023-04-21 Maksym Sobolyev * [1b7b1ffc1] : Organize internal_fork() parameters into a struct; 2023-04-21 James Stanley * [a78234d02] : Fix 'NO_SSL_GLOBAL_LOCK' typos 2023-04-21 Bogdan-Andrei Iancu * [e09056b41] : [tm] added statistics to report retransmissions and timeouts retransmission_req_T1_1 retransmission_req_T1_2 retransmission_req_T1_3 retransmission_req_T2 retransmission_rpl_T2 timeout_finalresponse timeout_finalresponse_inv 2023-04-20 Liviu Chircu * [5fc57e944] : cfgutils: Add support for large diffs in ts_usec_delta() This patch reworks the 5th parameter as a string output variable, thus avoiding issues related to integer overflows when the time diffs get larger (e.g. differences of 35+ minutes, which are not uncommon). Note: NOT backwards-compatible 2023-04-20 Bogdan-Andrei Iancu * [422f815f5] : [uac] update and improve docs for uac_auth() 2023-04-19 Maksym Sobolyev * [6940ca8cf] : Rework startup lock using atomic variable + waitpid(WNOHANG). Turns out you cannot lock mutex in thread A and then let thread B to unlock it with POSIX threads. 2023-04-19 Maksym Sobolyev * [fef5f53cf] : Make stdatomic-systems (i.e. risc-v) usable outside of the statistics module. Had to shuffle some headers around to resolve changed dependencies. 2023-04-19 importos * [fcce85ce2] : Add get_pseudoVar() and set_pseudoVar() to msg object. Those functions allow Python code to access and manipulate pseudo-variables. PR #2317 +Documentation by: @sobomax 2023-04-19 Liviu Chircu * [bdaaf60b2] : F_MALLOC: Add LHS coalescing on free() operations This is a continuation/rework of commit fb9a3777, which intended to address the de-fragmentation issues where performance would drop. Unfortunately, there were still memory allocation / releasing patterns which still lead to heavy fragmentation. For example, an MI "dlg_list" command, which allocates fragments from Left -> Right as the dialog list is walked: Chunk-1 Chunk-2 Chunk-3 ... Chunk-N After building the MI output, the chunks were also freed Left -> Right. Due to the former allocator logic of RHS-only coalescing, the coalescing would never happen! In some cases, this could lead to fragmentation of an indefinite amount of memory, given enough time (e.g., even 8 GB PKG). This patch adds LHS coalescing to F_MALLOC, such that when "Chunk-2" is freed, in the above example, the allocator tries to merge it with both "Chunk-1" and "Chunk-3" before exiting the free() function (depending on the state of chunks 1 and 3, this could mean 0, 1 or 2 coalescings). This F_MALLOC patch was stress-tested using the mem/test/ testing suite. Many thanks to @fedkis and @ankogan for helping troubleshoot the issue and also test the current version of this patch! Fixes #2726 2023-04-19 Bogdan-Andrei Iancu * [8be536447] : [acc] fix leaking of AAA request for CDRs Closes #3019 Credits go to @medeanwz 2023-04-18 Razvan Crainea * [6afd0e610] : rtp_relay: handle FAKE_MSG replies Thanks go to @devoxy1 for reporing it in #3058 2023-04-18 Razvan Crainea * [c8458a3c1] : tm: proper matching of transaction for auto-CANCEL handling 2023-04-18 Bogdan-Andrei Iancu * [2d6dbf7ec] : [callops] Fix bad MI array termination Closes #3057 2023-04-18 Bogdan Andrei IANCU * [24ba63a41] : Merge pull request #3060 from purecloudlabs/hotfix/fix-qop-value-for-md5-hashing uac_auth: fix qop-value for MD5 hashing 2023-04-18 Bence Szigeti * [eee7b96bc] : uac_auth: fix qop-value for MD5 hashing Co-authored-by: Adam Overbeeke 2023-04-12 Razvan Crainea * [3f60fda32] : registrar: fix docs remove_ip_port example 2023-04-11 Bogdan Andrei IANCU * [3292a5a49] : Merge pull request #3039 from jes/master Add REUSE_PORT socket option 2023-04-10 Liviu Chircu * [00a19ede8] : auth: Avoid abort() if len(secret) is not 32 bytes Before OpenSIPS 3.2, the "secret" modparam supported random-length strings, to be hashed into an MD5 computation when generating the nonce. Starting with 3.2 and the new AES-CBC based nonce generation algorithm, the "secret" has been restricted to 32-bytes only, however OpenSIPS would assert() -> abort() on startup without displaying any helper error if the user supplied a different-length secret. Many thanks to @thuroc for an accurate report on the assert() issue! Fixes #3043 2023-04-10 Liviu Chircu * [d4b03b7d0] : event_route: Fix off-by-one error in some $param warning log 2023-04-10 Bogdan-Andrei Iancu * [1a8f8e47b] : Fix strange `"error":null` JSON node An `error` node with NULL value does not make much of a sense, but let's try to handle it. Closes #3047 2023-04-10 Bogdan-Andrei Iancu * [d8b28e4cd] : Fix doc typo Closes #3048 2023-04-10 Bogdan-Andrei Iancu * [3de85c63f] : Fix `nameaddr.param` without index Closes #3040 2023-04-10 Vlad Paiu * [354d42d3f] : Added MI function to reset all stats that are resettable. 2023-04-10 Bogdan Andrei IANCU * [4effde8e6] : Merge pull request #3054 from MayamaTakeshi/drouting_probe_error setting pack_last->next to NULL when iteration finishes 2023-04-10 MayamaTakeshi * [26c3cc36f] : Need to check if pack_last is not null as there might be no gws to probe 2023-04-10 MayamaTakeshi * [2b0a3ff87] : setting pack_last->next to NULL when iteration finishes 2023-04-04 Vlad Patrascu * [7db943fd3] : b2b_logic: fix bridging with provisional media and rollback feature When using the b2b_bridge() function with the 'f' flag and provisional media, we may end up in a state where the remaining entities in the call are disconnected in terms of media, after the new entity rejects the call. This commit will trigger an additional SDP renewal sequence between the bridge initiator and it's original peer entity. 2023-04-03 Vlad Patrascu * [91fdcfda5] : b2b_logic: fix possible crash while bridging When processing a 200 OK while bridging, an old pointer to a temporary, already freed entity was being used when saving the out SDP for the second bridge entity. 2023-03-31 Vlad Patrascu * [4d0199f00] : b2b_logic: fix inconsistent Contact building mechanism Make sure the Contact is always built by first attempting to use the server_adress modparam and then, if it's not set, by using the socket where the current message is received (or the forced send socket). 2023-03-31 Razvan Crainea * [c1dfd5007] : rtpengine: fix play_dtmf callid and tags specifications 2023-03-31 Razvan Crainea * [11f685ffa] : b2b_entities: match e2e ACK according to dlg, not transaction This change presumes that uas_tran is no longer reset on 200 OK, but kept in memory until the ACK comes in. 2023-03-30 Razvan Crainea * [66bc6fd8f] : tm: expose t_release_transaction in API 2023-03-30 Vlad Patrascu * [a72cfbeda] : b2b_logic: ignore replies to NOTIFYs sent while bridging This will get rid of the races between the processing of the replies for the NOTIFY and the subsequent BYE sent to the bridge initiator. The entity might be already deleted as a result of handling the 200 OK for the BYE before we try to do a lookup again for handling the NOTIFY reply. These races would not produce any significant negative effects but OpenSIPS would log unnecessary 'No b2b_key match found' errors. 2023-03-30 Vlad Patrascu * [266e5524a] : b2b_logic: fix a bridging issue when using the 'peer' identifier Don't fail the bridging action when using the 'peer' identifier for the b2b_bridge() function and the current entity is already deleted. 2023-03-30 Vlad Patrascu * [312cdd4da] : b2b_logic: fix crash when sending NOTIFY for local timeout This commit fixes a crash when using the 'n' flag of the b2b_bridge() function, and a local timeout occurs. The crash was caused by improperly setting the first line of the the dummy SIP message built by the b2b_entities module. 2023-03-29 Razvan Crainea * [89b7c8d5c] : params: duplicate INT value as string This prevents errors raised when comparing the INT with STR 2023-03-28 Razvan Crainea * [16f5212d8] : params: initialize expanded parameters Also, do not indicate that an INT also has a STR value if it doesn't, because other functions might try to evaluate it; and combined with the lack of initialization, it might end up reading whatever leftovers are in the `.rs` field, posibly leading to a crash. Many thanks to Nick Altmann for reporting this and Liviu Chircu for testing and support :) 2023-03-27 Vlad Patrascu * [159fc077b] : dialog: support named scripting flags Dialog flags will now be handled as alphanumerical values instead of integer bit indexes, in the same way as the message and branch scripting flags. 2023-03-24 James Stanley * [cabe59149] : Add REUSE_PORT socket option This allows outgoing TCP connections to reuse a listening port as a source port. This is useful for example when using "forced_socket" with the "uac_registrant" module, or when using "force_send_socket()". The behaviour of sockets that do not use the REUSE_PORT option is unchanged. 2023-03-23 Maksym Sobolyev * [baf0d2f1a] : Improve child startup error handling by creating a "startup" mutex, locking it before fork in parent and letting child to unlock it once initialization is complete (or fails). The parent then waits on this mutex to read out error code and proceed accordingly. 2023-03-23 Maksym Sobolyev * [6dbe3d3fc] : Pass error code to the caller if ProfilerStart() fails. 2023-03-23 Maksym Sobolyev * [97aa57ced] : Implement lock_destroy() for pthread-based locking. 2023-03-23 Bogdan Andrei IANCU * [05c98f449] : Merge pull request #3037 from okhowang/ping_interval nat_traversal: remove min interval limit 2023-03-23 okhowang * [726246b13] : nat_traversal: remove min interval limit 2023-03-23 Bogdan Andrei IANCU * [9c2d99de6] : Merge pull request #3038 from okhowang/tracer-leak tracer: Don't modify shm msg in trace_onreply_out 2023-03-23 okhowang * [c4f2e025e] : tracer: Don't modify shm msg in trace_onreply_out 2023-03-23 Bogdan Andrei IANCU * [8f41fccfa] : Merge pull request #3012 from purecloudlabs/bug/rport_param_corrupts_via_header add_local_rport script function corrupts VIA header params 2023-03-22 Maksym Sobolyev * [081d06d9b] : Initialize hostname to make compiler happy. 2023-03-22 Maksym Sobolyev * [f3fe6c4d4] : Add support for "cunix" variant of the local unix domain communication socket, which is similar to "unix" but does not require re-connecting the socket for every request thus having lower overhead compared to that one. It is supported by rtpproxy for number of years. 2023-03-22 Maksym Sobolyev * [e79c76c07] : Set POLLRDHUP on Linux when polling rtpproxy's socket to drain any unclaimed data. This seems to be necessary on TCP sockets otherwise poll() appears to hang indefinitely if rtpproxy has been terminated despite timeout being set to 0 (i.e. don't block). With this flag set the disconnect is properly detected and socket is re-connected after configured timeout. 2023-03-22 Bogdan-Andrei Iancu * [a6ef19688] : [dialog] fix bad examples with invalid profile name The name of a dialog profile is an alphanumerical string. Make this clear in the doc and also fix the broken examples. 2023-03-20 Bogdan-Andrei Iancu * [921fa4fad] : Some missing extern var declaration Fixes 381f9cfeecda402bbd2d6d972a23436d4a2b6b30 2023-03-20 Bogdan-Andrei Iancu * [e84297e71] : Merge branch 'jes-master' 2023-03-20 Bogdan-Andrei Iancu * [0a1e369ad] : Just a small var rename Related to 381f9cfeecda402bbd2d6d972a23436d4a2b6b30 2023-03-20 Bogdan-Andrei Iancu * [381f9cfee] : Merge branch 'master' of github.com:jes/opensips into jes-master 2023-03-20 David Trihy * [66b910c67] : PR Comments 2023-03-19 OpenSIPS * [4a59f1b75] : Rebuild documentation 2023-03-17 James Stanley * [0dc8fc8c9] : Cap TCP workers at tcp_workers_max_no 2023-03-17 Bogdan-Andrei Iancu * [c0af4fe6a] : [async] fix setting restoring type route after running report route for launch() Fixes #3034 2023-03-16 Maksym Sobolyev * [d71fbacea] : If we did not request qop to start with when challenging then no additional work needs to be done after receiving authentication with no qop. Reported by: efes99999@gmail.com, callum.guy@x-on.co.uk, gshepard@sangoma.com 2023-03-16 truong.hua * [b22f6a7ff] : Fix NULL to_uri due to b2b_msg_get_to is called after accessing to_uri in case of adv_ct is not set, so contact uri can not be parsed if advertise_contact is not provided (cherry picked from commit 33bf27722c3b1517964f60642b691b45faf497d2) 2023-03-16 Bogdan Andrei IANCU * [48c051fc1] : Merge pull request #3020 from nexbridge/temp Fix bug in weight-based sort 2023-03-15 nexbridge <13848887+nexbridge at users.noreply.github dot com> * [c7f1892a5] : Update drouting.c Modified bug fix as requested 2023-03-14 Maksym Sobolyev * [4fe657273] : Expect that protos[proto].name can be NULL. 2023-03-14 Maksym Sobolyev * [1419ee3ad] : Fix off-by-one error allocating space for protos[]. Reported by OSS-Fuzz. 2023-03-14 Maksym Sobolyev * [8507f5449] : Provide some dictionary to start with. 2023-03-14 Maksym Sobolyev * [e1c60a102] : Fix a pkg memory leak: when parsing of the Contact fails, free all associated parameters that have been parsed so far, not just the contact structure itself. Reported by OSS-Fuzz. 2023-03-14 Maksym Sobolyev * [7c0bdc9bd] : Fuzz v2: o fuzz built-in variables. o fuzz some simple core functions. o allow to build stand-alone fuzzers useful to debug crashes reported by oss-fuzz; o unify fuzzers initialization; 2023-03-14 Maksym Sobolyev * [758b88f61] : Allow fuzzer access into core_cmds and core variables. 2023-03-14 Maksym Sobolyev * [e963b4dfc] : Fix skip_name() to not generate strings with bogus length. Discovered by OSS-Fuzz. 2023-03-14 Maksym Sobolyev * [1d957112b] : Don't redefine _DEFAULT_SOURCE if it's already set. 2023-03-14 Maksym Sobolyev * [bcaacb70a] : Fix compiler warning: unused variable 'optval' 2023-03-14 Maksym Sobolyev * [1093122ed] : GC unused local variable, add missing return, fix logic around decider. 2023-03-14 Maksym Sobolyev * [91990d6c5] : Use LM_ERR() not LM_CRIT() to report parsing errors, like we do in other cases. 2023-03-14 Razvan Crainea * [7f845994b] : event_route: fix crash when raising with no params When raising an event using `raise_event` with AVP values that are not correctly populated, it triggers a corner case in the event_route module: the module "serializes" the parameters just after the event, hence, if there is no expanded parameter, the first parameter ends up pointing to a bogus value, resulting in a crash. This commit fixes this corner case by treating it (0 expanded parameters) just as if there no parameters passed at all. Many thanks to David Escartin from Sonoc for the help in troubleshooting this issue! 2023-03-13 James Stanley * [5ba4ddb2d] : Fix typos 2023-03-13 James Stanley * [f42e0c1ec] : Don't increase tcp_workers_no above tcp_workers_max_no 2023-03-12 OpenSIPS * [e85877528] : Rebuild documentation 2023-03-10 Vlad Patrascu * [56fa7127d] : dialog: fix bad MI printing of dialog values in previous commit 2023-03-10 Vlad Patrascu * [543a40c8f] : dialog: support integer type for dialog values 2023-03-10 Bogdan-Andrei Iancu * [bfb62212e] : Fix race in TCP Main <> TCP Worker communication As a TCP worker has 2 comm channels (one TCP worker specific and one worker generic) to TCP Main, be sure we have a consistent communication (over the 2 channels) between the TCP worker and TCP main. The actual fixed race: the TCP workers creates a new TCP conn (and sends this event as TCP worker to Main) and when trying to write to the conn it fails (and sends back a bad-conn event to Main, but as generic worker) - the 2 events are delivered via different comm channels, so their order may be lost, reasulting to bogus behavior 2023-03-07 Maksym Sobolyev * [addfa631c] : Bye ubuntu-18.04. 2023-03-07 Maksym Sobolyev * [3a0b316a1] : Fix what seems to be a typo, calling sockaddru_len() on unitialized local structure is likely to produce bogus result causing getsockname() to fail silently and produce no useable address. This error has been masked on Linux, since Linux has no sa_len structure and the sockaddru_len() in that case defaults to sizeof(struct sockaddr_in) unless local_su happens to have s.sa_family==AF_INET6. This however means that IPv6 has been somewhat broken for TCP & TLS. 2023-03-07 Vlad Patrascu * [9999d3137] : tls_wolfssl: fix regression in commit 77f5f5a The wolfSSL_CTX_load_verify_locations_ex() function would still return an error when no valid CA certificate was found in the directory. Since before commit 77f5f5a, opensips startup would not fail when wolfSSL_CTX_load_verify_locations_ex() would return an error, the change in the above commit would constitute a regression for cases where no valid certificate is found in the directory. This commit brings the wolfssl behavior further in line with openssl. 2023-03-07 Razvan Crainea * [fc35f7308] : avpops: document the returned value in case of NULL Due to the fact that an AVP cannot contain `NULL` values, we cannot store `NULL` database values in AVPs. Hence, we store the `` value This commit simply documents the behavior, as reported in #3027 2023-03-06 Liviu Chircu * [532d8e837] : rest_client: Improve async() handling in "delayed 200 OK" scenarios In case the 200 OK reply or its body take several seconds to arrive, do not break the loop prematurely due to a 500ms hardcoded loop timeout and re-use the configurable "curl_timeout" modparam as loop timeout instead. 2023-03-06 Vlad Patrascu * [3b5773880] : clusterer docs: fix module parameter name 2023-03-06 Vlad Patrascu * [1e881579b] : b2b_entities: add an UAC/UAS API via script/MI functions and events Add ability to directly start or accept sessions as a UAC/UAS from script or MI, independently of any controlling "b2b" logic. 2023-03-05 OpenSIPS * [931af6672] : Rebuild documentation 2023-03-03 Maksym Sobolyev * [5f17c118d] : Also run unit tests on foreign arches using qemu. Limit cache size to 100MB per variant. Display ccache stats for every build it's been used with. 2023-03-01 Maksym Sobolyev * [6faf77bba] : Move logic to build test harness into a separate scripts. 2023-03-01 Maksym Sobolyev * [4e36f5b3d] : Use ccache to speed-up multi-architecture builds. 2023-03-01 Maksym Sobolyev * [c4a6e3fb5] : Use the same working directory for builds in container as we do for normal case. 2023-03-01 Maksym Sobolyev * [cc91247ed] : Update badges to include all active workflows, remove defunct Travis.CI badge. 2023-02-28 Maksym Sobolyev * [05a069f41] : Run arm64, arm32, i386 (32-bit) and mips builds in a containers. Move everything to run using ubuntu-22.04. Add qemu-based builds allowing to build the whole set of modules and move all cross-builds into a separate workflow for clarity and faster turn-around time on basic builds. 2023-02-28 Maksym Sobolyev * [69cc74db3] : Fix type mismatch (int vs long) on 32-bit arches. 2023-02-28 Maksym Sobolyev * [caca09a08] : Fix issue running assembler on ARMv7: /tmp/ccSM4dht.s: Assembler messages: /tmp/ccSM4dht.s:175: Error: thumb conditional instruction should be in IT block -- `strexeq r3,r1,[r2]' 2023-02-28 Maksym Sobolyev * [7f2bf4ff8] : Make sure shm_hash_usage matches prototype. 2023-02-28 Maksym Sobolyev * [0309b835d] : Also recognize __ARM_ARCH_7A__ as armv7, this is needed to build on latest ubuntu-22. 2023-02-28 nexbridge <13848887+nexbridge at users.noreply.github dot com> * [6ef8168a8] : Update drouting.c In weight_based_sort() function: - Changed RAND_MAX to RAND_MAX + 1 to make sure that quotient is always less than 1 - Changed float to double to avoid rounding errors, particularly when the value of rand() nears RAND_MAX and thus the quotient could round to 1 2023-02-27 Maksym Sobolyev * [22ebcb926] : Use do_build.sh to execute the "test" target to make sure everything is setup correctly (i.e. CC variable). 2023-02-27 Maksym Sobolyev * [6ffef192f] : Pass -e to script to pass through error code. I thought it is the default. 2023-02-27 Liviu Chircu * [843086bef] : Profiling: Fix crash if startup is aborted 2023-02-26 Maksym Sobolyev * [a522ff97e] : Revert "Get rid of an ugly `#include "../foo.h"'." This reverts commit 72a0d852e04328cfcf2c4c74950ddb1bba32e99e. 2023-02-26 OpenSIPS * [0de9e741d] : Rebuild documentation 2023-02-24 Maksym Sobolyev * [b52ffeed5] : Don't override LIBS, add to it. It's not possible to have centralizedly managed settings like LTO otherwise. 2023-02-24 Maksym Sobolyev * [99e257b92] : Enable LTO for unit_tests build. 2023-02-24 Maksym Sobolyev * [72a0d852e] : Get rid of an ugly `#include "../foo.h"'. 2023-02-24 Maksym Sobolyev * [7cacb798c] : GC comment that does not match reality anymore. 2023-02-24 Maksym Sobolyev * [8db7beb59] : Do unit tests at full optimization level. Certain bugs are only exposed this way. 2023-02-24 Maksym Sobolyev * [82445ea42] : o Make sure size variable is initialized; o Pass arguments into DBG_SHM_FREE() macro explicitly instead of snooping into local context. 2023-02-24 Maksym Sobolyev * [8e6cdc7f3] : Add a new pipeline for running unit tests. Disable cross builds for now, let's focus on getting things running first. GC ubuntu-18 to be decomissioned soon, add clang-14 & 15. Collect and upload test logs. 2023-02-24 Maksym Sobolyev * [84a8d0ce7] : Enable clang-14 & clang-15, make stage names more descriptive. 2023-02-24 Maksym Sobolyev * [6103b683b] : clang-15 fix: make child_init() prototype match actual function. 2023-02-24 Maksym Sobolyev * [272d9f05a] : clang 15 fix: get rid of variable that is set but not used. 2023-02-24 Maksym Sobolyev * [553564cde] : clang15 fix: define function prototype properly. 2023-02-24 Maksym Sobolyev * [3d9f97412] : clang 15 fix: comment out variable that is set but not used. 2023-02-24 Maksym Sobolyev * [969edc43d] : Fix few fallouts from unsigned char -> char conversion in md5 code. 2023-02-24 Maksym Sobolyev * [6ea875155] : Fix build with clang 15: get rid of the 30-year old PROTO_LIST hack to deal with some prehistoric compilers. Switch public API to use char *, not unsigned char *, which is kinda pointless. Also make arguments const where appropriate. 2023-02-24 Maksym Sobolyev * [00ca2980d] : Make sure we can tweak LIBS from Makefile.conf. 2023-02-24 Maksym Sobolyev * [49cecf7f6] : Add a knob to forcefully disable sha256/512 support (needed for cross-builds). 2023-02-24 Maksym Sobolyev * [ed471b56a] : Fix breakage in 23eb399abc. 2023-02-24 Maksym Sobolyev * [d6399a8a2] : Allow passing some extra variables to make. 2023-02-24 Maksym Sobolyev * [c39657ebd] : Make unit-tests great again after 1174566959b and 2107a5c02ee. Resolve TODO item by @razvanc. Make 'make test' working if UNIT_TESTS is enabled from the command line as well. 2023-02-22 Razvan Crainea * [de5347c29] : media_exchange: properly handle internally generated timeouts 2023-02-20 Liviu Chircu * [16472ab84] : xlog_level: Do not abort startup on a negative value 2023-02-20 Liviu Chircu * [227f2c82d] : usrloc: Remove bogus "unsused" parameter to MI 'ul_add'; Improve docs 2023-02-19 OpenSIPS * [2f145caa6] : Rebuild documentation 2023-02-17 Liviu Chircu * [31f526555] : statistics docs: Fix quoted integers in function call example Credits to Fabien Aunay for the report! 2023-02-16 Maksym Sobolyev * [22d0b714d] : Revert "Use apt-spy2 to sanitize list of apt mirrors." This reverts commit 72b74d80c57e8c0ed9095da6723db9da46e9438e. 2023-02-16 Maksym Sobolyev * [bc6aeb724] : Initialize variable to avoid issue compiling with gcc on ubuntu-22. 2023-02-16 Maksym Sobolyev * [0f011eabf] : Don't pass unsigned short * into a function that expects unsigned int *. This fixes the following error building with gcc on ubuntu-22: sipmemcache.c: In function `l_sipmemcache_server_add`: ../../ut.h:685:13: error: array subscript `unsigned int[0]` is partly outside array bounds of `in_port_t[1]` {aka `short unsigned int[1]`} [-Werror=array-bounds] 685 | *_r = 0; | ~~~~^~~ sipmemcache.c:72:13: note: while referencing `iport` 72 | in_port_t iport = 0; | ^~~~~ 2023-02-16 Liviu Chircu * [6b9e140f6] : route params: Fix regression in 8761ce6d20 The patch assumed that variables with PV_VAL_INT|PV_TYPE_INT have symmetric values (e.g. 5 and "5"), whereas this is not always the case (e.g. 1 and "INVITE", returned by $rm) and would proceed to duplicate the output buffer as a int2str() buffer, for safety purposes. The fix is to avoid the duplication completely (i.e. do not overwrite "INVITE" with "1"), thanks to the route params array string buffers having a sufficiently large lifetime in order to be safely returned to the calling code asking for the route parameter. 2023-02-16 Vlad Patrascu * [4b3ff72b7] : b2b_entities: remove no-op and improve code clarity Related to #3011 2023-02-16 Ovidiu Sas * [a7eb93624] : b2b_entities: don't try to get the lock if the l;ock was alredy taken - closes #3011 - this part of the code should be reviewed and cleaned up or clarity 2023-02-16 Liviu Chircu * [8899d8a75] : ut.h: Add some clock-based code performance measuring utils 2023-02-16 David Trihy * [51de85f3b] : add_local_rport script function corrupts VIA header params 2023-02-15 Ovidiu Sas * [7a807cc4a] : b2b_entities: fix the debug locking log - in order to detect deadlocks, we need to print the locking log before the actual locking 2023-02-15 Liviu Chircu * [656a875b5] : Fix bad subtraction algorithm in get_time_diff() The gettimeofday(2) function actually returns the .usec as a *relative* value instead of absolute one, as can be seen below, hence it is incorrect to subtract the @begin.tv_usec field from the @end.tv_usec@ field, as this can lead to a negative number! 1676481011 893759 1676481012 144123 1676481012 394239 1676481012 644397 1676481012 894537 1676481013 144690 1676481013 394849 1676481013 644960 1676481013 895110 1676481014 145278 1676481014 395429 ... This will potentially fix occasional false-positive "processing threshold exceeded" alerts (e.g. SIP, DNS, TCP, etc.), especially when dealing with sub-second time differentials! PS: the fact that this function is limited to measuring a time diff of 2147 seconds is best left for another commit... 2023-02-14 Maksym Sobolyev * [6bb21b7f5] : Make *_export_t const for all modules (part II of e470daa4). This includes: o cmd_export_t []; o param_export_t []; o stat_export_t []; o dep_export_t []; o acmd_export_t []; o trans_export_t []; o mi_export_t []; o pv_export_t []; o proc_export_t []; o evi_export_t []. The only exception is modules that provide param to alter number of children via module parameter (mi_datagram & sipcapture). 2023-02-14 Maksym Sobolyev * [fa652e8ef] : Also fix odbcinst1debian2, odbcinst and libodbc1 to 2.3.7. 2023-02-14 Maksym Sobolyev * [72b74d80c] : Use apt-spy2 to sanitize list of apt mirrors. 2023-02-14 Maksym Sobolyev * [e8000f06b] : Revert commits that were not intented to be pushed. (445a301ab8, 156b0bcaec, 906dd21dfb, 64857eccd7). 2023-02-14 Maksym Sobolyev * [be1fde513] : Fix unixodbc to 2.3.7 to see if it fixes our issues. 2023-02-14 Maksym Sobolyev * [826bb1002] : See if unixodbc.h is available somewhere. 2023-02-14 Maksym Sobolyev * [e470daa48] : Make appropriate fields of the module_exports const. 2023-02-14 Maksym Sobolyev * [6e03e9f47] : Use apt-spy2 to pick the best mirror. 2023-02-14 Maksym Sobolyev * [7b2255959] : Ubuntu 20.4 only. 2023-02-14 Maksym Sobolyev * [9cee0378c] : Disable ubuntu 22 builds. 2023-02-12 OpenSIPS * [3ccace374] : Rebuild documentation 2023-02-09 Bogdan-Andrei Iancu * [3ad695f12] : Remove un-used variable related to 05d1da7df6310392b369334540229518a89b4dc8 2023-02-09 Bogdan-Andrei Iancu * [a2360a96b] : Fix bad spelling 2023-02-09 Bogdan-Andrei Iancu * [05d1da7df] : Content-Len hdr is not mandatory if UDP with no body Completes df28a168dbc1c2ba1ec166c7b5b20f4f8fce2cfc 2023-02-09 Bogdan-Andrei Iancu * [df28a168d] : [sipmsgops] Content-Len hdr is not mandatory if UDP with no body 2023-02-08 Liviu Chircu * [cad9bd0b6] : struct hist: Also record the history for "NULL" objects While the history of a "NULL" object isn't much of a rich/useful piece of information, allowing it may help prevent errors in some cases, due to "sh_push()" returning an unexpected NULL value => crash. 2023-02-08 Liviu Chircu * [19bda5af8] : uac: Fix regression in 3d6a4bb67 A bug was introduced, where uac_replace_xxx() cannot be called anymore per each branch. This commit fixes the bug, by also ignoring multi-calls within a single branch_route -- there is simply too much state to keep, only for the sake of detecting an issue rooted in the "lumps" mechanism. 2023-02-07 Vlad Patrascu * [f60298215] : mem: fix compilation if HP_MALLOC is defined and Q_MALLOC is not 2023-02-07 Liviu Chircu * [e060fe934] : parse_content_length(): Fix out-of-bounds read edge-case (OSS-Fuzz) This patch fixes several off-by-one read overflows while parsing a bad Content-Length header. Similar to a008e7c23, the error was mostly harmless, as the supplied buffer is typically much larger in the runtime usage of parse_msg(). Severity: Low Fixes OSS-Fuzz#53397 2023-02-07 Vlad Patrascu * [8ac57f608] : mem: fix computing of frag size used for debugging in shm free This also fixes compilation when Q_MALLOC is not defined. 2023-02-07 Liviu Chircu * [3d6a4bb67] : uac: Add basic detection for multiple uac_replace_xxx() calls This patch adds a lightweight detection of multiple calls to uac_replace_from() or uac_replace_to() during the processing of a SIP request, using an int bitmask stored in the current SIP message context. Returning an error helps avoid producing a bad SIP From/To header, with doubled URIs due to doubled lumps, etc. Still, to compromise between safety and performance, the case where multiple uac_replace_xxx() get called during a failure_route is not detected, as this would require extra TMCB_ON_FAILURE callback, which is a bit of overkill just for the sake of scripting QoL... Fixes #2720 2023-02-07 Bogdan-Andrei Iancu * [cd191d4b2] : Avoid publishing pkg and load stats for procs with no IPC If IPC is not supported by a process, the pkg stats cannot be collected from it. Also such process is not able to compute internal load. 2023-02-07 Liviu Chircu * [a117dc8dc] : registrar: Fix possible crash in remove_ip_port() The release_urecord() function may actually delete the AoR on the spot, including the map_t node which the iterator is currently at! This was causing an invalid SHM memory read when calling iterator_next(), potentially running into a crash. The fix is to advance the iterator ahead of time, before the release_urecord() call. Fixes #2954 2023-02-06 Vlad Patrascu * [cea7b88d5] : Add support for in-memory logging of shm operations This is enabled via the new 'shm_memlog_size' global parameter which configures the maximum number of operations to keep in the history. A separate memory block, dedicated for this shm debug info will be allocated. A single 'struct struct_hist' type object will be added to the list for each alloc/free operation. 2023-02-06 Vlad Patrascu * [5b1d464ab] : b2b_logic: fix crashes due to dangling tuple pointer Make sure to not access a tuple that might have been freed while not holding the lock. Many thanks to David Escartin from Sonoc for the help in troubleshooting this issue! (cherry picked from commit 1225b0191afdf0a36e14bf47f5cac908e5af5603) 2023-02-06 Vlad Patrascu * [1d3448cb7] : b2b_entities: fix crashes after running the script request route After releasing the lock and running the script request route, check if the dialog has not been deleted in the meantime. Credits to David Escartin from Sonoc for reporting. (cherry picked from commit 65a8da41f58ba3179c62c83a2d710651c97b36ca) 2023-02-06 Vlad Patrascu * [cc2683fbc] : b2b_entities: properly handle BYE while another request is pending Instead of rejecting the BYE with 491, first complete the transactions on the UAS side with 200 OK for the BYE and 487 for the other pending transaction. Also, mark the tuple for deletion at b2b_logic level and send a BYE to the peer entity after completing any UAC transcations on this side. Credits to David Escartin from Sonoc for reporting. (cherry picked from commit da6975f065ad848ceb8d8f65b0f09d1efc2bca37) 2023-02-06 Liviu Chircu * [7a46b455e] : Merge pull request #2981 from rrb3942/compression_flags Fix flag usage in compression module 2023-02-05 OpenSIPS * [8afaec8e9] : Rebuild documentation 2023-02-02 Liviu Chircu * [7538d0365] : Add optional profiling hooks, using libgoogle-perftools To enable the profiling hooks for a new OpenSIPS build, just: * install libgoogle-perftools-dev and libgoogle-perftools4 * enable -DPROFILING under Makefile.conf Finally, install the latest "pprof" Golang package, kill OpenSIPS and visualize the output profiling data using, for example: pprof --pdf opensips gperf-* 2023-02-02 Razvan Crainea * [627e52a81] : rtp_relay: fix leg dialog detection in local_route When both dialog and b2b_logic modules are used with rtp_relay, we shoud be prepared for a non-existing dialog in requests. Reported by @devoxy1 on GitHub in ticket #2952 2023-02-02 Răzvan Crainea * [5c082af53] : Merge pull request #3004 from GangZhuo/suppress-error [db_oracle] Log notice level error information when attempting to reconnect 2023-02-02 Razvan Crainea * [acf0c1495] : lua: proper include for timegm Thanks go to Jonathan Wakely (@jwakely on GitHub) for reporting it. Close #3005 2023-02-01 Gang Zhuo * [7a5ddc768] : [db_oracle] Log notice level error information when attempting to reconnect Reconnection errors will continue to be logged at the error level. 2023-02-01 Gang Zhuo * [40016b5bd] : [db_oracle] Print "connection dropped" at debug level We change this to only used in debugging mode to determine if the error is a lost connection error. The higher-level caller will prints more detailed error messages. 2023-01-31 Vlad Patrascu * [d91928500] : tls_wolfssl: complete fix in commit 77f5f5a This also ignores errors due to bad path, same as openssl does by default. 2023-01-31 Bogdan-Andrei Iancu * [f953b30c4] : [tcp layer] avoid locking and events while shutdown Upon shutdown, when all the TCP conns are destroyed, do not use any locking (we are in single process mode any how) and do not raise any disconnect events (false events here) 2023-01-29 OpenSIPS * [e28ab6a86] : Rebuild documentation 2023-01-27 Bogdan-Andrei Iancu * [e7aeb9723] : [dispatcher] Fix hackish extraction of TO URI upon pinging Better use the URI stored in callback params, rather then using the hackish way of extracting the URI from the T-stored To hdr. This is a side effect of 9af1926 Reported by @denyspozniak Closes #3000 2023-01-27 Razvan Crainea * [8f3c6a179] : b2b_sdp_demux: fix BYE concurrency from both upstream and downstream Thanks go to Suchi Sahoo from Five9 for reporting it 2023-01-27 Razvan Crainea * [da965667b] : usrloc: provide previous hop to UL_CONTACT_UPDATE 2023-01-27 Liviu Chircu * [c19d793ce] : Merge pull request #3001 from sippy/issue_2995 Fix qop validation if the qop is not provided 2023-01-26 Maksym Sobolyev * [6f8af8672] : Relax qop validation: according to the RFC8760 if the qop is not provided, the qop=auth should be assumed. Issue: #2995 2023-01-26 Liviu Chircu * [fb686b8ca] : mi_script: Add support for array parameters 2023-01-23 Bogdan-Andrei Iancu * [5610c03fb] : [pua] Fix silly mixing of bits versus bytes in sizeof() Related to ed8bf4d47a5302b74006ce0312797928fc843e98 2023-01-23 Razvan Crainea * [d92f870ca] : dialog: do not remove SDP if no SDP is provided 2023-01-23 Bogdan-Andrei Iancu * [ac99224ef] : [pua] force pres_id a unsigned_int during calculation To avoid any issues due to "singed" overflowing 2023-01-23 Bogdan-Andrei Iancu * [ed8bf4d47] : [pua] fix the computing of presentity ID (pres_id) - be sure the hash size does not overflow (on user setting), as it has to fit on half long size - when computing pres_id, be sure to cast to long to avoid premature overflow - when incrementing local_index, be sure it does no overflow half long size 2023-01-22 OpenSIPS * [42c8a20eb] : Rebuild documentation 2023-01-20 Razvan Crainea * [4717c606e] : rtpengine: don't export the process in exports by default 2023-01-20 Vlad Patrascu * [77f5f5a0a] : tls_wolfssl: ignore invalid CAs when setting ca_dir This will align the behavior of opensips when using wolfssl or openssl. Credits to @benceszigeti for suggesting the solution. Closes #2955 2023-01-19 Bogdan-Andrei Iancu * [9af192693] : Fix building TO / FROM hdr via t_uac() t_uac() gets URIs as values for TO / FROM, so these URIs may contain URI params. If those URIs are placed into headers without <> enclosing, their params will become header params :( So, to be sure, let's enclose the URIs all the time. Closes 2843 2023-01-19 Vlad Patrascu * [a90ef109a] : b2b_logic: fix shm memory leak Always free the entity SDP when deleting an entity. Credits to Liviu for reporting! 2023-01-18 truong.hua * [c41a05898] : Fix crash when restore b2b with tracer enabled due to NULL msg 2023-01-18 Liviu Chircu * [6e112e1c9] : GitHub stale bot: Remove "fixed" label from exemptions 2023-01-16 Bogdan-Andrei Iancu * [8448551cc] : [tm] fixed double freeing on t_uac() callback param If the t_uac() fails after the transaction was created (like it fails while trying to send the buffer out on the network), a double free will be done on the eventual callback func params: (1) via the released function attached to the completion callback (this will be automatically done upon free_cell() and (2) when t_uac() returns failure to the upper layer. The fix is NOT to free the param if the t_uac() returns error. So even if the transaction was created, remove the release function on the callback func params, to prevent the free (1), and to allow the upper layer to do its own cleanup. 2023-01-16 Vlad Patrascu * [5646b683c] : msrp_ua docs: add devel docs and an external usage summary section 2023-01-16 Vlad Patrascu * [39c5e3128] : msrp_ua: fix crash for AUTH transaction timeout 2023-01-16 Vlad Patrascu * [ad919447a] : msrp_ua: don't handle transaction timeout if not necessary Do not run callback or raise the E_MSRP_REPORT_RECEIVED if failure reporting is not required for this message. 2023-01-16 Vlad Patrascu * [08cf07e87] : msrp_ua: fix bad params for the E_MSRP_REPORT_RECEIVED event * Fix the length of the 'status' param. * Don't include the MSRP header prefix in case of negative replies for the 'message_id' param. 2023-01-15 OpenSIPS * [dda7717fa] : Rebuild documentation 2023-01-13 Vlad Patrascu * [23eb399ab] : tests: properly support malloc tests for any available allocator 2023-01-12 Vlad Patrascu * [379dadab5] : mem: align all prototypes for realloc functions 2023-01-12 Razvan Crainea * [99587fcaf] : b2b_sdp_demux: consider dlginfo when removing server entity If dlginfo is not considered when the entity is removed, it might very well remove a different entity with a similar index & hash, (but different timestamp). Thanks go to Suchi Sahoo from Five9 for reporting it 2023-01-10 Liviu Chircu * [76c18ce1a] : freeswitch_scripting docs: Fix rc checks in examples 2023-01-09 Razvan Crainea * [99d14dad5] : rtpengine: add the cookie len to the iovec buffers This fixes rtpengine from sending the appropriate dictionary end 'e' in the buffer sent over the network. Thanks go to @ankogan on GitHub for reporting it. Close #2985 2023-01-09 Razvan Crainea * [26e2ca958] : siprec: remove broken unref logging 2023-01-09 Razvan Crainea * [81e9b14a1] : tm: remove cluster received '\0' from buffer len When sending a message through cluster, the tm module adds a '\0' terminator to the message - that is because receive_msg expects it. However, this character should not be part of the message lenght. Reported by Denys Pozniak on mailing lists. 2023-01-08 OpenSIPS * [8c613f8d5] : Rebuild documentation 2023-01-06 Liviu Chircu * [211a63c9b] : acc: Fix drop_accounting() (do not be a NOOP!) The bug here was that `drop_accounting()` was building its bitmask as: flag_mask = types * flags; ... whereas it should have done the same as in `do_accounting()`: flag_mask = types + types * flags; ------- ^ the actual acc types to reset were missing! 2023-01-06 Vlad Patrascu * [d4a7ded9f] : msrp_ua: add ability to explicitly request MSRP Reports 2023-01-05 Ryan Bullock * [0cfb7c3b4] : Use msg_flags instead of script level flags. Prevents unintentional collision with script flags which could cause calls to mc_compact and mc_compress to fail. 2023-01-04 Liviu Chircu * [7dfe2857e] : dialog: Fix a race condition on mid-dlg Contact updates The "contact update on mid-dialog 2xx reply" logic may be invoked in parallel, in case two simultaneous UPDATE transactions are being processed, for example. This patch adds locking, to prevent a possible abort due to "double free" while updating the Contact. Also fix a small bug where the dialog is still flagged with DLG_FLAG_CHANGED, despite the malloc() failing during Contact update. 2022-12-25 OpenSIPS * [2a1fa8532] : Rebuild documentation 2022-12-22 Razvan Crainea * [b32b7ff48] : transformations/nameaddr: add support for indexes When running the nameaddr transformation on multi-nameaddr headers, one can specify an index for the nameaddr spec that needs to be used. The index is optional, the new format is nameddr.[idx.], and if missing, the first index is returned (0). 2022-12-21 Vlad Patrascu * [5d1f5c2fb] : b2b_logic: fix array out of bounds when loading from DB 2022-12-21 Vlad Patrascu * [09e4a6409] : b2b_logic: document the new bridging features 2022-12-21 Vlad Patrascu * [3f6790e39] : b2b_logic: add ability to retry bridging from script 2022-12-21 Vlad Patrascu * [6e1ffc34e] : b2b_logic: add ability to retry the initial bridge 2022-12-21 Vlad Patrascu * [15d29dbf2] : b2b_logic: fix several issues with the bridging mechanism 2022-12-21 Vlad Patrascu * [a68fe0804] : b2b_logic: improve SDP negociation capabilities when bridging 2022-12-21 Vlad Patrascu * [5e6cb0df4] : b2b_logic: drop the init sdp mechanism 2022-12-21 Vlad Patrascu * [7d4027cef] : b2b_logic: move a couple of function back to the main logic file 2022-12-21 Vlad Patrascu * [92b704276] : b2b_logic: improve function names 2022-12-21 Vlad Patrascu * [abc5097d4] : b2b_logic: refactor bridging code into separate file 2022-12-20 Razvan Crainea * [8761ce6d2] : route: pass parameters as values When calling route(NAME, $pv, ...), expand the `$pv` before running the route - this way the parameter is passed as value, rather than reference, which could lead to some unexpected behavior. 2022-12-11 OpenSIPS * [b2dbacdd6] : Rebuild documentation 2022-12-07 Liviu Chircu * [d616ed3f9] : db_mysql: Do not read freed PKG memory after 1st failed reconnect During db_mysql_connect(), make sure to reset the "init" status after free'ing ptr->con. Per MySQL 5.7 docs on mysql_close(): "Closes a previously opened connection. ... Do not use the handler after it has been closed." 2022-12-05 Razvan Crainea * [b003891b4] : b2b_entities: add more entropy to from_tag generation The initial from-tag generation cosisted of an md5 hash over the From URI. Thus, if you would have generating client requests to the same entity (such as a media server), you would always get the same from-tag for all those requests. The current patch adds more entropy when generating the from_tag, such as the current timestamp (expressed in milliseconds) along with the process pid. 2022-12-04 OpenSIPS * [5fbe4bdf4] : Rebuild documentation 2022-11-28 Liviu Chircu * [be1b8be7a] : Merge pull request #2958 from spacetourist/rate_patch :bug: fix parameter typo 2022-11-28 Callum * [c8219a870] : rate_cacher: :bug: fix parameter types 2022-11-28 Callum * [0ec0936ba] : rate_cacher: :bug: fix parameter typo 2022-11-28 Liviu Chircu * [771b4c8e6] : event_route: Auto-register unknown events before startup This patch makes it so script writers don't have to write raise_event boilerplate code when using the "raise_event" MI function with a custom event, for example: route { ... exit; raise_event("E_MY_MI_EVENT"); # hack for registering the custom event ^^^^^^^ this is no longer necessary! } event_route [E_MY_MI_EVENT] { ... } 2022-11-27 OpenSIPS * [57cb8565a] : Rebuild documentation 2022-11-25 Liviu Chircu * [cb59a84fc] : rtpengine: Fix possible startup crash in notification process When the "notification_sock" modparam was set, the process responsible for notifications would start by scanning a non-NULL terminated string past the end boundary, sometimes leading to a crash on startup. Fixes #2947 2022-11-24 Liviu Chircu * [aaeaf2457] : rabbitmq: Fix bogus debug log Credits to Nick Altmann for the report! 2022-11-24 Vlad Patrascu * [6f65276c9] : call_center: fix table versions in the DB schema (cherry picked from commit 3aa2034b06cb8d4bd20f797486e9ec7b82e92e94) 2022-11-24 Liviu Chircu * [37213d245] : compression: Fix math bug leading to bad Content-Length Fix an edge-case in mc_ndigits() causing Content-Length values starting with "10..." to be incorrectly counted. (e.g. "107" produced 2, not 3). This bug affected both mc_compact() and mc_compress(). 2022-11-23 Liviu Chircu * [236b294df] : dialog: Enhance DLGCB_RESPONSE_FWDED to include callee leg index The "callee leg index" is very difficult to compute from outside dialog, given the fact that SIP replies arrive randomly (think parallel forked branches) or even in random counts (e.g. extra legs from downstream). This patch simply exposes the dialog-determined callee leg index as the (long)params->dlg_data value, to be used by other modules. 2022-11-23 Razvan Crainea * [e3c74a39d] : siprec: unref failed dialogs Close #2674 2022-11-21 Liviu Chircu * [74024511b] : compression: Fix mc_compact() crash with no 2nd parameter It seems something went wrong in commit 466e93379, as the optimization actually caused the function to always crash. 2022-11-20 OpenSIPS * [80be3cfb2] : Rebuild documentation 2022-11-18 Liviu Chircu * [502f1ab66] : mid_registrar: Fix occasional undesired De-REGISTER forwarding in mode 2 If the timings were aligned in a specific way, the mid-registrar (in AoR throttling mode) would actually forward a De-REGISTER downstream even though it had at least 1+ healthy remaining contacts after having applied the De-REGISTER locally. This would cause some degree of service loss, as the remaining UAs were registered on the mid-reg, but not on the backend. Many thanks to Carlos Cruz Luengo (@cruzccl) and @ryan-netizen for an accurate report, as well as helping come up with the fix! Fixes #2615 2022-11-18 Liviu Chircu * [117456695] : Disable digest auth unit tests for now (various linker errors) (also add some left-over cachedb URL parser test) 2022-11-18 Liviu Chircu * [9f0fe5374] : sipcapture: Fix missing lock release on "buffer too small" errors Many thanks to Ryan Caicse (@ryancaicse) for reporting this bug! 2022-11-18 Liviu Chircu * [c5b5e795e] : b2b_entities: Fix missing lock release on OOM error case Many thanks to Ryan Caicse (@ryancaicse) for reporting this bug! 2022-11-18 Liviu Chircu * [b5646bdcf] : b2b_logic: Fix missing lock release on OOM error case Many thanks to Ryan Caicse (@ryancaicse) for reporting this bug! 2022-11-18 Liviu Chircu * [a379e9367] : b2b_entities: Fix missing lock release on SIP parsing errors Many thanks to Ryan Caicse (@ryancaicse) for reporting this bug! 2022-11-18 Liviu Chircu * [55a696f13] : b2b_sca: Fix double lock release on error case 2022-11-17 Vlad Patrascu * [d089b9c5e] : tls_wolfssl: properly enforce the configured ec_curve TLS outgoing connections would not properly use the configured curve but instead any curve selected by the server. 2022-11-17 Liviu Chircu * [4caa2a6a3] : registrar lookup(): Return internal error (-3) on missing Call-ID 2022-11-17 Bogdan-Andrei Iancu * [728eff0a5] : [dialog] fix missing locking in get_dlg_vals() Iterating the list of dlg vals must be done under lock 2022-11-17 Liviu Chircu * [244cc9291] : next_branches(): Fix infinite looping during error handling If someone has actually taken the time to corrupt the internal "$avp(serial_branch)" AVP, do not perform the "infinite while loop dance" and correctly progress to the next AVP. 2022-11-17 Liviu Chircu * [578fc2907] : next_branches(): Fix bugs leading to READ on freed shared memory This patch fixes two code paths leading to the @avp pointer being freed, after which the dangling pointer is read afterwards by the search_next_avp() function at the "done" goto label. This will work 99% of the time, until the 1% where it won't (crash and burn!). Many thanks to Richard Revels (@rrevels-bw) and Sebastien Couture for an accurate report, as well as their involvement in troubleshooting! Fixes #2446 Fixes #2950 2022-11-16 Razvan Crainea * [83281caa1] : b2b_sdp_demux: fix CANCEL handling concurrency Thanks go to Suchi Sahoo from Five9 for reporting it 2022-11-16 Razvan Crainea * [87661e1f1] : b2b_entities: avoid deadlock for certain scenarios When a call was terminted with a BYE from the handler of the 200 OK reply, the entities lock would remain locked, generating a deadlock. This commit fixes this (and possible other) situations by generically keeping a track when the lock is taken and unlock it before exiting. Thanks to Vlad Patrascu for helping with debugging and solution for this 2022-11-16 Liviu Chircu * [bf7830933] : Merge branch 'GangZhuo-ORA-03126' 2022-11-16 Gang Zhuo * [a5657831f] : [db_oracle] Do not change asynch mode when connection lost. The sessions may be ended due to a network error, and change OCI_ATTR_NONBLOCKING_MODE attribute with no session will cause "ORA-03126: network driver does not support non-blocking operations" error. In the case, the function done_timelimit will failed with ORA-03126 error. The error is not considered as a connection loss, and subsequent operations will always throw this error, and the lost connection never reconnect. 2022-11-16 Liviu Chircu * [f90469412] : CacheDB: Allow "," in URL passwords Many thanks to @xuxin010033 for the report! Fixes #2786 2022-11-16 Liviu Chircu * [bacb776cc] : CacheDB: Fix URL parser bugs with multiple hosts Although support for CACHEDB_ID_MULTIPLE_HOSTS has been in there for a long time, URLs such as "redis:ha://h1,h2,h3:6379" were not correctly parsed. 2022-11-15 Liviu Chircu * [60c1d54f9] : usrloc: Avoid PN-related timer processing in "SQL/CacheDB Only" modes Since the "PN trigger" logic described in RFC 8599 is currently strongly tied to holding in-memory contacts, avoid any crashes or other side-effects when running in "CacheDB Only" or "SQL Only" together with PN support by simply avoiding linking contacts into the "PN trigger" timer list. Fixes #2902 2022-11-15 Bogdan-Andrei Iancu * [f3cb92df9] : [rr] Fix handling on maddr param in RURI If present in RURI, maddr value should be considered (instead of host part) for testing if RURI points (as domain) to OpenSIPS or not (the is_myselg() test) 2022-11-14 Razvan Crainea * [27cd5d76d] : cgrates: fix infinite re-connect issue When a non-default connection would have reconnected, due to a mishandling of the return code of the `cgrc_reconn` function, a new connection would have been created every time, resulting in infinite re-connections. And in time, this would acquire all the available ports (65k) and would no longer accept new connections. Many thanks go to Vasilios Tzanoudakis (@vtzan on GitHub) for reporting and providing a solid testbed for this. Close #2850 2022-11-14 Razvan Crainea * [7a82baad5] : rtpengine: fix from-tag and to-tag when a dict exists 2022-11-14 Bogdan-Andrei Iancu * [f07e90aac] : Fix pkg mem leak by var spec copying Commit fff57ac introduces a relativly useless memcpy (only for arm32 related). This copy of the var spec leaks the returned buffer containing the value of the spec, as per $dlg_val() - this implementation of the $dlg_val relys on the fact that the same spec will be received all the time, so a re-size-able buffer is attached to it. So, let's get rif of the culprit memcpy and replace it with a simpler cast, as per 7dc20e471bf89eef0e4586adae26744d38c38c01 Credits and many thanks go to Arto Kuiri for reporting and pin pointing the culprit commit. 2022-11-13 OpenSIPS * [c695aebd4] : Rebuild documentation 2022-11-11 Liviu Chircu * [ecd567686] : Fix ARM-32 compile warning 2022-11-11 Liviu Chircu * [a008e7c23] : parse_content_length(): Fix out-of-bounds read edge-case (OSS-Fuzz) This patch fixes a possible off-by-one read overflow while parsing a bad Content-Length header. The error was mostly harmless, as the supplied buffer is typically much larger and is stored in PKG memory. Severity: Low Fixes OSS-Fuzz#53199 2022-11-10 Razvan Crainea * [b672ec9cf] : digest_auth: replace EVP_DigestInit_ex2 with EVP_DigestInit 2022-11-10 Razvan Crainea * [2107a5c02] : tests: avoild linking digest_auth lib to opensips binary 2022-11-10 Vlad Paiu * [42b438508] : Added optional port checking for the is_ip_registered function 2022-11-09 Razvan Crainea * [f566fb279] : auth: migrate openssl SHA256_* functions to EVP_Digest* interface The SHA256_* functions are deprecated in OpenSSL 3.0 and should be completely replaced with the new EVP_Digest* interface 2022-11-09 Razvan Crainea * [84e54b9de] : tests: add support for testing lib/digest_auth 2022-11-07 Liviu Chircu * [6135ff05d] : parse_via_param(): Fix out-of-bounds read edge-case (OSS-Fuzz) Similar to 5e9f72d3d, but for the parse_via_param() function. Severity: Low Fixes OSS-Fuzz#53080 2022-11-06 OpenSIPS * [a4e1ba7be] : Rebuild documentation 2022-11-04 Liviu Chircu * [e180b1536] : db_flatstore: Fix another race condition around MI 'flat_rotate' This race condition was related to invoking 'flat_rotate' 2+ times during the same second (UNIX timestamp). Due to the way the timestamping logic was implemented, this could lead to files NOT being rotated at all on the 2nd 'flat_rotate', which falls in the same second. Although very rare, this race condition could lead to massive CDR loss, since all CDRs between 2nd and 3rd 'flat_rotate' commands have a great chance of being fully lost (unread and discarded). 2022-11-04 Liviu Chircu * [d3b1463ee] : db_flatstore: Fix missing CDRs due to 'flat_rotate' race conditions This commit simply adds R/W locking around the 'flat_rotate' MI command, and all the SIP worker processes. The race condition was as follows: * SIP worker checks the 'flat_rotate' stamp and proceeds to write CDR * 'flat_rotate' is ran (timestamp++) * external process scans & fully reads the rotated file (with deletion to follow later as well, but this is irrelevant) * SIP worker finally writes the CDR using flushed/vector'ed I/O (too late at this point, CDR is forever lost) 2022-11-03 Liviu Chircu * [02ddcc6cc] : registrar: Add a unit test for lookup("r") Related to #2917 2022-11-03 Liviu Chircu * [9ac7739ef] : registrars: Fix an edge-case with lookup("r") This fixes a bug where the registrar library would return E_LOOKUP_NO_RESULTS upon encountering an AoR with 0 contacts, instead of continuing to walk the branches and expand the remaining AoRs. Many thanks to @MayamaTakeshi for a detailed bug report! Fixes #2917 2022-11-03 Răzvan Crainea * [3ddd19ea2] : Merge pull request #2919 from goharahmed/eventExpiry EVI: Event subscribers expiry enhancements 2022-11-03 Liviu Chircu * [5e9f72d3d] : parse_via(): Fix out-of-bounds read edge-case (OSS-Fuzz) This patch fixes a possible off-by-one read overflow while parsing the Via buffer. Even so, the error was mostly harmless, as the supplied buffer is typically much larger and is guaranteed to be NULL-terminated (see udp_read_req(), for example). Severity: Low Fixes OSS-Fuzz#52326 2022-11-03 Gohar Ahmed * [b79a350a6] : removed TTL for never expiring event subscriptions 2022-11-03 Gohar Ahmed * [ebfb4d58e] : evi: keep expire node for backward compatibility, use TTL 2022-11-03 Răzvan Crainea * [cbf236073] : Merge pull request #2612 from john08burke/rtpengine_socket_refactor rtpengine: enhancement of set/node management 2022-11-01 Razvan Crainea * [e8939c685] : blacklists: fix compile warnings 2022-11-01 Razvan Crainea * [a63e371ce] : b2b_sdp_demux: handle CANCEL from upstream server Thanks go to Suchi Sahoo from Five9 for reporting it 2022-10-31 Razvan Crainea * [e485856c6] : b2b_sdp_demux: fix matching entities for SERVER Thanks go to Suchi Sahoo from Five9 for reporting it 2022-10-30 OpenSIPS * [7186dbb50] : Rebuild documentation 2022-10-28 Razvan Crainea * [e6d907968] : dst_blacklists: rework expiry mechanism allow a list to have both non-expiry and expiry rules 2022-10-28 Razvan Crainea * [10101fa16] : dst_blacklists: provide more script functions * add `add_blacklist_rule` function that adds a rule to a list * add `del_blacklist_rule` function that removes a rule from a list * add `check_blacklist` function that checks whether a pair matches a rule from a list, or from all the active lists 2022-10-28 Razvan Crainea * [9eb654e20] : dst_blacklists: allow modifying flags when defining a list 2022-10-28 Razvan Crainea * [135431e8c] : dst_blacklists: enhance to a more dynamic interface * easier definition in code (can miss default values) * rework locking using rw_locking * add possibility to print rules from a single list * enhance `list_blacklists` MI output * add `check_blacklists` MI command - prints all lists that match * add `check_blacklist` MI command - prints first rule that matches * add `add_blacklist_rule` MI command - adds a new rule to a list * add `del_blacklist_rule` MI command - removes a rule from a list 2022-10-27 Liviu Chircu * [d77a9c52c] : dialog: Fix shtag restoration when loading from DB This fixes a hanging dialog profiles bug on the backup box (NULL shtag), in specific scenarios with dialogs + sharing tags, profiles with value and dialog + profile replication clusters (whole enchilada). In such cases, after restarting the backup box with active dialogs in the DB, it would end up with forever-hanging dialog profiles in memory, which would be continuously broadcasted to all cluster nodes, effectively adding (doubling) unnecessary counters to the overall limit. Credits to Vlad Pătrașcu for helping troubleshoot this bug! 2022-10-27 Bogdan-Andrei Iancu * [5945746b0] : [gflags] fix wrong quotes in example Credits go to Karsten Wemheuer 2022-10-27 Bogdan Andrei IANCU * [9be68bf34] : Merge pull request #2914 from MayamaTakeshi/reg_lookup_log_correction Corrected 'getting contacts' log 2022-10-27 Bogdan Andrei IANCU * [4c32306d2] : Merge pull request #2868 from hafkensite/feature/presence-event-etag presence: Add old-etag to event 2022-10-27 Bogdan Andrei IANCU * [6f01fe6e7] : Merge pull request #2852 from john08burke/avp_shuffle Add `avp_shuffle` function 2022-10-27 Bogdan-Andrei Iancu * [4eabea8a9] : [tracer] avoid parsing the shm cloned SIP msg The TM TMCB_MSG_SENT_OUT callback may be called when doing a retransmission for a locally generated request. If for the original sending, a pkg malloc'ed sip_msg is passed to TMCB_MSG_SENT_OUT callback, for the retransmissions the shm cloned sip_msg is passed. As the 'tracer' callback (on TMCB_MSG_SENT_OUT) requires some FROM hdr parsing (to get the from tag), it should NOT parse directly on the shm cloned SIP msg as it will tain the shm sip_msg with pkg pointers -> better do a local parsing (not attached to the sip_msg) of the FROM HDR. This issue was leading to pkg leaking (of the parsed FROM hdr in the shm cloned sip_msg) or it a crash if using failure route from the local route. Note: this is specific to using tracer module from the local route. Closes #2728 2022-10-27 Liviu Chircu * [9c3f1d71b] : Enhance several sharing tag related error logs 2022-10-27 Razvan Crainea * [a77f6ea51] : rtp_relay: fix crash when context does not exist Thanks go to Gohar Ahmed (@goharahmed on GitHub) for reporting it. Close #2941 2022-10-26 Liviu Chircu * [df362fb23] : Allow writing to AVPs with negative index This includes both SET and DELETE operations, for example: $(avp(foo)[-1]) = NULL; $(avp(foo)[-1]) = "42"; 2022-10-26 Bogdan-Andrei Iancu * [82475b986] : [dialog] added support for delayed dialog deletion Once terminated, instead of deleting / destroying the in-memory dialog right away, by setting the 'delete_delay' parameter, the dialog may be kept for a while in memory, in a read-only state (no action, no changes, nothing). This delaying may be used to help with the routing of late in-dialog request that may be received after the dialog terminated (like late BYE's due to retransmissions, cross BYE requests, auth'ed BYE request, slow ACK on re-INVITEs, etc). This work was sponsored by 46Labs, a true OpenSIPS supporter! 2022-10-25 John Burke * [ace2b9059] : avpops: add avp_shuffle function which randomly reorders AVPs 2022-10-25 Liviu Chircu * [318609681] : Merge pull request #2927 from ihsinme/patch-2 Fix for access due to low memory. 2022-10-25 Vlad Pătrașcu * [e6a848b65] : Merge pull request #2929 from nikbyte/b2b_fix_transfer_rollback B2B: Fix rollback of transfer in case of using of separate media server url 2022-10-25 Bogdan Andrei IANCU * [82dabe200] : Merge pull request #2912 from lemenkov/tracer_verbosity tracer: Be more verbose when cannot start trace 2022-10-25 Bogdan-Andrei Iancu * [14d900f2a] : [tm] fix t_wait_no_more_branches() behaviour Fixes #2891 Alternative to #2898 Credits for the fix go to @man1207 2022-10-24 Maksym Sobolyev * [6929341b2] : Remove comparison that is always "true". Reported by: gcc-12 2022-10-24 Maksym Sobolyev * [ffb1c1787] : Fix logical condition that would otherwise always be "false". Reported by: gcc-12 2022-10-24 Maksym Sobolyev * [b6e00202c] : GC variables that is set but never used. This breaks builds with latest clang. 2022-10-24 Maksym Sobolyev * [44ac2aa98] : Add missing {} as reported by the gcc-11. 2022-10-24 Maksym Sobolyev * [ee2d8bc39] : o Set -Wno-compound-token-split-by-macro needed to get things building up with clang > 11. o Unify common code in the perl modules to fix db_perlvdb as well with clang > 11. 2022-10-24 Maksym Sobolyev * [04b213139] : Cast void * to int first before we can it to enum. This is to fix the build on clang-11. 2022-10-24 Maksym Sobolyev * [b5819d569] : Make identation match compiler behaviour. This fixes build with gcc-11. 2022-10-24 Maksym Sobolyev * [6aad39069] : Make geoip2_get_field() function declaration match prototype. 2022-10-24 Maksym Sobolyev * [5d65e00e6] : o Add ubuntu-22.04 builds. o Add gcc-11, gcc-12, clang-11, clang-12 and clang-13. 2022-10-24 Maksym Sobolyev * [b59645e2c] : actions/checkout@v2 -> actions/checkout@v3. 2022-10-24 Maksym Sobolyev * [12d72f8e4] : Also test on ubuntu-latest. 2022-10-24 Maksym Sobolyev * [e97f6863b] : Document length requirements for the "secret" param. Issue #2935 2022-10-24 Maksym Sobolyev * [f5703d1b4] : Secret key is expected to be 32 characters long, convert debug assert into proper check, generate error and emit appropriate message when it's not. Fixes #2935 2022-10-24 Maksym Sobolyev * [d9883f29b] : Use IP_DONTFRAG on systems (i.e. FreeBSD) where IP_MTU_DISCOVER is not available. Generate an error on systems that have neither. 2022-10-24 Vlad Paiu * [41696da75] : Ignore faked replies (cherry picked from commit 31e2f33ec2dd28d88c6d356e7cffeb6c53cd5ac1) 2022-10-24 Nick Altmann * [fdf50bb51] : Fix rollback of transfer in case of using of separate media server url 2022-10-24 Liviu Chircu * [27fc4a22f] : Merge pull request #2911 from lemenkov/tracer_typo tracer: typo in docs 2022-10-23 OpenSIPS * [c79f5ab01] : Rebuild documentation 2022-10-22 MayamaTakeshi * [6338168a2] : Working implementation 2022-10-21 Vlad Patrascu * [d0c4fc48c] : cachedb_local: fix expiration of keys received through cluster sync Credits to Kingsley Tart from CallTracks for reporting. 2022-10-18 Vlad Paiu * [806d35638] : Fixed the EVI registered IDs & added some FIXMEs Fixes #2928 2022-10-18 Bogdan-Andrei Iancu * [c6bcd8435] : [dispatcher] fix chaining and freeing of probing packs Some probing packs may be freed before ending circulating the list (if the prob sending fails), so we need to take care of the linking. 2022-10-18 Bogdan-Andrei Iancu * [2e7c021b1] : [load_balancer] fix chaining and freeing of probing packs Some probing packs may be freed before ending circulating the list (if the prob sending fails), so we need to take care of the linking. 2022-10-16 OpenSIPS * [9f14bb0dc] : Rebuild documentation 2022-10-15 ihsinme * [9ed148593] : Fix for access due to low memory. If you check after a memory access, then you always have access from outside. with stricter control of memory boundaries, this can lead to an abnormal termination of the program. 2022-10-14 Liviu Chircu * [d94fe2e84] : Refactor all global context writes to use a macro This will make it easier to track down bugs related to lingering context WRITE operations (which aren't coupled with a RESET at the end). 2022-10-13 Razvan Crainea * [bbb6f313b] : rtpengine: do not specify interfaces for non-offer/answer Avoid getting bogus `no more memory` errors when trying to specify in in/out interface when `direction` node is NULL. Close #2880 2022-10-12 Vlad Patrascu * [4d0df03e0] : proto_tls docs: fix typos in modparam examples 2022-10-12 Liviu Chircu * [02e117771] : context API: Fix ctx cleanup API; Document context_destroy() behavior Although this patch fixes a memory leak in clear_global_context(), this function is not being used at all. 2022-10-12 Liviu Chircu * [43ee34bbb] : Fix global msg context leakage in error_route While commit b5bcf046 fixed an issue with missing contexts during error_route, it was missed that the "parse_error" label does *not* free up the global context. The effects of this bug were mostly hidden, affecting only opensips.cfg scripts which employ the "error_route", causing a slow PKG memory leak, proportional to the amount of bad SIP received. Moreover, if these scripts also use async(), they may occassionally run into a quick abort() in t_resume_async(), due to a context being already set (BUG). 2022-10-12 Liviu Chircu * [7167bec5b] : async(): Attempt to recover from abort() state It seems the "if" condition at the start of t_resume_async() is actually reachable under the right circumstances and causes an immediate program crash. As an intermediate improvement until the source of the issue is found, try to simply overwrite the unexpected context, if one is found. A small memory leak coupled with a CRITICAL log message is preferable to an instant, forced crash. 2022-10-12 Liviu Chircu * [eea215278] : sipmsgops: Fix ruri_del_param() return value on success The issue was that set_ruri() actually returns 0/-1, not 1/0 as the developer expected. Also update docs to reflect the function's return code meaning. 2022-10-11 Vlad Patrascu * [a7bf9e96e] : msrp_ua: fix the RURI param of E_MSRP_SESSION_NEW 2022-10-10 Razvan Crainea * [1b944d212] : dialog: do not corelate the number of legs with branches For a single transaction branch, we may have multiple dialog legs resulted by forking downstream. Thanks go to Rizwan Syed and Jonathan Hulme from ConnexCS for reporting, providing testing environment and support the troubleshooting and fix! 2022-10-09 OpenSIPS * [2f811f7ca] : Rebuild documentation 2022-10-08 Liviu Chircu * [2a6f8c67a] : parse_msg(): Fix heap buffer overflow edge-case (OSS-Fuzz) This patch fixes a SIP message parsing error log which could lead to an unsafe printing of a non-NULL terminated string. Fortunately, the OpenSIPS PKG memory allocator minimizes the severity of this overflow, thanks to its pre-allocated, large chunk of heap memory. Severity: Low Fixes OSS-Fuzz#52204 2022-10-07 Liviu Chircu * [837263b47] : parse_content_length(): Fix integer overflow edge-case (OSS-Fuzz) This completes commit 7cab422e2f, where it was still possible to cause an integer overflow even after the fix, with input such as 2147483609, due to missing parentheses in the number equation. Fixes OSS-Fuzz#52112 2022-10-05 Liviu Chircu * [a5236a863] : drouting: Fix dr_match() docs * the groupID is actually mandatory * add missing "number" docs 2022-10-04 Liviu Chircu * [51b908f8f] : parse_to_param(): Rework previous fix (OSS-Fuzz) Invoking strlen() on a non NULL-terminated buffer is equally bad, possibly even worse. Instead, simply rely on the @end parameter being correct, which is an assumption already made by the current code of the function. Fixes OSS-Fuzz#41073 2022-10-02 Liviu Chircu * [90aa25e64] : parse_to_param(): Fix out-of-bounds read edge-case (OSS-Fuzz) Severity: Low Fixes OSS-Fuzz#41073 2022-10-02 Liviu Chircu * [2ba963b0c] : Fix rare UB on left-shift signed int overflow By default, most commonly used compilers *define* some behaviour when this overflow occurs, such that the program will continue normally, without any negative consequences. Severity: Minor Fixes OSS-Fuzz#40201 2022-10-02 OpenSIPS * [eb8f8b80d] : Rebuild documentation 2022-10-01 Gohar Ahmed * [eea78e1f5] : evi: indentation fixed for upstream PR 2022-10-01 Gohar Ahmed * [61339688b] : evi: remove expired subscribers before printing them 2022-09-30 Vlad Patrascu * [fe3ae050d] : tls_mgm: fix crash when the client_sip_domain_avp AVP is not set This is a regression introduced by commit e94ca5f that would lead to a crash when the client_sip_domain_avp modparam is set but the actual AVP is not set before a TLS connect. Credits to @ovidiusas for reporting and suggesting the fix. Closes #2909 (cherry picked from commit 3c05ae78e4b2da392f8ab6b5233f54f760284b3b) 2022-09-29 Razvan Crainea * [8b2abc126] : proto_msrp: fix typo in ident timeout 2022-09-28 Peter Lemenkov * [7eb2c1c21] : dialog: try to get a options/reinvite last direction Signed-off-by: Peter Lemenkov 2022-09-28 Peter Lemenkov * [26cf63d01] : tracer: typo in docs Signed-off-by: Peter Lemenkov 2022-09-28 MayamaTakeshi * [427f6499a] : Corrected 'getting contacts' log 2022-09-28 Liviu Chircu * [6ec8ddec1] : freeswitch: If-guard some verbose DBG logs Suggested by @NormB 2022-09-28 Liviu Chircu * [96252b61f] : TCP: Init the default conn profile even without any listeners This fixes an issue with outgoing TCP connections being initialized with buggy parameters (timeout: 0, lifetime: 0, etc.), when there are no TCP listeners. 2022-09-26 Peter Lemenkov * [0b136fc6b] : tracer: Be more verbose when cannot start trace Currently, when tracer cannot initiate a specified tracing mode it tries to switch to another tracing mode emitting just a debug message. Debug messages are relatively rarely being turned on, so this switch can be left unnoticed. Let's raise the severity to WARN so this situation can be spotted much easier. Signed-off-by: Peter Lemenkov 2022-09-25 OpenSIPS * [dd7edcd33] : Rebuild documentation 2022-09-23 Razvan Crainea * [4cb36efa7] : rtp_relay: protect against NULL current_processing_ctx 2022-09-23 Vlad Patrascu * [2b951e5f1] : msrp_ua: fix re-negociation on reINVITE Set the proper state for the UA session(established dialog) on the ACK for the reINVITE. Also properly handle late SDP negocication for reINVITEs. 2022-09-20 Gohar Ahmed * [7f5413b10] : evi: Print the event subscription expiry counter 2022-09-20 Vlad Patrascu * [aee014beb] : b2b_entities: fix shm memory leak For the write back db mode, the entity storage data was only freed after inserting/updating the entity in the database. This would lead to memory leaks if the entity was deleted before the DB timer task had a chance to be run. Thanks go to Norm Brandinger from Five9 for reporting! 2022-09-20 Liviu Chircu * [66898d820] : parse_msg(): Fix out-of-bounds read edge-case (OSS-Fuzz) Also add a unit test suite for parse_msg(). Severity: low Fixes OSS-Fuzz#39802 2022-09-20 Liviu Chircu * [b4a72a5f9] : parse_uri: Parse the port into an unsigned integer (OSS-Fuzz) Fixes OSS-Fuzz#51605 2022-09-20 Liviu Chircu * [87d59ab50] : ut.h: Convert popular shm_str_xxx() functions to macros The idea is to help with troubleshooting SHM memory leaks, as any of the debugging memory allocators will now record the file/code/line of the original caller of shm_str_xxx(), instead of the former inlined function itself, which was borderline useless information... 2022-09-20 Liviu Chircu * [e0d90ec10] : parse_uri: Complete the fix for undefined bitwise left-shift (OSS-Fuzz) The default auto-cast to (int) is not enough, as a value such as 255 << 24 can still overflow the 31 value bits... Fixes OSS-Fuzz#51542 2022-09-20 Liviu Chircu * [ff34d213c] : lib/csv: Fix some memleak corner-cases (reported by OSS-Fuzz) Fixes OSS-Fuzz#39925 2022-09-18 OpenSIPS * [2c6c6368c] : Rebuild documentation 2022-09-16 Bogdan-Andrei Iancu * [d7a4bf8f1] : [TCP] fix init TCP support for auto-scalled procs When starting the TCP Main proc, be sure we initialize the MAIN<>Worker communication sockets also for the procs to be potentially scaled in the future. `pt[n].unix_sock` is valid only for running procs (not for the "autoscale to-be"), so use the `pt[n].tcp_socks_holder[0]` holder (valid for all procs, running or not). Thanks go to Yury Kirsanov and Slava Bendersky for reporting and helping with the troubleshooting. 2022-09-16 Bogdan-Andrei Iancu * [994e55cea] : [load_balancer] Improve probing by sending the probs outside locking Collect the data under locking, move the OPTIONs probing outside the locking, to be sure that any potential blocking on SIP level sending is not leading to lock starvation. Simialar to 4c7a7a83f93b18eefe4de1fe13c67f9d7561e6a3 (drouting) Related to #2438 2022-09-16 Bogdan-Andrei Iancu * [8139e2799] : [dispatcher] Improve probing by sending the probs outside locking Collect the data under locking, move the OPTIONs probing outside the locking, to be sure that any potential blocking on SIP level sending is not leading to lock starvation. Simialar to 4c7a7a83f93b18eefe4de1fe13c67f9d7561e6a3 (drouting) Related to #2438 2022-09-16 Liviu Chircu * [bf664144d] : Allow folded strings as modparam values Example syntax which is now valid: modparam("cachedb_local", "cache_collections", "col1=10;col2=10" ";col3=10;col4=10;col5=8" ";col6=4" ";col7=4;col8=4") 2022-09-16 Bogdan-Andrei Iancu * [a51026ad7] : [drouting] Fix bogus malloc test, c'n'p error Thank you CI for catching this ;) 2022-09-16 Bogdan-Andrei Iancu * [4c7a7a83f] : [drouting] Improve probing by sending the probs outside locking Collect the data under locking, move the OPTIONs probing outside the locking, to be sure that any potential blocking on SIP level sending is not leading to lock starvation. Closes #2438 2022-09-16 Razvan Crainea * [d6e91459d] : mi_script: fix value of parameters provided through AVP 2022-09-15 Razvan Crainea * [b17c78bc4] : rtpengine: raise E_RTPENGINE_STATUS event raise event when the status of a RTPEngine node changes Close #2881 2022-09-15 Liviu Chircu * [99c9a828d] : parse_uri: Avoid dereferencing invalid memory on error logging 2022-09-15 Liviu Chircu * [9f3998174] : parse_uri: Complete commit cf95355290 Fix a regression introduced with the last fix, where a password like "65536" would get rejected as "invalid URI port" due to the temporary parsing of the port in case the URI does not contain a "user" part at all. Add enough unit tests to cover all these URI formatting corner-cases. 2022-09-15 Liviu Chircu * [cf9535529] : parse_uri: Fix some UB corner-cases (reported by OSS-Fuzz) * possible bitwise left shift with a negative value (UB) * possible integer overflow, due to multiplication (UB) Fixes OSS-Fuzz#48273 2022-09-15 Liviu Chircu * [b57c53db1] : auth_db: Update docs on "password_column" 2022-09-14 Vlad Paiu * [21a173e70] : Added ref counting for the tracing info (cherry picked from commit 3ca73f647fb08691f10c2609956d0e018b469c8b) 2022-09-14 Bogdan-Andrei Iancu * [c85d93c7a] : [tm] fix adding rport in local route Force the VIA rebuild if add_local_rport() (for adding rport param to VIA) was called from local route Closes #2833 2022-09-14 Bogdan-Andrei Iancu * [4062de45d] : [dialog] fix bad unref leading to dialog leaking When using the dlg_on_timeout to set a new timeout for the dialog, due to the timer related operations (re-inserting in the list), an extra ref cnt happens. If not unref'ed, the dialog will stay (as terminated) forever in memory. Closes #2788 2022-09-13 Liviu Chircu * [77c24e212] : clusterer: Always broadcast a packet after shtag activation Due to network outages, it is currently possible for both sharing tags of an Active/Backup pair to end up in ACTIVE state. This patch makes it so a "cluster_shtag_set_active" MI command always broadcasts (forces) the ACTIVE state onto all neighbours, thus fixing the incorrect, post-outage state of the tags. Credits to @bogdan-iancu and @rvlad-patrascu for their contributions to this fix! 2022-09-12 Bogdan Andrei IANCU * [cd853142d] : Merge pull request #2885 from john08burke/multipart_crash pvar: fix crash when parsing multi-part body with negative index 2022-09-11 OpenSIPS * [6d78c55e1] : Rebuild documentation 2022-09-09 Liviu Chircu * [a11f9c740] : mem.h: Avoid warnings when explicitly defining -DSYSTEM_MALLOC 2022-09-09 Razvan Crainea * [34ce451c6] : mi_script: fix infinite loop where there are multiple params 2022-09-09 Liviu Chircu * [f988e1562] : oss-fuzz: Port the test suite script from google/oss-fuzz This allows us to more easily manage oss-fuzz failures on OpenSIPS project side, without requiring an oss-fuzz PR on each build or test-related change. 2022-09-09 DavidKorczynski * [2226238a4] : opensips: add another fuzzer (#6577) 2022-09-09 DavidKorczynski * [2ef8dda7d] : opensips: initial integration. (#6420) * opensips: initial integration. * opensips: include primary contact 2022-09-08 Vlad Patrascu * [4c748b3f8] : Add QM_DBG_MALLOC_HIST flag to Makefile.conf template 2022-09-08 Razvan Crainea * [581a4b8e5] : media_exchange: make sure we do not unreference NULL dlg 2022-09-08 Razvan Crainea * [1794be4e8] : media_exchange: allow module without rtp_relay 2022-09-06 Vlad Patrascu * [8545144b7] : mem/q_malloc: add support for debug history By setting a size via the QM_DBG_MALLOC_HIST define, we now keep a history of the file, func, line debug information in each fragment. (cherry picked from commit bc3e62f7e9e0c56b984ca38a26a78651669e594b) 2022-09-06 Liviu Chircu * [4c6a8ec5d] : dialog: Fix crash in debugging function (debug_main_timer_list()) DBG:dialog:debug_main_timer_list: testing forward loop with visited = 1 DBG:dialog:debug_main_timer_list: testing backward loop with visited = 2 DBG:dialog:insert_dlg_timer_unsafe: inserting 0x7f303dba8d80 for 7205 DBG:dialog:debug_main_timer_list: testing forward loop with visited = 1 ERROR:dialog:debug_main_timer_list: Detected something wrong with main timer list on forward linking for entry 0x7f303dba8d80 DBG:core:handle_sigs: OpenSIPS exit status = 134 INFO:core:handle_sigs: child process 139408 exited by a signal 6 2022-09-06 Liviu Chircu * [6d0309183] : dialog: Fix shm memleak on OOM error case 2022-09-06 Liviu Chircu * [88014bfe6] : Regenereate DB schema scripts 2022-09-06 Liviu Chircu * [c280dbcc4] : b2b DB schema: Slightly bump a few column sizes Better compatibility with production SIP traffic out in the wilds. 2022-09-06 Bogdan-Andrei Iancu * [59e3f0296] : upload missing code on prev commit Completing eb51d54a6c32b5d85c3db1344bd46c364d39b912 2022-09-06 Bogdan-Andrei Iancu * [eb51d54a6] : Wrap as function the code for forcing the shm unlock 2022-09-06 Bogdan-Andrei Iancu * [49d3888c9] : Proper fix for core status setting upon shutdown Use a lighter version of sr_set_core_status() in order to avoid any shm / locking / event related operations when setting the shutdown core status. (see original report and workaround e7b8084b9823ae6004f5abca62cf752ab317d507) 2022-09-06 Bogdan-Andrei Iancu * [731fead15] : Revert "Temporary fix for generating clean shutdowns even for mem corruption crashes" This reverts commit e7b8084b9823ae6004f5abca62cf752ab317d507. 2022-09-06 Bogdan-Andrei Iancu * [0dd5613c1] : [dialplan] improve logging info upon failures on reload 2022-09-05 Razvan Crainea * [86f6b1e90] : siprec: partial cleanup when recording is dropped mid call When the recording is dropped in the middle of the call, we should only cleanup the B2B info, not the dialog ones, as callbacks had already been registered. Therefore, we shall only mark the recording as not started and do a proper cleaup at the end of the dialog 2022-09-05 Liviu Chircu * [3960f7655] : rtpproxy: Do not reconnect to all sets at once (do it on-demand) Following an MI reload, each OpenSIPS worker would reconnect to all rtpproxies in all rtpproxy sets on the first offer/answer/engage function call. This behavior scales poorly with the number of rtpproxy sets, especially if multiple sets are used only for different public IP address advertising purposes, while reusing the rtpproxy comms socket. This commit adds on-demand reconnects, such that only the desired set is reconnected in a SIP worker following the reload. This allows the sets in the "rtpproxy_sockets" table to scale freely, without introducing excessive latencies on the first slew of calls following a reload operation. Possible further optimization: do the reconnect at node level! 2022-09-05 Liviu Chircu * [d2cec3434] : rtpproxy: Fix bad error handling on rare OOM case 2022-09-04 OpenSIPS * [d48b786cc] : Rebuild documentation 2022-09-02 Razvan Crainea * [184d1cd51] : tracer: fix possible double free during dialog tracing The initial transaction info free algorithm was to release the memory when there is no other tracing instance running. However, when engaging dialog tracing, a single dialog tracing instance is created, without a transaction one. But, when the BYE is received, it is traced using the transaction tracing, without an instance. Thus, the free function is called twice, once for dialog and once for transaction: * first call will find the dialog instance and release it, and release the info (since there are no remaining instances) * the second call, for the transaction instances releases would basically access invalid memory, which could lead to either double free, or even memory corruptions (in case fragment would had been repurposed) Credits for Vlad Paiu for troubleshooting, brainstorming and providing useful logs Fixes #2869 2022-09-01 Liviu Chircu * [c477e491b] : Cfg Parser: Allow whitespace before the "include_file" statement Fixes #2892 2022-08-30 Vlad Paiu * [e7b8084b9] : Temporary fix for generating clean shutdowns even for mem corruption crashes FULL fix would be to not worry about mem locks in the shutdown procedure ( ie. what cleanup() is doing ) 2022-08-30 Razvan Crainea * [dae9817b3] : tracer: fix trace_stop removal from list Fix the way we detect the previous element when removing from list Before this change, if there were multiple elements in the list, they were leaking due to the bad handling of the list removal. 2022-08-29 Razvan Crainea * [b2c6ce655] : mi_script: force a positive value in eventfd Thanks go to Suchi Sahoo from Five9 for reporting it 2022-08-28 OpenSIPS * [81263a155] : Rebuild documentation 2022-08-26 Vlad Patrascu * [bb9bd920f] : Throw startup error if event_route can never be run OpenSIPS would start without any error or warning if an event_route is used but the 'event_route' module is not loaded. 2022-08-25 Vlad Patrascu * [cb3d43519] : clusterer: fix parameters for E_CLUSTERER_REQ_RECEIVED event Fixes #2899 (cherry picked from commit c6cc088ffe6a2ac0ae87f04f1cf69de3094e6a29) 2022-08-24 Razvan Crainea * [d741f1875] : clusterer: advertise tag's active state only in defined cluster Thanks go to Vlad Patrascu for brainstorming this! 2022-08-24 Bogdan-Andrei Iancu * [f8ee4c7fb] : Fix iteration on the reports of an identifier Proper test the overflow condition (this was generating some shm mem leak) Proper iteration for printing the reports after the buffer overflows 2022-08-24 Razvan Crainea * [ad0239205] : mi_script: fix previous commit This is the commit that actually resolves the memory leak Thanks go to @liviuc for reporting this 2022-08-24 Razvan Crainea * [443fdf90e] : mi_script: prevent leak on write error case Thanks go to Suchi Sahoo from Five9 for reporting it 2022-08-23 Razvan Crainea * [d90856417] : b2b_sdp_demux: fix possible invalid memory access Prevent free-then-use error when b2b_key cannot be copied in shm. Thanks go to Suchi Sahoo from Five9 for reporting it 2022-08-22 Razvan Crainea * [60043ae37] : b2b_entities: free key returned by client_new prevent pkg leak of b2b_key returned by client_new 2022-08-22 Razvan Crainea * [7aa200730] : b2b*: consider dlginfo for requests an replies as well 2022-08-21 OpenSIPS * [6885d9c8b] : Rebuild documentation 2022-08-18 Razvan Crainea * [644b57b6f] : b2b_sdp_demux: fix pkg memory leak on re-INVITEs Thanks go to Norm Brandinger and Suchi Sahoo from Five9 for reporting 2022-08-17 Bogdan-Andrei Iancu * [a823a080d] : Fix crash in bogus OOM handling while TCP async in enabled. The async support assums the c->async exists all the time, so error if we cannot alloc the c->async struct while creating a new TCP conn (cherry picked from commit 0b270ad04db8081bbb829f89fa515fa0c37698c7) 2022-08-17 Bogdan-Andrei Iancu * [9dc28a91c] : [call_center] avoid a negative setup_time in CDR In the DB schema, the setup_time is an unsigned, and a -1 value was computed while a call was rejected by an agent 2022-08-16 Liviu Chircu * [3fcdf3bd6] : Fix clang warnings on Ubuntu 18.04 error: too many arguments provided to function-like macro invocation 2022-08-16 Liviu Chircu * [b53c3a7b4] : Improve str_match() macros (paranthesize macro arguments) This fixes possible Clang compiler warnings on Ubuntu 18.04 when nesting the str_match() and str_const_init() macros: error: too many arguments provided to function-like macro invocation 2022-08-16 Liviu Chircu * [28d87ad30] : Various code/doc improvements; Var renames; Fix typos 2022-08-16 Liviu Chircu * [641d4e4ad] : rest_client: Avoid initializing unused DS 2022-08-16 Liviu Chircu * [dd7b3da03] : Fix various doc typos; Improve wording 2022-08-16 Liviu Chircu * [6164bc13c] : Transformations: Add {param.exists} as synonym for {param.exist} 2022-08-16 Razvan Crainea * [80ff319d5] : dialog: keep a mapping between INVITE&ACK This prevents concurrency bugs that would generate an ACK with a higher CSeq than the INVITE. Addresses #1071 2022-08-16 Razvan Crainea * [b82d4e603] : tm: provide clustering statistics for sent/recv messages 2022-08-16 Razvan Crainea * [ce1958155] : b2b_entities: provide dlginfo for entity_delete Each module that uses b2b_entities, should duplicate the dlginfo structure and pass it to the entity_delete API call, otherwise wrong entities might be deleted due to mismatches 2022-08-16 Razvan Crainea * [4eea26f75] : dispatcher: add support for pemanent pinging Using the new probe_mode column in the table you can specify whether a destination should be permanently pinged or just one in probe mode. 2022-08-16 Bogdan-Andrei Iancu * [30214dc2f] : Fix CANCEL matching in B2B stack Instead of attempting a dialog level matching (callid and tags), do a proper incoming CANCEL matching at transaction level. This fixes scenarios where the B2B handles several branches of a call that was forked by an ahead proxy. Many thanks to Denys Pozniak for reporting 2022-08-14 OpenSIPS * [37df05aff] : Rebuild documentation 2022-08-09 Razvan Crainea * [22fe3bef7] : rtp_relay: reset late flag for new negotiations 2022-08-09 Razvan Crainea * [118dcebac] : rtp_relay: fix typo in test for ACK in late 2022-08-08 Razvan Crainea * [d19fb1b66] : b2b_entities: fix possible deadlock Fix deadlock generated when a dialog is terminated on the 200 OK callback 2022-08-08 Razvan Crainea * [05beec197] : b2b_entities: add support for locking debugging enabled by B2B_ENTITIES_LOCK_DBG compile flag 2022-08-08 Razvan Crainea * [460da0860] : b2b_sdp_demux: enhance traffic debugging 2022-08-08 Bogdan-Andrei Iancu * [e7ed29e50] : Fix possible bogus exec_msg_threshold reporting Reset the exec_msg_threshold stack (longest found actions) when a parse error is detected (before running the actual scritp). Otherwise we may inherit old records from previous runs 2022-08-07 OpenSIPS * [831a9a2b5] : Rebuild documentation 2022-08-04 John Burke * [53679e17f] : pvar: fix crash when parsing multi-part body with negative index in `$rb` 2022-08-01 Vlad Patrascu * [21cbcd6f4] : clusterer: add ability to disable replication packets dispatching Add a new "dispatch_jobs" modparam which controls whether the processing of replicated packets is dispatched through IPC or not. Disabling the dispatching mechanism prevents high CPU loads caused by the "thundering herd" problem. Credits go to Rizwan Syed and Connex Carrier Services for supporting the troubleshooting of this issue. (cherry picked from commit 0c66936f3d343226930042bc463b467d8a62fde3) 2022-07-31 Vlad Patrascu * [3e98325e8] : dialog: don't drop synced dialogs with no sharing tag 2022-07-31 OpenSIPS * [0b49c8122] : Rebuild documentation 2022-07-29 Vlad Patrascu * [3cebaf730] : dialog: fix typo in commit 46e9a53 2022-07-28 Vlad Patrascu * [46e9a53ea] : dialog: fix incorrectly discarded dialogs after sync Syncing while the donor node is also sending live replication packets may lead to incorrectly discarding some of the newly received dialogs. There were two ways in which new dialogs were actually mistaken as old, "local" dialogs from before syncing: * overwriting the dialog flags when handling a replicated update; * not marking live replicated dialogs received during sync as "new" dialogs. 2022-07-26 Liviu Chircu * [612e7a1fe] : proto_hep: Fix log message severity (just a debug log) 2022-07-24 OpenSIPS * [c41594076] : Rebuild documentation 2022-07-21 Maksym Sobolyev * [205947c96] : python: Don't leak memory in python_exec(). The bug was introduced in rev 302058d8d38 (April 2019) along with module API cleanup and affects all releases since 3.0. 2022-07-21 Vlad Patrascu * [92512fc56] : cachedb_local: fix crashes when cachedb_url modparam is not set This commit fixes crashes when an OpenSIPS module uses a collection that is not explicitly set for any cachedb_url modparam. 2022-07-21 Vlad Patrascu * [1b9662649] : sql_cacher: don't allow usage of a replicated local cache Using a replicated collection for cachedb_local would lead to invalid keys in the cache due to reload version inconsistencies. 2022-07-20 Vlad Patrascu * [bf178b04f] : clusterer: issue sync request under lock 2022-07-19 Vlad Patrascu * [d866ea97e] : clusterer: fix deadlocks when syncing (cherry picked from commit 652d89fbeffc180aea68e8bdfcac799d53124e6b) (cherry picked from commit 69031794f90285ffae7351dae513f763a3d89ef9) 2022-07-19 Liviu Chircu * [e559e9f71] : rest_client: Rework previous commit Drop any use of the CURLU URL parsing API, as there are too many incompatibilities (e.g. some versions only have partial support for the CURLU API, where the struct exists but the functions do not). 2022-07-19 Liviu Chircu * [b4c2c7436] : rest_client: Fix build on systems with libcurl < 7.62.0 Commit 208fc5e4d545 introduced a dependency on libcurl 7.62.0 or higher. This commit fixes that by introducing a simplistic URL host parsing API, should the equivalent libcURL API be unavailable. Many thanks to Nick Altmann for the report! 2022-07-17 OpenSIPS * [5441e3088] : Rebuild documentation 2022-07-16 Vlad Patrascu * [6d248c5ee] : tls_wolfssl: disable example applications from library build 2022-07-16 Vlad Patrascu * [f0c34ddbb] : tls_wolfssl: update wolfssl library to version 5.4.0 2022-07-15 Liviu Chircu * [208fc5e4d] : rest_client: Add a mechanism for system outage prevention In some cases where all SIP workers query the same RESTful service, an OpenSIPS system can be made entirely unresponsive should the RESTful service ever go down or begin to fully drop packets (e.g. ratelimiting). New modparams "no_concurrent_connects" and "curl_conn_lifetime" have been added to aid in these scenarios. Many thanks to VoiceINC for sponsoring this feature! 2022-07-15 Jasper Hafkenscheid * [97245b4d7] : presence: Add old-etag to event In order to track presentities the events should contain the old_etag. Emit publish event after update, to ensure it contains the old&new etag. Fixed a few typos in the presence module. 2022-07-14 Vlad Patrascu * [21a5534dd] : sql_cacher docs: add sections for SR identifiers 2022-07-14 Vlad Patrascu * [bb96e5be3] : dialplan docs: add sections for SR identifiers 2022-07-14 Vlad Patrascu * [c04a72ede] : dispatcher docs: add sections for SR identifiers 2022-07-14 Vlad Patrascu * [3eb20bd09] : drouting docs: add sections for SR identifiers 2022-07-14 Liviu Chircu * [fe6a13e9e] : media_exchange: Fix gcc-7.5 warnings on ubuntu-18.04 (cherry picked from commit 61a63a5207b1d8fa1d5b9b1fe5d3039edc4ee8f2) 2022-07-14 Liviu Chircu * [52b071201] : msrp_ua: Fix gcc false positives on ubuntu-18.04 msrp_ua.c:2443:3: error: ‘hdl.param’ may be used uninitialized in this function [-Werror=maybe-uninitialized] hdl.notify_cb(&cb_params, hdl.param); (cherry picked from commit a7f737c6835825c529e5c83f493ae119303c7b61) 2022-07-14 Liviu Chircu * [291820019] : proto_msrp: Fix gcc-10 false positive on ubuntu-20.04 In function ‘memcpy’, inlined from ‘_ident_builder.constprop’ at msrp_signaling.c:1198:3: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:34:10: error: ‘__builtin___memcpy_chk’ writing 32 bytes into a region of size 18 overflows the destination [-Werror=stringop-overflow=] 34 | return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ (cherry picked from commit da3782ee3d113892c70183b8ae7731872dfb289a) 2022-07-14 Vlad Patrascu * [03d64b9cc] : proto_msrp: fix another uninitialized variable compile error (cherry picked from commit 9a8bd197d7d071609981479350cb750516258ece) 2022-07-14 Vlad Patrascu * [3dad9cb5f] : proto_msrp: fix uninitialized variables compile errors (cherry picked from commit fd4ffb6c69a3516371fb29b1d3145ceb982ddbc1) 2022-07-14 Vlad Patrascu * [28ad81848] : sql_cacher: fix uninitialized variable compile error (cherry picked from commit fbc35433a655cf119cc6178825440b3099f51953) 2022-07-14 Liviu Chircu * [90f596e99] : cachedb_redis: Fix uninitialized variable warning 2022-07-14 Vlad Patrascu * [e0e9e2f94] : clusterer: fix possible deadlocks when discovering a new node Use only standard RW locking operations for the global list lock instead of the "switchable" mechanism (aquiring the lock for writing when necessary). 2022-07-14 Bogdan-Andrei Iancu * [4ab5c63f1] : Added sr_list_identifiers MI command A very simply and useful helper function for the Control Panel integration 2022-07-14 Liviu Chircu * [b83549e45] : tcp_mgm: Fix startup issue; Fix "while" fallthrough and bad logs 2022-07-14 Razvan Crainea * [f7b71acb8] : b2b_sdp_demux: enhance events logging 2022-07-13 Vlad Patrascu * [46e56d417] : clusterer: queue sync request after all send errors 2022-07-13 Vlad Patrascu * [e8d1407cd] : clusterer: properly set status/report all queued sync requests 2022-07-13 Vlad Patrascu * [816ef38b7] : clusterer: properly compute sync fallback interval in all cases The timestamp of the sync request was not saved when queueing the sync after certain send errors. 2022-07-13 Vlad Patrascu * [2e5bf28aa] : clusterer: prevent permanent sync in progress state If the sync end marker packet is not received, nodes get stuck in a permanent "sync in progress" state. This commit introduces a timeout, configurable via the "sync_timeout" modparam, after which a node reverts to the not synced state, if no sync data packet is received. 2022-07-12 Razvan Crainea * [b005a3795] : b2b_entities: fix the right number of rows when leg is missing Thanks go to Norm Brandinger from Five9 for reporting, testing and providing all the help to pinpoint this issue! 2022-07-10 OpenSIPS * [6e735356e] : Rebuild documentation 2022-07-08 Vlad Patrascu * [9a5627de5] : tls_wolfssl: fix differing TLS version for write duplicate struct When using a range of supported TLS versions, the WOLFSSL write duplicate structure uses the highest TLS version set for the context instead of the one actually negociated for the current session. This may lead to errors for TLS write or shutdown operations, for ciphers that are not supported in the TLS version used by the write dup structure. Fixes #2729 (cherry picked from commit 35b29e618b1175618c61747591dcf87370056102) 2022-07-08 Liviu Chircu * [be2ca3851] : acc docs: Clarify that do/drop_accounting() can be called multiple times 2022-07-08 Liviu Chircu * [d7f9a8511] : perl: Fix PKG corruption in perl_exec() (off-by-one) 2022-07-08 Liviu Chircu * [0742814a7] : perl: Fix PKG memory leak in perl_exec() The leak would happen 100% of the time on each perl_exec(). 2022-07-07 Nick Altmann * [7bfd4fa73] : DEB Packaging: don't build auth_jwt package for old distributives 2022-07-06 Liviu Chircu * [c8e4586d8] : Document the purpose of the "switchable R/W" locks 2022-07-06 Liviu Chircu * [c620c9cd1] : clusterer: Fix missing lock_release() on some error cases Affected areas: cluster_check_addr() opensips.cfg function mainly, as api_get_next_hop() does not seem to be used. 2022-07-05 Vlad Pătrașcu * [c9c55158a] : Merge pull request #2830 from hafkensite/feature/clusterer-statistics clusterer: add statistics for number of nodes and number of up nodes 2022-07-05 Vlad Patrascu * [283d2dd60] : clusterer: fix if statement with empty body 2022-07-05 Vlad Patrascu * [3960008a1] : clusterer: fix seed fallback during sync Do not fall back to the synced state for a capability if syncing is actually in progress. 2022-07-05 Vlad Patrascu * [7db084285] : clusterer: add sync status and reporting for capabilities 2022-07-04 Vlad Patrascu * [4a4248cbf] : xml: fix accessing node value with CDATA sections 2022-07-03 OpenSIPS * [d7da7d24b] : Rebuild documentation 2022-07-01 Jasper Hafkenscheid * [4f09be871] : Review feedback Added documentation section for clusterer statistics. Made the down nodes_metric return the number of nodes not in the LS_UP state. 2022-07-01 Jasper Hafkenscheid * [e57c1ccc0] : clusterer: add statistics for number of nodes clusterer_nodes shows the total number of nodes, separate stats show the amount of having a up / down link state. 2022-06-29 Vlad Patrascu * [83500a89d] : clusterer docs: fix link to status/report interface docs 2022-06-29 Vlad Patrascu * [3d0249fd3] : clusterer: add reporting for node state changes Add reporting via the status/report interface through the "node_states" identifier. 2022-06-28 Vlad Patrascu * [75fc8f038] : b2b_logic docs: fix example for b2b_bridge_request() 2022-06-28 Vlad Patrascu * [c328eb06d] : b2b_logic: complete the Max-Forwards fix in commit fa84d8d Also decrease Max-Forwards when bridging, based on the value from the initial INVITE of the server entity, if it's still present in the session. 2022-06-26 OpenSIPS * [bb4cde69f] : Rebuild documentation 2022-06-25 Vlad Patrascu * [b8e107517] : clusterer: make sure a discovered node is not added multiple times Do not insert a new node into the list multiple times when: * receiving multiple CLUSTERER_NODE_DESCRIPTION BIN messages * we receive a CLUSTERER_NODE_DESCRIPTION message and the node also appears in CLUSTERER_FULL_TOP_UPDATE messages. 2022-06-25 Vlad Patrascu * [78fd0d668] : b2b_logic: properly release locks in a couple of API functions 2022-06-25 Vlad Patrascu * [931b9650c] : b2b_logic: fix possible crash when init_callid_hdr param is set The crash would occur if the Call-ID header name is received in compact form("i" instead of "Call-ID"). Thanks to David Escartin from Sonoc for reporting. (cherry picked from commit fa2145b12cb6590e4366cb8a2659b7b79813b374) 2022-06-25 Vlad Patrascu * [2dc1e9866] : b2b_entities: fix possible shm memory leaks Fix leaking transactions when deleting an entity without sending a final reply. Thanks to David Escartin from Sonoc for reporting. (cherry picked from commit c7a5f41754c03fa20921e86a7ff25d2f0b0abf76) 2022-06-25 Vlad Patrascu * [be5a4efda] : b2b_logic: prevent possible crashes when accessing $b2b_logic vars Make sure to always search in the hash for the current tuple instead of relying on a pointer saved in the b2b context. There might be races between processing BYEs and deleting the tuple and running a b2b_logic reply route where we access a $b2b_logic variable. Thanks to David Escartin from Sonoc for reporting. (cherry picked from commit ff646336e82ce1bdea56156c826520090c9786ad) 2022-06-25 Vlad Patrascu * [98490afb2] : b2b_entities: properly handle negative replies to reINVITEs Do not change the dialog state to terminated as a result of a sending a negative reply to a reINVITE. This would have prevented the forwarding of further requests. Thanks to David Escartin from Sonoc for reporting and testing the fix. (cherry picked from commit e8df85a64a3b8095cd95c0b2d9254de605b61384) 2022-06-25 Vlad Patrascu * [0fd68d98d] : b2b_entities: properly handle unexpected ACKs Fixes an issue where a 487 reply is not relayed after an unexpected ACK is received following a CANCEL. Thanks to David Escartin from Sonoc for reporting. (cherry picked from commit 81cb0903aedd2271e9a93789e83e1d96e28352f1) 2022-06-25 Vlad Patrascu * [3b6cf1640] : b2b_entities: fix accessing $b2b_logic variables for PRACK requests Fixes #2686 2022-06-23 Vlad Patrascu * [fa84d8d0e] : b2b_logic: properly decrease value and pass Max-Forwrads header This applies to requests that are effectively "passed" from one entity to its peer such as initial INVITEs handled with b2b_init_request() or requests handled with b2b_pass_request(). Fixes #2471 2022-06-23 Vlad Patrascu * [404f58002] : b2b_entities: allow enforcing the Max-Forwards value Related to #2471 2022-06-22 Nick Altmann * [50d714eaa] : DEB package: fix build for ubuntu bionic 2022-06-22 Vlad Patrascu * [ead6f1fca] : clusterer: use the proper locking type when we might switch for writing Aquire lock for switchable reading when handling a full topology update, wich might trigger the insert of a new node in the list and thus using the lock switch mechanism. 2022-06-21 Liviu Chircu * [008d4d6b0] : aaa_diameter: Fix compile warnings 2022-06-21 Liviu Chircu * [9f2be4765] : Complete the support for current route name/type * $route.type -> equivalent of the former $rT variable (now indexable!) * $route.name -> new variable, giving the route name (also indexable) 2022-06-21 Nick Altmann * [76aca9ed3] : RPM package: fix typo 2022-06-20 Nick Altmann * [4369eac62] : DEB package: final fix 2022-06-20 Nick Altmann * [50aa9d024] : DEB package: fix typo 2022-06-20 Nick Altmann * [9fa4e76fe] : DEB package: cleanup, make it better readable 2022-06-20 Nick Altmann * [c269174d7] : Packaging: add opensips-auth-modules subpackage Thanks @razvancrainea for initial patch. 2022-06-19 OpenSIPS * [863296d8d] : Rebuild documentation 2022-06-16 Liviu Chircu * [6ca51091d] : aaa_diameter: Add support for Grouped AVPs A Grouped AVP is just a list of other AVPs (possibly including other Grouped AVPs, in a recursive fashion). This commit adds support for grouped AVPs on all fronts: * in the syntax of the "dictionary.opensips" config file, to allow fully defining grouped AVPs, regardless of their complexity * in the input JSON passed to dm_send_request() * in the output JSON returned by dm_send_request() 2022-06-16 Razvan Crainea * [5ffdfb7a7] : utils/wireshark: add dissector for tm cluster packets 2022-06-14 Razvan Crainea * [206b3a1d0] : rtpengine: fix API crash when no set/node is defined 2022-06-12 OpenSIPS * [1f359c2b9] : Rebuild documentation 2022-06-11 Vlad Patrascu * [ceb1d6a07] : b2b_entities: use the proxy from b2b_client_new() for all requests Fixes #2759 2022-06-10 Bogdan-Andrei Iancu * [083c34f2f] : Fix body re-assembling when adding a new body part to an emptry received body This fixes a regression introduced in b0591d285ad966c2cb13672de8071c03fcba7414 Fixes #2823 Credits go to @pergolafabio for the detailed reporting (cherry picked from commit a05893a631193a37548cfae292ed7f00f63044e3) 2022-06-09 Vlad Patrascu * [9cdc27c22] : msrp_gateway docs: fix overview about msrp_gw_answer() params 2022-06-09 John Burke * [37c46dba7] : core: set AVP value from `search_index_avp`, if provided 2022-06-09 Vlad Patrascu * [09e626b0a] : tm: allow t_new_request() in all route types 2022-06-07 Vlad Patrascu * [87b3866aa] : msrp_ua: fix param name for uac_auth module dependency 2022-06-07 Vlad Patrascu * [8793e5248] : msrp_ua: fix cleanup of expired sessions 2022-06-07 Vlad Patrascu * [436f915a2] : msrp_relay: add the Authentication-Info header when authorizing 2022-06-07 Vlad Patrascu * [2b43d71a4] : auth: add API function that builds an Authentication-Info header 2022-06-07 Vlad Patrascu * [d560f054f] : msrp_ua: properly support the use of an MSRP relay 2022-06-07 Vlad Patrascu * [53acffe40] : proto_msrp: allow no extra headers in msrp_send_request() 2022-06-07 Vlad Patrascu * [b0cb41088] : proto_msrp: properly support WWW-Authenticate header when parsing 2022-06-07 Liviu Chircu * [bdc51cee3] : mi_script: Fix error log on mi() with NULL output pvars Proper handling for the 2nd parameter NULL case. Fixes this error: Jun 7 06:36:23 [61] ERROR:core:pv_set_value: bad parameters 2022-06-07 Ovidiu Sas * [8616bb031] : sst: fix examples in documentation 2022-05-29 OpenSIPS * [c9903d88a] : Rebuild documentation 2022-05-27 Liviu Chircu * [526394aa8] : aaa_diameter: Rework exposing command results to script The initially exported value of Result-Code AVP integer value was not ideal, as many Diameter exchanges are actual queries, with much more rich data to be returned than just an integer code. This commit replaces the "reply_code_pv" parameter of dm_send_request() with "rpl_avps_pv", containing a JSON Array with all AVPs from the Diameter Answer, as well as their values. 2022-05-27 Bogdan-Andrei Iancu * [96d8113e9] : [db_virtual] fixed the MI db_get output Fix typos leading to bad json structure Reported by @bctff Closes opensips-cli/#94 2022-05-25 Vlad Patrascu * [870f19040] : Properly exclude tls_openssl/wolfssl when using menuconfig 2022-05-25 Vlad Patrascu * [a3c18a685] : msrp_gateway: properly report MSRP leg setup failure Add an event triggered when the SIP session fails to set up on the MSRP side, when using the msg_to_msrp() function. This way, a message describing the failure can be generated on the MESSAGE side from an event route, for example. 2022-05-25 Vlad Patrascu * [f6fcb187d] : msrp_gateway: properly clean up lingering sessions Add a session timeout after which to end a session if no message has been received from either side for that session. Also, add a specific timeout that is triggered by no activity on the MESSAGE side. Also add the ability to list and end sessions from the outside, via MI functions. 2022-05-25 Vlad Patrascu * [80ba45de8] : msrp_gateway: fix message queueing during MSRP call setup 2022-05-25 Vlad Patrascu * [3ab6dafc9] : msrp_gateway: fix deadlock in msg_to_msrp() 2022-05-25 Vlad Patrascu * [dd173e564] : msrp_gateway: fix several crashes 2022-05-25 Vlad Patrascu * [65005d620] : msrp_gateway: fix module init 2022-05-24 Razvan Crainea * [8ba0309d4] : clusterer: print the command that cannot be parsed 2022-05-22 OpenSIPS * [4bfa842b0] : Rebuild documentation 2022-05-20 Vlad Patrascu * [171ac784d] : msrp_relay: allow msrps URI in Use-Path 2022-05-19 Vlad Patrascu * [755ddd2fb] : msrp_ua: fix crash in msrp_ua_answer() 2022-05-19 Vlad Patrascu * [2d698c3f3] : msrp_ua: add missing docs Document the "advertised_contact" module param and the "msrp_ua_start_session" MI function.