Compilation/installation guide introduced.
Usage guide added as a file only and placed
in docs hierarchy, but still not filled in.
Change-Id: Ia97d1d1595e21c2bc8d6c0fa3916e163868c38ce
From MySQL (mariadb) release notes:
"Incompatible Change: The my_bool type is no longer used in MySQL source code.
Any third-party code that used this type to represent C boolean variables
should use the bool or int C type instead.
The change from my_bool to bool means that the mysql.h header file
now requires a C++ or C99 compiler to compile. "
Fixes:
SW_Vsc.cpp: In member function ‘virtual void SW_VscDialog::onInvite(const AmSipRequest&)’:
SW_Vsc.cpp:913:5: error: ‘my_bool’ was not declared in this scope; did you mean ‘bool’?
913 | my_bool recon = 1;
| ^~~~~~~
| bool
SW_Vsc.cpp:981:57: error: ‘recon’ was not declared in this scope
981 | if (mysql_options(my_handler, MYSQL_OPT_RECONNECT, &recon) != 0)
| ^~~~~
make: *** [../../core/plug-in/Makefile.app_module:83: SW_Vsc.o] Error 1
Change-Id: I74bc973299223fd00236569e905a57882b055f1a
For the `AmThreadLocalStorage` its static `t` member
must be explicitely initialized outside of the template class.
Because it is a template class, it will only be instantiated
when used (when the data type is known), if no initialization
of the static member provided, then linker will fail to link
it (for other users like `RedisCheckpointWriter` which instantiates
`AmThreadLocalStorage` with `RedisConnection`).
Fixes:
ERROR: opening plugin '/usr/lib/sems-pbx/plug-in//redis_store.so':
/usr/lib/sems-pbx/plug-in//redis_store.so: undefined symbol: _ZN20AmThreadLocalStorageI15RedisConnectionE1tE
ERROR: while loading plug-in '/usr/lib/sems-pbx/plug-in//redis_store.so'
Change-Id: Iad3072c07fd04c5341838bb2a2c08858ca94b03a
Replace occurences of escaped CRLF used in
the hdrs value passed to the function.
This allows to pass multiple headers to the function,
whereas each header has `\r\n` at the end
(but the DSM script will always make it escaped,
hence the code must take care of it).
Change-Id: Ie76b44ff0f2d76105691aad6dbb5eb8d7dfb628a
This function replaces escaped `\r\n` occurences
into normal its view: `\r\n`.
Make this a function, to let it be reusable
for other DSM implementations.
Change-Id: Ica737df259fbf136b9a6855bc9439cbe005be6c1
Ignore SDP repeated in 183 and 200OK messages
in the late offer/answer, but only for the
`OA_OfferSent` OA state.
Change-Id: I136ad02182685d0158e2c7c4eee53833cd8e00f4
When OA generates own SDP body (e.g. case with
accepted invite in DSP), save it as established_body
for this leg, in order to be able to re-invite
this leg later.
It can happen there is still no SDP seen from the
callee side (other side), and in case we want to
send established re-invite towards this leg,
this will fail, since no SDP body seen yet.
Change-Id: Ifd9f0fb70d27deac871de4eed1648f7c152813f3
Move it to the dlg level, because of complex visibility.
In other words, when working on the dialog level and e.g.
generating new SDP body using `dlg.oa`, there is no way
to save it.
Moving it to the dlg level, gives a control over it on
the whole amount of inheritance levels plus dlg.
Change-Id: Iebb13e3e58f2558dc060e23270d99d690fa54572
Save last reply gotten and processed with
`DSMCallCalleeSession::onSipReply()`.
E.g. 18X are getting processed for DSM sessions there.
Change-Id: Ie0c44b1ddc8acd3fb07e01c6353eb2dce7a45a6e
Use std::condition_variable and std::mutex to implement AmCondition.
Only bools are used for conditions in the code, so make it not a
template.
Change-Id: I57d67492e29c220a5ce941ef67d142b34dcebbff
Re-implement AmMutex as a subclass of std::mutex. Provide copy and
assignment constructors so that it can be used as a member of another
class without preventing it from being copy/assignment constructed.
Change-Id: Id300a6501105a7871396c2be9380d6e0eae02cc7
Consider RecvonlyStream and None (sendrecv) hold types
as NonHold methods.
Fixes:
16: 52:44 CallLeg.cpp: In member function 'CallLeg::holdMethod CallLeg::updateHoldMethod(const AmSdp&)':
16: 52:44 CallLeg.cpp:1421:10: warning: enumeration value 'None' not handled in switch [-Wswitch]
16: 52:44 1421 | switch (hold_method)
16: 52:44 | ^
Change-Id: I2021dd7152ad258e03c28c56cb3b0c7a5e363266
C++20 deprecates implicit conversion of enumerations
during math operations like division.
Instead deprecate enum CPS_SAMPLERATE which is used
in a role of pre-proc definition and add a `const float`
value of which is defined by the constructor and is
unchangable.
Also don't use straight-forward (old style) cast with `(<type>)`
but use C++ designed type casts like a static cast, for the
rest of operands in the formula.
Change-Id: Idbfff86f4ec805f3f6db144f3aa041f8fe2c017a
Volatile increments/decrements are deprecated by C++20,
use a full operation instead.
Fixes:
18: 57:47 AmSession.cpp: In static member function 'static void AmSession::session_started()':
18: 57:47 AmSession.cpp:607:3: warning: '++' expression of 'volatile'-qualified type is deprecated [-Wvolatile]
18: 57:47 607 | session_num++;
18: 57:47 | ^~~~~~~~~~~
18: 57:47 AmSession.cpp: In static member function 'static void AmSession::session_stopped()':
18: 57:47 AmSession.cpp:624:3: warning: '--' expression of 'volatile'-qualified type is deprecated [-Wvolatile]
18: 57:47 624 | session_num--;
18: 57:47 | ^~~~~~~~~~~
Change-Id: I68ad2cee9396765b0df1ba5b583435c326154dde
Add a notice about GPL compatibility.
Add a notice and link to the original SEMS'es GH page
(the one which is dead mainly, less or more).
Change-Id: I72085edd1bb6f34b0a7f41d15a789726dabf0b63
This is a first commit introducing general readthedocs wiki
structure.
It introduced the following main chapters:
- Overview (is a symlink to the README.md), the readthedocs
parses the markdown from here and creates the overview page
Mainly files required for RTD building.
Change-Id: Iad5626da6cff991f272cb0b2260888bba568f622
It's markdown, so on the same manner as we
do e.g. in the rtpengine project, use extension
for the file.
Change-Id: I612be0753d5dee97810e319ffdacbaeb8c0ad7c0
The older one has outdated information
which is not actual and does not correlate
with actual state of things on the project.
Change-Id: Ib9244a6774c53cd811392e67eea0c99d2b298345
Now `RecvonlyStream` is excluded from those
considered as SDP medias putting other side on hold
(with MoH). Hence no need to take it into account.
Change-Id: Ia04e7808898e0d5e4ac99b71a51e9c0126a0dc11
Rework this function so, that it has all
required for it handling in itself, and doesn't
depend on pre-calls of other things before.
Defined exact purpose of it:
- return `holdMethod` based on SDP
- update `hold_type_requested` class member
It uses `isHoldRequest()` to set the `holdMethod`
but doesn't take into account true/false returned
from it, hence uses this function only as a setter.
Change-Id: Ia89eb20294a2a2533b5fb1e6f5d6d95cbb6179dc
Don't consider (global) session level sendrecv
state, in case of media section absence, as
the `InactiveStream`.
Keep it consistent with a logic for media sections:
sendrecv - means active RTP stream on this leg,
hence no MoH to be provided.
Change-Id: I82f359823f69e7fc12835db1054d63621e7d1dad
Previously introduced by 175b00d72b79561d7
the `Recvonly` hold type had started to put
a call on MoH hold.
This was done so, to fulfill momentary demands
of call scenario which is in fact wrong and
should not be supported:
- A puts on sendonly hold B
- B puts vice-versa A on inactive hold
- now two-way MoH stream both sides
- B resumes his stream with recvonly (meanwhile
only sendrecv considered as the only possible
type to put off hold)
This commits keeps support of stream types
detection as it was, hence `RecvonlyStream` is
still supported. But not anymore considered as
a type which can trigger MoH, in other words
it doesn't put on hold.
This approach makes SEMS in sync with MoH
implementation in rtpengine, whereas only
sendonly and inactive states are allowed to trigger
MoH.
Change-Id: Icf5aa082092cd8f79e43d30339ae8f98a25a7381
Use `b2b_mark_dsm_for_updates` DSM session variable
to let updates towards caller have `P-DSM-App:`
header with a given value.
Change-Id: I4bc92f8ec9e2ec51bae70550c294a40581f92443
If requested by `b2b_build_pai_from_hdr` DSM parameter,
then get the value of PAI using this parameter and pass
it further for `B2BSipReplyEvent` processing.
Use event params to pass the value.
`b2b_build_pai_from_hdr` keeps the name of header
coming in the latest reply, from which the PAI's value
is to be built.
Update the `reinviteCaller()` function's signature,
to pass headers towards `dlg->sendRequest()`.
Change-Id: Ic6e66e326f26a830c3ed06c19a6ab7be4ebe0135
This development package was inherited from the upstream sems packaging,
but we have never have had any user for the CE version.
Change-Id: Iacbacecbe014a4eabdf91005d7b00fe4d4b0dea5
Add to the compilation flags the standard,
which has to be used during the compilation
process.
Wasn't the case before.
Change-Id: I51d2303040a6b31d56411e7e4a89da8c0adf7170
When replying with 200OK generated by SEMS to INVITE requests,
which have no SDP body included, just answer with empty 200OK.
This sets the `OAState` of the call leg to `OA_None`.
Change-Id: Ic28e80d670ba4ce98be6abac9d17689688f99f71
Re-use previously offered SDP body, when processing
a call session with an involvement of DSM, and getting
newer SIP invite having no SDP offer.
This affects applications using the B2B `connectCollee()`
functionality and doesn't actually touch the B2B core itself.
(Which would be wrong if changed in a usual core SDP
processing, whereas original request can be empty and
an offer/answer is postponed to 200OK/ACK exchange)
(Re)invites towards DSM applications technically must
not be empty, because DSMs don't support late offering.
In order to overcome that just pretend that empty
re-INVITEs are using previous body version.
Change-Id: I252eb9f32e7dc073454a2258b176f77bf15d35c9
For cases when used in testing environment
add sw_vsc to the list of `exclude_app_modules`.
We cannot link this to the swrate library
while compiling locally, because swrate lib has
a separate repository.
Change-Id: Id5df2c197139a454b9338bb6bdccba87b1c78424
Fix a list of compilation warnings like:
warning: format ‘%llu’ expects argument of
type ‘long long unsigned int’, but argument 5 has
type ‘uint64_t’ {aka ‘long unsigned int’}
Change-Id: I93ca45869c33040d1e53bb8d29fdf7e7e70603bf