Module: kamailio
Branch: master
Commit: ea628d35917036a252a3a0094a250b5df3cfe037
URL: https://github.com/kamailio/kamailio/commit/ea628d35917036a252a3a0094a250b5…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2021-04-12T07:51:41+02:00
secsipid_proc: synced with the upstream library api
---
Modified: src/modules/secsipid_proc/libsecsipid.h
Modified: src/modules/secsipid_proc/secsipid_proc_mod.c
---
Diff: https://github.com/kamailio/kamailio/commit/ea628d35917036a252a3a0094a250b5…
Patch: https://github.com/kamailio/kamailio/commit/ea628d35917036a252a3a0094a250b5…
---
diff --git a/src/modules/secsipid_proc/libsecsipid.h b/src/modules/secsipid_proc/libsecsipid.h
index f0b8d51ebc..b95393ed39 100644
--- a/src/modules/secsipid_proc/libsecsipid.h
+++ b/src/modules/secsipid_proc/libsecsipid.h
@@ -92,6 +92,19 @@ extern int SecSIPIDSignJSONHP(char* headerJSON, char* payloadJSON, char* prvkeyP
// * return: the length of `*outPtr`
extern int SecSIPIDGetIdentity(char* origTN, char* destTN, char* attestVal, char* origID, char* x5uVal, char* prvkeyPath, char** outPtr);
+// SecSIPIDGetIdentityPrvKey --
+// Generate the Identity header content using the input attributes
+// * origTN - calling number
+// * destTN - called number
+// * attestVal - attestation level
+// * origID - unique ID for tracking purposes, if empty string a UUID is generated
+// * x5uVal - location of public certificate
+// * prvkeyData - content of private key to be used to generate the signature
+// * outPtr - to be set to the pointer containing the output (it is a
+// 0-terminated string); the `*outPtr` must be freed after use
+// * return: the length of `*outPtr`
+extern int SecSIPIDGetIdentityPrvKey(char* origTN, char* destTN, char* attestVal, char* origID, char* x5uVal, char* prvkeyData, char** outPtr);
+
// SecSIPIDCheck --
// check the Identity header value
// * identityVal - identity header value
@@ -143,6 +156,26 @@ extern int SecSIPIDSetFileCacheOptions(char* dirPath, int expireVal);
// * return: 0 - on success; -1 - on failure
extern int SecSIPIDGetURLContent(char* urlVal, int timeoutVal, char** outPtr, int* outLen);
+// SecSIPIDOptSetS --
+// set a string option for the library
+// * optName - name of the option
+// * optVal - value of the option
+// * return: 0 if option was set, -1 otherwise
+extern int SecSIPIDOptSetS(char* optName, char* optVal);
+
+// SecSIPIDOptSetN --
+// set a number (integer) option for the library
+// * optName - name of the option
+// * optVal - value of the option
+// * 0 if option was set, -1 otherwise
+extern int SecSIPIDOptSetN(char* optName, int optVal);
+
+// SecSIPIDOptSetV --
+// set an option for the library
+// * optNameVal - string with name=value of the option
+// * 0 if option was set, -1 otherwise
+extern int SecSIPIDOptSetV(char* optNameVal);
+
#ifdef __cplusplus
}
#endif
diff --git a/src/modules/secsipid_proc/secsipid_proc_mod.c b/src/modules/secsipid_proc/secsipid_proc_mod.c
index 9356101d3a..1054582b17 100644
--- a/src/modules/secsipid_proc/secsipid_proc_mod.c
+++ b/src/modules/secsipid_proc/secsipid_proc_mod.c
@@ -44,6 +44,9 @@ int secsipid_proc_bind(secsipid_papi_t *papi)
papi->SecSIPIDCheckFullPubKey = SecSIPIDCheckFullPubKey;
papi->SecSIPIDSetFileCacheOptions = SecSIPIDSetFileCacheOptions;
papi->SecSIPIDGetURLContent = SecSIPIDGetURLContent;
+ papi->SecSIPIDOptSetS = SecSIPIDOptSetS;
+ papi->SecSIPIDOptSetN = SecSIPIDOptSetN;
+ papi->SecSIPIDOptSetV = SecSIPIDOptSetV;
return 0;
}
### Description
When updating from Kamailio 5.2.2 to 5.4.4, we're encountering an issue: the pua_dialoginfo module publishes a `confirmed` state for the dialog, even though it's still ringing.
It turns out this commit introduces the problem since 5.3.0: 4efe19f
So since 5.3.0, the dialog module (i think correctly?) sends out state updates for PRACK dialog updates as `DLGCB_REQ_WITHIN` events. But the `pua_dialoginfo` module seems to see that as a signal to mark the dialog confirmed (see [here](https://github.com/kamailio/kamailio/blob/master/src/modules/pua_dial…).
One easy fix would be to simply remove `DLGCB__REQ_WITHIN` from the case list in pua_dialoginfo?
OpenSER [seems to](https://github.com/OpenSIPS/opensips/blob/master/modules/pua_dialoginfo… ditch the `DLGCB_REQ_WITHIN` messages altogether, for specific messages...
### Troubleshooting
#### Reproduction
- Use the pua_dialoginfo module
- Make sure your device uses PRACK
- See that the dialog is confirmed even before you pick up; watch for log lines: `__dialog_sendpublish(): dialog confirmed`
#### Debugging Data
N/A
#### Log Messages
With 5.4.4:
```
2021-04-02T16:49:44.453339+02:00 debug proxy[17964]: DEBUG: pua_dialoginfo [pua_dialoginfo.c:295]: __dialog_sendpublish(): dialog confirmed, from=sip:220@188.166.42.37
```
#### SIP Traffic
Just a regular invite with prack.
### Possible Solutions
See above.
### Additional Information
Reproduced with Kamailio 5.4.4, but probably all versions from 5.3.0 are affected.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2700
<!-- Kamailio Pull Request Template -->
<!--
IMPORTANT:
- for detailed contributing guidelines, read:
https://github.com/kamailio/kamailio/blob/master/.github/CONTRIBUTING.md
- pull requests must be done to master branch, unless they are backports
of fixes from master branch to a stable branch
- backports to stable branches must be done with 'git cherry-pick -x ...'
- code is contributed under BSD for core and main components (tm, sl, auth, tls)
- code is contributed GPLv2 or a compatible license for the other components
- GPL code is contributed with OpenSSL licensing exception
-->
#### Pre-Submission Checklist
<!-- Go over all points below, and after creating the PR, tick all the checkboxes that apply -->
<!-- All points should be verified, otherwise, read the CONTRIBUTING guidelines from above-->
<!-- If you're unsure about any of these, don't hesitate to ask on sr-dev mailing list -->
- [x] Commit message has the format required by CONTRIBUTING guide
- [x] Commits are split per component (core, individual modules, libs, utils, ...)
- [x] Each component has a single commit (if not, squash them into one commit)
- [x] No commits to README files for modules (changes must be done to docbook files
in `doc/` subfolder, the README file is autogenerated)
#### Type Of Change
- [x] Small bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds new functionality)
- [ ] Breaking change (fix or feature that would change existing functionality)
#### Checklist:
<!-- Go over all points below, and after creating the PR, tick the checkboxes that apply -->
- [ ] PR should be backported to stable branches
- [x] Tested changes locally
- [x] Related to issue #2574 and #2641
#### Description
<!-- Describe your changes in detail -->
lost: new features, attributes and a new function to dereference location
- features: LoST redirect, dynamic HELD url resolving (#2574), LoST NAPTR,
POST request to dereference loation
- attributes: reponse_time (-1:emergencyDispatch, 0:emergencyRouting, >0[ms]);
post_request (POST method to dereference location #2641); recursion (1:yes/0:no);
location_profile (PIDF/LO profile selection: 0:first/1:last/2:geo/3:civic);
verbose 0/1 (detailed LoST response as log INFO);
geoheader_type (filter schema: 0:any/1:cid/2:http/3:https);
geoheader_order (0:first/1:last)
- function: lost_held_dereference (specific function to dereference location
using POST method); attributes are url (r;string), resp.-time (r;string),
resp.-type (r;string), pidf (r/w;string) and error (r/w;string)
- general: The extension of the module allows dynamic querying of LIS/HELD
and LOST services via NAPTR lookup. In the case of LOST, a redirect
response is evaluated. In case a lost_held_request (used to connect
to a LIS via POST or GET) is passed with an empty string ("") for the
connection parameter, then P-A-I or From header value hostnames are used
for NAPTR lookup to get a corresponding service.
http_client: http_client_request (api) content-type header support
- new api call including a content-type argument implemented as new
function - required to resolve geolocation url using POST (#2641)
- Note: not sure if this is the most elegant solution, but it helps
to avoid backward compatibility issues
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/2675
-- Commit Summary --
* http_client: http_client_request (api) content-type header support
* lost: new features, attributes and a new function to dereference location
-- File Changes --
M src/modules/http_client/curl_api.c (1)
M src/modules/http_client/curl_api.h (3)
M src/modules/http_client/functions.c (68)
M src/modules/http_client/functions.h (14)
M src/modules/lost/functions.c (902)
M src/modules/lost/functions.h (3)
M src/modules/lost/lost.c (88)
A src/modules/lost/naptr.c (255)
A src/modules/lost/naptr.h (38)
M src/modules/lost/pidf.c (5)
A src/modules/lost/response.c (991)
A src/modules/lost/response.h (131)
M src/modules/lost/utilities.c (447)
M src/modules/lost/utilities.h (27)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/2675.patchhttps://github.com/kamailio/kamailio/pull/2675.diff
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/2675