During refreshing of the media for the call leg in the
`CallLeg::adjustOffer()`, when the resume is required,
but the `on_hold` wasn't set before (so is false),
then additionally check, whether the SDP body
(media sessions of `MT_AUDIO` type) has state like:
- sendonly
- recvonly
- inactive
This will properly fix the attributes (like: `a=sendonly`)
in the re-INVITE, which is supposed to resume the session.
Change-Id: I1c45b7db55d2a5174f3fd96f3fcd0201b48345f2
The hiredis library does not provide a direct way
to retrieve the allocated port number.
We hav to retrieve the socket file descriptor (redis_context->fd)
from the `redisContext` structure and using the `getsockname()`
get the local address associated with that socket.
Then the `sin_port` field of the resulting `sockaddr_in` structure
will contain the allocated ephemeral port.
By using `ntohs()`, just convert the port number from network
byte order to host byte order for printing. However make an additional
on-the-go type casting into the `unsigned int` also, to be able to print.
(unsigned int is guaranteed to be at least 16 bits,
so this is not a lossy conversion).
Change-Id: Id2a8e9ee4fad6f28db099323fb68fd2db0bfafc2
Backport from the upstream to fix NOTIFY to URI.
Upstream commit: c2908dcb50342e3c8400695b43280181a850fc34
Change-Id: Iff9c0d82ab798f4646284de61365422e48c50a59
Backport from the upstream to fix Python versioning.
Upstream commit: e943f98a8d09a06c88eca10d93e51f7a13056e31
Change-Id: Ia7d6b49270c9f3fa3cc7cb8d921334b2afc1db9b
Fix instances of make rules not being parallel execution safe, where the
targets declare a list of dependencies which depend on the order they
have been declared to be executed serially, otherwise these can cause
race conditions.
Either move some of the dependencies down into their transitive
dependencies, or rearrange them to call $(MAKE) to force a serial
point. In other instances add missing dependencies to make sure the
objects to install have previously been built.
Change-Id: I21b499557ac5e9faa603841fa1882b58239ee650
This was a workaround for Solaris specific issues in the install program
there. The problem is that this can end up generating empty files, that
will not be detected by the packaging system as it will find the file is
present on destination and thus does not need to be installed.
Change-Id: Ib6107957cbf03c4e7da6cf2998d9103224f674d3
Give an exact size of the buf to the `snprintf()` and also treat the
returned value from it to eliminate this warning:
src/XmlRpcValue.cpp: In member function 'std::string XmlRpc::XmlRpcValue::timeToXml() const':
src/XmlRpcValue.cpp:404:53: warning: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 0 and 7 [-Wformat-truncation=]
404 | snprintf(buf, sizeof(buf)-1, "%04d%02d%02dT%02d:%02d:%02d",
| ^~~~
In file included from /usr/include/stdio.h:867,
from /usr/include/c++/10/cstdio:42,
from /usr/include/c++/10/ext/string_conversions.h:43,
from /usr/include/c++/10/bits/basic_string.h:6545,
from /usr/include/c++/10/string:55,
from src/XmlRpcValue.h:14,
from src/XmlRpcValue.cpp:2:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:67:35: note: '__builtin___snprintf_chk' output between 18 and 70 bytes into a destination of size 19
67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Change-Id: Ic545bbc942715f433610f49286ee9d0f92ee25f6
This commit takes care of the following:
SBCDSMInstance.cpp:55:18: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
55 | throw string("DSM SBC call control "DSM_SBC_CCVAR_START_DIAG" parameter not set (see call profile)'");
|
Change-Id: I9c5ddd5b438d672e29ce0028c00df177adfbfd33
This fixes the warning:
CallLeg.cpp: In member function 'void CallLeg::adjustOffer(AmSdp&)':
CallLeg.cpp:1670:7: warning: 'hm' may be used uninitialized in this function [-Wmaybe-uninitialized]
1670 | if (hm != RecvonlyStream)
| ^~
Change-Id: I7479d1107cb36b733441a3a0ec130658a6786e50
Fix for the:
SBC.cpp:238:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
238 | ERROR("registering "MOD_NAME" application\n");
| ^
SBC.cpp:243:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
243 | ERROR("registering "MOD_NAME" DI interface\n");
| ^
Change-Id: I0199671c027f61f617afc497f2e22cf09e75f78f
Just removal of a few unsed variables:
rtmp.c: In function 'RTMP_ReadPacket':
rtmp.c:2854:7: warning: variable 'didAlloc' set but not used [-Wunused-but-set-variable]
2854 | int didAlloc = FALSE;
| ^~~~~~~~
and this:
rtmp.c:1393:35: warning: 'av_record' defined but not used [-Wunused-const-variable=]
1393 | #define SAVC(x) static const AVal av_##x = AVC(#x)
| ^~~
rtmp.c:1706:1: note: in expansion of macro 'SAVC'
1706 | SAVC(record);
| ^~~~
Change-Id: I8a2bc2c415b44c99b6d881fb7118475f4020c713
The commit fixes this:
JsonRPCServer.cpp: In static member function 'static int JsonRpcServer::processMessage(char*, unsigned int*, JsonrpcPeerConnection*)':
JsonRPCServer.cpp:135:49: warning: enum constant in boolean context [-Wint-in-bool-context]
135 | if (peer->flags && JsonrpcPeerConnection::FL_CLOSE_WRONG_REPLY) {
|
Change-Id: I7894f3e2727e384458ea736ad9555864894b0386
We should provide a proper formation of the timestamp
in the `timeToXml()`. Just unify that in the manner
it's done in the rest of places.
It will fix then this:
src/XmlRpcValue.cpp: In member function 'std::string XmlRpc::XmlRpcValue::timeToXml() const':
src/XmlRpcValue.cpp:404:53: warning: '%02d' directive output may be truncated writing between 2 and 11 bytes into a region of size between 0 and 7 [-Wformat-truncation=]
404 | snprintf(buf, sizeof(buf)-1, "%04d%02d%02dT%02d:%02d:%02d",
| ^~~~
In file included from /usr/include/stdio.h:867,
from /usr/include/c++/10/cstdio:42,
from /usr/include/c++/10/ext/string_conversions.h:43,
from /usr/include/c++/10/bits/basic_string.h:6545,
from /usr/include/c++/10/string:55,
from src/XmlRpcValue.h:14,
from src/XmlRpcValue.cpp:2:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:67:35: note: '__builtin___snprintf_chk' output between 18 and 70 bytes into a destination of size 19
67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 | __bos (__s), __fmt, __va_arg_pack ());
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Change-Id: Iadfed6c14e1bdb0c8ed0b8b36b996ed08b129c42
A mistake in the bool of the return in the XmlRpc::tmEq():
src/XmlRpcValue.cpp: In function 'bool XmlRpc::tmEq(const tm&, const tm&)':
src/XmlRpcValue.cpp:144:52: warning: self-comparison always evaluates to true [-Wtautological-compare]
144 | t1.tm_hour == t2.tm_hour && t1.tm_mday == t1.tm_mday &&
|
Second one should be of the `t2` variable.
Change-Id: I7fbf3b1b2f9becdb14db2e994fb4d0abf0937964
This commit fixes this:
ModSbc.cpp:611:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
611 | ERROR("Could not find "DSM_AVAR_REQUEST" avar for request");
| ^
ModSbc.cpp:616:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
616 | ERROR("Could not find "DSM_AVAR_REQUEST" avar as pointer");
| ^
ModSbc.cpp:622:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
622 | ERROR("Could not find "DSM_AVAR_REQUEST" avar as request");
| ^
ModSbc.cpp:634:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
634 | ERROR("Could not find "DSM_AVAR_REPLY" avar for reply");
| ^
ModSbc.cpp:639:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
639 | ERROR("Could not find "DSM_AVAR_REPLY" avar as pointer");
| ^
ModSbc.cpp:645:11: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
645 | ERROR("Could not find "DSM_AVAR_REPLY" avar as reply");
| ^
Change-Id: I68fe83180b39c34ec365000208527ddc2eff15d4
We have to manually cast the `->len` of type `size_t` to the `int` type,
when it's used for the printing of logs.
Change-Id: I7e116425aecf5ee7e39d8df868edc05b33581014
It's been noticed that in the DSMCall::onInvite() we get this:
DSMCall.cpp: In member function 'virtual void DSMCall::onInvite(const AmSipRequest&)':
DSMCall.cpp:112:34: warning: the compiler can assume that the address of 'req' will never be NULL [-Waddress]
112 | avar[DSM_AVAR_REQUEST] = AmArg(&req);
| ^~~~
DSMCall.cpp:112:34: warning: 'nonnull' argument 'req' compared to NULL [-Wnonnull-compare]
112 | avar[DSM_AVAR_REQUEST] = AmArg(&req);
| ^~~~
Just manage the AmArg construction via the `DSMSipRequest`.
Change-Id: I007e319dd64bf60788efa2d46dfc15b056ee33d7
This commit takes care of this:
../../core/log.h:143:30: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long int' [-Wformat=]
143 | _LOG(L_DBG, error_category " " fmt, ##args)
../../core/log.h:121:45: note: in definition of macro '_LOG'
121 | int n_ = snprintf(msg_, sizeof(msg_), fmt, ##args); \
| ^~~
../../core/log.h:166:29: note: in expansion of macro 'CAT_DBG'
166 | #define DBG(fmt, args...) CAT_DBG(ERROR_CATEGORY_DGENERAL, fmt, ##args)
| ^~~~~~~
DBRegAgent.cpp:298:4: note: in expansion of macro 'DBG'
298 | DBG("REGISTER: Triggering for subscriber with object_id=<%d>\n", object_id);
| ^~~
DBRegAgent.cpp:298:62: note: format string is defined here
298 | DBG("REGISTER: Triggering for subscriber with object_id=<%d>\n", object_id);
| ~^
| |
| int
| %ld
../../core/log.h:143:30: warning: format '%d' expects argument of type 'int', but argument 4 has type 'long int' [-Wformat=]
143 | _LOG(L_DBG, error_category " " fmt, ##args)
../../core/log.h:121:45: note: in definition of macro '_LOG'
121 | int n_ = snprintf(msg_, sizeof(msg_), fmt, ##args); \
| ^~~
../../core/log.h:166:29: note: in expansion of macro 'CAT_DBG'
166 | #define DBG(fmt, args...) CAT_DBG(ERROR_CATEGORY_DGENERAL, fmt, ##args)
| ^~~~~~~
DBRegAgent.cpp:423:7: note: in expansion of macro 'DBG'
423 | DBG("REGISTER: Triggering for peering with object_id=<%d>\n", object_id);
| ^~~
DBRegAgent.cpp:423:62: note: format string is defined here
423 | DBG("REGISTER: Triggering for peering with object_id=<%d>\n", object_id);
| ~^
| |
| int
| %ld
Change-Id: I088f9a1a2861d1f7aae7b7cab84ce0e66b3127c2
This commit takes care of this:
DBRegAgent.cpp: In member function 'bool DBRegAgent::loadRegistrations()':
DBRegAgent.cpp:293:24: warning: NULL used in arithmetic [-Wpointer-arith]
293 | if (object_id == NULL || object_id == 0) {
It makes no sense to compare the `object_id` of type long against
the NULL.
Change-Id: I60cdde2dd459dbfa9c7c942cd8f0d111096411e7
It's been noticed that the compiler reports us:
`Sorry: TabError: inconsistent use of tabs and spaces in indentation`
for the following files:
- apps/examples/mixin_announce/mix_announce.py
- apps/examples/tutorial/annc_service/annc_service.py
This commit fixes it.
Change-Id: I7367af707b50799997d8d2f9c6f1dbff0907f459
It's been noticed that the compiler reports us:
`Missing parentheses in call to 'print'. Did you mean print(...)?`
Affected files:
- apps/dsm/mods/mod_py/python_inc.py
- apps/dsm/mods/mod_py/python_lib.py
- apps/ivr/python_inc.py
- apps/ivr/python_lib.py
- apps/py_sems/python_inc.py
- apps/py_sems/python_lib.py
Change-Id: I501d69b5681e6cd570b6c3a7c552d268d531d289
Eliminate the `auto_ptr` usage for core/* ,
since this pointer type has been deprecated in C++11.
Use, as recommended, `unique_ptr` instead.
Change-Id: I352e03bd0c8401d9a4890d8a1845913e4c22dab3
Remove a logging, which produces too much noise in
the sems-b2b.log and isn't too much informative.
Original ticket's number: 56354
Change-Id: I5886520379fa0637551631918351551f6e3e17f7
We have to add multi-line headers parsing support, to be able
to properly detect and apply filters to such headers.
Since the SEMS prefers to work with single line values,
multi-line values are getting converted into signle line, like that:
Accept: application/sdp,
application/isup,
multipart/mixed
gets converted into:
Accept: application/sdp, application/isup, multipart/mixed
Additionally:
Support of spaces detection in hf names has been added.
We do not consider spaces as part of the hf name, if they are added.
Original ticket number: 56354
Change-Id: I6adda8218ee6b88035fa9297187187d868f4eb60
Because of messy organizing of the code in the functions,
it's not possible to read that and work with that.
Original ticket number: 56354
Change-Id: Ic07317116cdc043a9431d6469a63eeabc2c1f71b
Improvement of the way we detect, whether or not the
received SDP offer is the on-hold request.
Now we do not take into account the 'recvonly' cases,
when the offer arrives with that
(only 'inactive', 'sendonly' or "zeroed" on-hold).
From now on we also want to consider 'recvonly' as
the completely equal on-hold request, which expects
that the end recipient of that will return us the 'sendonly'
(or worst case 'sendrecv').
Original ticket number: 0055934
Change-Id: Ice3b767c4aef2c6e3e96199219ad0d0e04e93ecf
We have to optimize our code:
- substitute all repeating (DSM related) code with a helper static functions
- remove all excessive stuff, which plays no role
Change-Id: I27170509d84a634dc4a9a865ea8395e4e8cc2f3d
Introduce a new header file "global_defs.h" in order to use that
for global definitions or macroses, which are not particularly
related to the SIP headers. Such as DSM applications names.
This will simplify handling and decrease hardcoding all around
the project.
With this commit additionally:
- stop hardcoding values related to DSM applications specific names
- move all the DSM definitions into the global_defs.h or defs.h
Change-Id: I389f632434f0ae1e62540e8df584fdc5e1e07e39
We need to add the 'early-dbprompt' DSM application into
the processing of the 480 replies, which have
'P-DSM-App: <app-name>;playback=finished' parameter set.
Change-Id: I3e561f510d8e56ca7d0cece714c0330f3bfa9ecd
Since the P-Early-Announce has gotten deprecated, it's required
to stop using it. And instead start using the P-DSM-App header, which
now carries the same information as parameter ';early-annonce='.
Change-Id: I7f0f378143d0b6600a239084cd51935a31df3d08
There is a need to add an exception processing for 183 Session Progress,
and the following in-dialog requests/responses, in case the 183
has been previously sent to the B2B with the hf
'P-Early-Announce: force'.
This adds the following behavior.
When 183 is received, and the caller has been updated with the
new media capabilities, according to those needed to embed early
media into the media session with the caller (via re-INVITE), then:
- even though the 183 is treated similarly to 200OK in terms of media
updates, do not send ACK to the leg going towards DSM,
becausethe sems-b2b giving the DSM, it's still in stage INVITE/183
- do not re-negotiate the leg going towards the DSM,
after the caller has been updated with the new media (a usual behavior)
because the sems-b2b giving the DSM still considers the dialog here
in the Early stage
- do not set the leg going towards DSM into the Connected state,
because by the fact, it's still in the Early stage, and setting of
it into the Connected state, will break processing of BYE / CANCEL.
- upon receiving the BYE from the caller (after the DSM announce is heard),
answer right away with 200OK, but do not forward BYE to the let going
towards DSM. Instead initiate the CANCEL towards it, because this leg
is technically still in the Early stage of the dialog.
Original ticket number: TT#187351
Change-Id: Id6e05202add1bcbd358eecbcd5e2cbda1a995b32
We have to add support for playing an early announce for those
failed trasnfers, which for example reach the timeout.
This means there is a need to do the following:
- send 183 from early announce DSM module
- receive 183 on the B2B leg, which was sending an INVITE to
the transfer destination
- update the caller with an actual media capabilities,
so it is able to receive the early announcement
The mechanism behind that is that:
- if Proxy in the other leg, which was used to reach the party
(to which the transfer has been done),
requests the force usage of the announcement for the caller
in the very first leg (with the caller who is on hold now)
- then the DSM functionality adds the 'P-Early-Announce: force' header in 183
to let sems-b2b in the very first leg know, that there is a need to embed
the audio from the early media into the media session with the caller.
- hence, caller gets a media re-negotiation
- and the leg with the DSM doesn't get updated, since it's still remains
in the Early stage of the dialog
All the solution is built around two important things:
- Proxy uses the P-App-Param called ';force_early_announce=1' to show to the
DSM that it needs a "forcive" early media, which must "override" the MoH
for the caller, if it's being played.
- Sems-b2b uses the header 'P-Early-Announce' to let the very original leg
with sems-b2b know, that there is a need to embed early media into
the already established media session with a caller
Original ticket number: TT#187351
Change-Id: I2cda231e877d9ba91eaa1738322b0981618c1dbf
We don't have to compare a const char pointer with '>' / '<' operands
agains 0.
The conditional code will not get executed, if 'data->version' is null -
but not that it will, if it's not null.
We should use a classical check for null pointers agains 0 using '!=',
this has the least potential for subtle bugs, and is guaranteed to be portable.
(real ticket number: MT#55816)
Change-Id: I8a6fc38eb947c8908545925fae866c92ab4e3d5f
We need to rework the utils_get_count_files(), because it improperly
treats the given list of numbers, especially what relates to zeroes.
Previous approach gets deprecated, and another approach is applied.
(real ticket number: TT#143150)
Change-Id: Idf1332d12a40e2555d61c16e9f6635bdced82c6d
We need to add a possibility to control (add/modify/delete) registrations
for SIP peerings using NGCP-panel. For that to work NGCP-panel uses XMLRPC
requests being sent towards SEMS, which in its turn takes care of work with:
- locally cached map structures:
* registrations / registrations_peers
* registration_ltags / registration_ltags_peers
* registration_timers / registration_timers_peers
- MySQL database (our scope of interest is 'sems_registrations')
- triggering events
Main amount of work is concentrated on interaction with map structures which keep
an actual information on registrations of either subscribers and peerings,
and less amount of work is related to the SQL side.
Basically, the main idea is to add an identifier, which will be used by
NGCP-panel when sending XMLRPC messages to SEMS, which will let SEMS know,
whether it's an event for a usual subscriber or a SIP peering.
Also we take care of loading time, when SEMS retrieves all previously saved data
from the DB using: peer / subscriber auth preferences and loads this to be usable.
A new query has been added for peering type, to let peerings be loadable after restart.
(real ticket number: TT#66577)
Change-Id: I0a815d50dd2728f2fa1411d21adfb084434766b2
Otherwise we're missing plenty of audio files in /usr/lib/ngcp-sems/audio/,
several plugins in /usr/lib/ngcp-sems/plug-in/, as well as a bunch of binaries:
* /usr/sbin/ngcp-sems-get-callproperties
* /usr/sbin/ngcp-sems-list-active-calls
* /usr/sbin/ngcp-sems-list-calls
* /usr/sbin/ngcp-sems-list-finished-calls
* /usr/sbin/ngcp-sems-sbc-get-activeprofile
* /usr/sbin/ngcp-sems-sbc-get-regex-map-names
* /usr/sbin/ngcp-sems-sbc-list-profiles
* /usr/sbin/ngcp-sems-sbc-load-callcontrol-modules
* /usr/sbin/ngcp-sems-sbc-load-profile
* /usr/sbin/ngcp-sems-sbc-reload-profile
* /usr/sbin/ngcp-sems-sbc-reload-profiles
* /usr/sbin/ngcp-sems-sbc-set-activeprofile
* /usr/sbin/ngcp-sems-sbc-set-regex-map
* /usr/sbin/ngcp-sems-sbc-teardown-call
* /usr/sbin/ngcp-sems-webconference-addparticipant
* /usr/sbin/ngcp-sems-webconference-roomcreate
* /usr/sbin/ngcp-sems-webconference-roominfo
This fixes a regression introduced in commit 1619876f76 (TT#101059).
Ported the python2 scripts we ship with our Debian package to python3
(AKA py3k), fixed inconsistent use of tabs and spaces in indentation
and indention in several files:
* apps/sbc/tools/sems-sbc-*
* apps/examples/db_announce/announcement.py
* apps/examples/py_sems_ex/*py
We're also not installing the *.pyc files (see
apps/ivr/Makefile.ivr_application +
apps/py_sems/Makefile.py_sems_application), they don't exist in py3k
builds and it wouldn't make any sense to ship them in Debian packages
anyway.
(real ticket number: TT#105412)
Change-Id: I44f0f76b4577501eb31fe814781f47087cfd16dd
- customer has a scenario when 180 has to_tag and call terminated by caller with BYE but calle did not get any call termination signalling.
- a bit more special for such cases BYE handling added.
(real ticket number: TT#73957)
Change-Id: I9ebbf4f3a504d3587550e55aec926438199be5e9
This feature gives the user the ability to disable all active
call forwards (CFU, CFB, CFT, CFNA, CFS, CFR, CFO) by triggering
a VSC on the phone.
Additionally create function SW_VscDialog::deleteCF to group all
the common operations that are done to delete a CF.
(real ticket number: TT#71001)
Change-Id: If8bae22b071f337d3f3580c057bc16325a0818c5
'\*' \- matches 0 or more characters
'?' \- matches any one character
for more info, refer to <fnmatch\.h>
(real ticket number: TT#53685)
Change-Id: Ib3f9568a3f4174bfe5cab0db3ea0cda0ea1cf701
If an SDP UPDATE is received after the 183, but before the 200,
SEMS fails when it receive the final ACK. In fact SEMS tries to
find the SDP content inside the ACK message itself.
The solution is copied from sems-pbx module where the issue
doesn't happen.
(real ticket number: TT#43503)
Change-Id: I5a432dc57c701d7eb0d5306d6005508e3310e7ba
Use a proper accessor instead of messing with the struc directly
which has become opaque in latest OpenSSL versions.
(real ticket number: TT#12308)
Change-Id: I51855e46f07f2331ad281a94961ca1d7394dc0de
- Make errors fatal, so that they do not get ignored anymore.
- Use sane make variables that a shell will accept as valid, otherwise
the exports do not work at all.
- Do not use system paths when we should use in-tree ones.
(real ticket number: TT#6850)
Change-Id: I07af8f38cc37c2fa36b6b10559283a7c477d2d36
Fix module exclusion logic
Several of the modules cannot be compiled because they miss Makefiles,
others require additional dependencies or similar. So encode this in the
build system so that people building do not have to figure this out, even
if they pass an explicit list of modules to include or exclude.
(real ticket number: TT#6850)
Change-Id: Icb52a6f62cd0db97460fc5b0771922bdd46e1f6f
Build the library as shared.
Otherwise we are trying to link a static library built as PIE into a
shared library.
(real ticket number: TT#6850)
Change-Id: Idaeb7b92b1c73887d02620f953c5a8df182ae659
Due to the build system not failing on compilation/link errors, parts of
the code base has suffered bit rot.
(real ticket number: TT#6850)
Change-Id: Ia3e35054e4720a55298140069b7a4c21017f2cb1
add username_with_domain option to use auth user with domain part
(real ticket number: MT#9306)
implements M758
Change-Id: Ib482d4f1d49d291cab39add1b6a61c02c36bdbe4
Don't bail out on missing config options, rather than using some
invalid defaults.
Also only check for existence of sound files in the places where
they are needed for optimization purposes.
Use macros to clean up redundant code.
(real ticket number: MT#20649)
Change-Id: Ib1187f249ee589feab407dd99145fc1dea0db83a