When tps_shutdown is called as part of the cleanup process there is a
chance that one of the taskprocessors that references the
tps_singletons object is still running. The change is to allow for
tps_shutdown to check tps_singleton's container count and give the
running taskprocessors a chance to finish. If after
AST_TASKPROCESSOR_SHUTDOWN_MAX_WAIT (10) seconds there are still
container references we shutdown anyway as this is most likely a bug
due to a taskprocessor not being unreferenced.
ASTERISK-29365
Change-Id: Ia932fc003d316389b9c4fd15ad6594458c9727f1
There are a lot of Queue AMI actions and Queue applications
which do not load queue and queue members from Realtime.
AMI actions
QueuePause - if queue not in memory - response "Interface not found".
QueueStatus/QueueSummary - if queue not in memory - empty response.
Applications:
PauseQueueMember - if queue not in memory
Attempt to pause interface %s, not found
UnpauseQueueMember - if queue not in memory
Attempt to unpause interface xxxxx, not found
This patch adds a new function load_realtime_queues
which loads queue and queue members for desired queue
or all queues and all members if param 'queuename' is NULL or empty.
Calls the function load_realtime_queues when needed.
Also this patch fixes leak of ast_config in function set_member_value.
Also this patch fixes incorrect LOG_WARNING when pausing/unpausing
already paused/unpaused member.
The function ast_update_realtime returns 0 when no record modified.
So 0 is not an error to warn about.
ASTERISK-29873 #close
ASTERISK-18416 #close
ASTERISK-27597 #close
Change-Id: I554ee0eebde93bd8f49df7f84b74acb21edcb99c
This code was needlessly complex and would fail to properly delimit
the response message if LOW_MEMORY was defined.
Change-Id: Iae50bf09ef4bc34f9dc4b49435daa76f8b2c5b6e
The XML Manager Event Interface (amxml) now generates attribute names
that are compliant with the XML 1.1 specification. Previously, an
attribute name that started with a digit would be rendered as-is, even
though attribute names must not begin with a digit. We now prefix
attribute names that start with a digit with an underscore ('_') to
prevent XML validation failures.
This is not backwards compatible but my assumption is that compliant
XML parsers would already have been complaining about this.
ASTERISK-29886 #close
Change-Id: Icfaa56a131a082d803e9b7db5093806d455a0523
Added the following APIs:
pjsip_multipart_find_part_by_header()
pjsip_multipart_find_part_by_header_str()
pjsip_multipart_find_part_by_cid_str()
pjsip_multipart_find_part_by_cid_uri()
Change-Id: I6aee3dcf59eb171f93aae0f0564ff907262ef40d
In dev mode, if you call pjsip_auth_clt_deinit() with an auth_sess
that hasn't been initialized, it'll assert and abort. If
digest_create_request_with_auth() fails to find the proper
auth object however, it jumps to its cleanup which does exactly
that. So now we no longer attempt to call pjsip_auth_clt_deinit()
if we never actually initialized it.
ASTERISK-29888
Change-Id: Ib6171c25c9fe8e61cc8d11129e324c021bc30b62
If you have a development branch for a major project that
will receive gerrit reviews it'll probably be named something
like "development/16/newproject". That will necessitate setting
"defaultbranch=development/16/newproject" in .gitreview. The
make_version script uses that variable to construct the asterisk
version however, which results in versions like
"GIT-development/16/newproject-ee582a8c7b" which is probably not
what you want. Worse, since the download_externals script uses
make_version to construct the URL to download the binary codecs
or DPMA. Since it's expecting a simple numeric version, the
downloads will fail.
To get this to work, a new variable "basebranch" has been added
to .gitreview and make_version has been updated to use that instead
of defaultversion:
.gitreview:
defaultbranch=development/16/myproject
basebranch=16
Now git-review will send the reviews to the proper branch
(development/16/myproject) but the version will still be
constructed using the simple branch number (16).
If "basebranch" is missing from .gitreview, make_version will
fall back to using "defaultbranch".
Change-Id: I2941a3b21e668febeb6cfbc1a7bb51a67726fcc4
Adds a new option, defaultenabled, to the CDR core to
control whether or not CDR is enabled on a newly created
channel. This allows CDR to be disabled by default on
new channels and require the user to explicitly enable
CDR if desired. Existing behavior remains unchanged.
ASTERISK-29808 #close
Change-Id: Ibb78c11974bda229bbb7004b64761980e0b2c6d1
In order to get around the issue of certain frames
having names that could overlap, func_frame_drop
surrounds names with commas for the purposes of
comparison.
The buffer is allocated and printed to properly,
but the original buffer is used for comparison.
In most cases, this wouldn't have had any effect,
but that was not the intention behind the buffer.
This updates the code to reference the modified
buffer instead.
ASTERISK-29854 #close
Change-Id: I430b52e14e712d0e62a23aa3b5644fe958b684a7
Fixes some minor logic issues with the module:
Previously, the OPT_END_FILTER flag was getting
tested before options were parsed, so it could
never evaluate to true (wrong ordering).
Additionally, the initially parsed timeout (float)
needs to be compared with 0, not the result int
which is set afterwards (wrong variable).
ASTERISK-29857 #close
Change-Id: I0062bce3b391c15e5df7a714780eeaa96dd93d4c
When generating dtmfs, asterisk can incorrectly think packet loss
occured during the dtmf generation, resulting in a jump in sequence
numbers when forwarding voice frames resumes. This patch forces
asterisk to re-learn the expected sequence number after each DTMF
to avoid this
ASTERISK-29869 #close
Change-Id: Icc7de3d947b207b82c99d3c327af8095884df853
autoconfigh.h.in was missed in the original review for this
issue. Additionally it looks like I have newer pkg-config autoconf
macros on my development machine.
ASTERISK-29817
Change-Id: I3c85a4de82c5d7d6e0e23dad4c33bb650a86a57b
Previously there was no way to specify a connection timeout when
attempting to connect a websocket client to a server. This patch
makes it possible to now do such.
Change-Id: I5812f6f28d3d13adbc246517f87af177fa20ee9d
sched: Avoid a double deref when AST_SCHED_DEL_UNREF is called on an
executing call-back. This is done by adding a new variable 'rescheduled'
to the struct sched which is set in ast_sched_runq and checked in
ast_sched_del_nonrunning. ast_sched_del_nonrunning is a replacement for
now deprecated ast_sched_del which returns a new possible value -2
if called on an executing call-back with rescheduled set. ast_sched_del
is modified to call ast_sched_del_nonrunning to maintain existing code.
AST_SCHED_DEL_UNREF is also updated to look for the -2 in which case it
will not throw a warning or invoke refcall.
test_sched: Add a new unit test sched_test_freebird that will check the
reference count in the resolved scenario.
ASTERISK-29698
Change-Id: Icfb16b3acbc29cf5b4cef74183f7531caaefe21d
if holdtime is (0 min, 0 sec) there is no hold time announcements
we should then also not playing queue-thankyou
ASTERISK-29831
Change-Id: Ic7e51dcde526b23f1cd8d24e1d1e2d81e10f9d2c
Enable the Linux rdtsc implementation on NetBSD as well. The assembly
works correctly there.
ASTERISK-29851
Change-Id: I460ad9b4d971913420ecb84186f5ba5ab03f6f37
Fix the sed(1) invocation used to process git-svn-id not to use "\s"
that is a GNU-ism and is not supported by NetBSD sed. As a result,
this call did not work properly and make_version did output the full
git-svn-id line rather than the revision.
ASTERISK-29852
Change-Id: Ie4b406e2748920643446851a0a252a4ca7245772
Implement the ast_get_tid() function for NetBSD system. NetBSD supports
getting the TID via _lwp_self().
ASTERISK-29850
Change-Id: If57fd3f9ea15ef5d010bfbdcbbbae9b379f72f8c
Fix the configure script not to detect the presence of gethostbyname_r()
on NetBSD incorrectly. NetBSD includes it as an internal libc symbol
that is not exposed in system headers and that is incompatible with
other implementations. In order to avoid misdetecting it, perform
the symbol check only if the declaration is found in the public header
first.
ASTERISK-29817
Change-Id: Iafa359b09908251bcd299ff54be003ea129b9eda
Remove the HMAC declarations from the includes. They are
not implemented nor used anywhere, and their presence breaks the build
on NetBSD that delivers an incompatible hmac() function in <stdlib.h>.
ASTERISK-29818
Change-Id: I0c4b88645e30174b1b63846a6b328625b69c2ea7
Reverted recent change that set '--with-external-srtp' instead
of '--without-external-srtp'. Since Asterisk handles all SRTP,
we don't need it enabled in pjproject at all.
ASTERISK-29867
Change-Id: I2ce1bdd30abd21c062eac8f8fefe9b898787b801
The code currently checks to see if an RFC3389
warning flag is set, except if it is, it merely
sets the flag again, the logic of which doesn't
make any sense.
This adjusts the if comparison to check if the
flag has NOT been set, and if so, emit a notice
log event and set the flag so that future frames
do not cause an event to be logged.
ASTERISK-29856 #close
Change-Id: Ib7098c947c63537d087a03b4646199fbb963f8e1
Neither pjsip_message_filter's filter_on_tx_message() nor
res_pjsip_session's session_outgoing_nat_hook() were multipart
aware and just assumed that an SDP would be the only thing in
a message body. Both were changed to use the new
pjsip_get_sdp_info() function which searches for an sdp in
both single- and multi- part message bodies.
ASTERISK-29813
Change-Id: I8f5b8cfdc27f1d4bd3e7491ea9090951a4525c56
The change to allow easier hacking on bundled pjproject created
a few issues:
* The new Makefile was trying to run the bundled make even if
PJPROJECT_BUNDLED=no. third-party/Makefile now checks for
PJPROJECT_BUNDLED and JANSSON_BUNDLED and skips them if they
are "no".
* When building with bundled, config_site.h was being copied
only if a full make or a "make main" was done. A "make res"
would fail all the pjsip modules because they couldn't find
config_site.h. The Makefile now copies config_site.h and
asterisk_malloc_debug.h into the pjproject source tree
when it's "configure" is performed. This is how it used
to be before the big change.
ASTERISK-29858
Change-Id: I9427264fa3cb8b3f59a95e5f9693eac236a6f76d
Added two new functions to assist checking media types...
* ast_sip_are_media_types_equal compares two pjsip_media_types.
* ast_sip_is_media_type_in tests if one media type is in a list
of others.
Added static definitions for commonly used media types to
res_pjsip.h.
Changed several modules to use the new functions and static
definitions.
ASTERISK_29813
(not ready to close)
Change-Id: Ief77675235bd3bf00a6b095d4673fd878d0801b9
A regression was introduced in ASTERISK~29531 that caused 'say'
functions to fail with file lists that would previously have
succeeded. This caused affected channels to hang up where previously
they would have continued.
We now explicitly check for the empty string to restore the previous
behavior.
ASTERISK-29859 #close
Change-Id: Ia2e5769868e2792313c2d7c07996efe009c6f8d5
pjsip_msg_find_hdr(), pjsip_msg_find_hdr_by_name(), and
pjsip_msg_find_hdr_by_names() require a pjsip_msg to be passed in
so if you need to search a header list that's not in a pjsip_msg,
you have to do it yourself. This commit adds generic versions of
those 3 functions that take in the actual header list head instead
of a pjsip_msg so if you need to search a list of headers in
something like a pjsip_multipart_part, you can do so easily.
Change-Id: I6f2c127170eafda48e5e0d5d4d187bcd52b4df07
Documentation for built-in special system and channel
vars is currently outdated, and updating is a manual
process since there is no XML documentation for these
anywhere.
This adds documentation for system vars to func_env
and for channel vars to func_channel so that they
appear along with the corresponding fields that would
be accessed using a function.
ASTERISK-29848 #close
Change-Id: I6997f925c4a45fffe71321861f5898a8b7182fa9
Every config variable in the directories
section of asterisk.conf currently has a
counterpart built-in variable containing
the value of the config option, except
for the last one, astsbindir, which should
have an ASTSBINDIR variable.
However, the actual corresponding ASTSBINDIR
variable is missing in pbx_variables.c.
This adds the missing variable so that all
the config options have their corresponding
variable.
ASTERISK-29847 #close
Change-Id: I36006faf471825b36ebc8aa5e87a3bcb38d446fc
There are times when you need to troubleshoot issues with bundled
pjproject or add new features that need to be pushed upstream
but...
* The source directory created by extracting the pjproject tarball
is not scanned for code changes so you have to keep forcing
rebuilds.
* The source directory isn't a git repo so you can't easily create
patches, do git bisects, etc.
* Accidentally doing a make distclean will ruin your day by wiping
out the source directory, and your changes.
* etc.
This commit makes that easier.
See third-party/pjproject/README-hacking.md for the details.
ASTERISK-29824
Change-Id: Idb1251040affdab31d27cd272dda68676da9b268
gethostbyname() and gethostbyname_r() are deprecated in favor of
getaddrinfo() which we use in the ast_sockaddr family of functions.
ASTERISK-29819 #close
Change-Id: Ie277c0ef768d753b169c121ef570a71665692ab7
Fixes 12pm noon incorrectly returning 0/a.m.
Also fixes a misspelling typo in the config.
ASTERISK-29695 #close
Change-Id: Ie40f9618636eb4c483b449bd707a5dcffca5c406
adding support for playing the correct en/et for nordic languages
by adding 'n' for neuter gender in the relevant ast_say_number
ASTERISK-29827
Change-Id: I03ebc827d2f0dc95132ab2f42799893c70edc5b1
Adds the macro DTMF_MATRIX_SIZE to replace
the magic number 4 sprinkled throughout
dsp.c.
ASTERISK-29815 #close
Change-Id: Ie3bddb92c6b16204ece0f758009e9490eb33b9ba
Adds a command to the CLI to unload and then
load a module. This makes it easier to perform
these operations which are often done
subsequently to load a new version of a module.
"module reload" already refers to reloading of
configuration, so the name "refresh" is chosen
instead.
ASTERISK-29807 #close
Change-Id: I595f6f11774a0de2565a1fba38da22309ce93a2c
Currently, the MP3Player application doesn't
emit a warning if attempting to play a stream
which no longer exists. This can be a common
scenario as many mp3 streams are valid at some
point but can disappear at any time.
Now a warning is thrown if attempting to play
a nonexistent MP3 stream, instead of silently
exiting.
ASTERISK-29829 #close
Change-Id: I53a0bf1ed1740166655eb66fe7675f6f808bf535
Adds missing documentation for some channel,
bridge, and queue events.
ASTERISK-24427
ASTERISK-29515
Change-Id: I92b06b88c8cadc0155f95ebe3e870b3e795a8c64
The current TCP client connect code, blocks and does not handle EINTR
error case.
This patch makes the client socket non-blocking while connecting,
ensures a connect does not immediately fail due to EINTR "errors",
and adds a connect timeout option.
The original client start call sets the new timeout option to
"infinite", thus making sure old, orginal behavior is retained.
ASTERISK-29746 #close
Change-Id: I907571843a83e43c0742b95a64785f4411f02671
Adds tech-agnostic support for SF signaling
by adding SF sender and receiver applications
as well as Dial integration.
ASTERISK-29802 #close
Change-Id: I7ec50752e9a661af639425e5d1e339f17411bcad
A previous patch for ASTERISK_29578 caused a 'leak' of
extension state information across queues, causing the
state of the first member of unrelated queues to be
updated in addition to the correct member. Which queues
and members depended on the order of queues in the
iterator.
Additionally, it is possible to use the same 'hint:' on
multiple queue members, so the update cannot break out
of the update loop early when a match is found.
ASTERISK-29806 #close
Change-Id: If2c1d1cc2a752afd9286d79710fc818596e7a7ad
SayAlpha, SayAlphaCase, SayDigits, SayMoney, SayNumber, SayOrdinal,
and SayPhonetic all claim to allow DTMF interruption if the
SAY_DTMF_INTERRUPT channel variable is set to a truthy value, but we
are failing to break out of a given 'say' application if DTMF actually
occurs.
ASTERISK-29816 #close
Change-Id: I6a96e0130560831d2cb45164919862b9bcb6287e
It's not safe to keep the channel locked while locking
the peer Local channel, as it can result in a deadlock.
This change unlocks it during this time but keeps the
bridge locked to ensure nothing changes about the bridge.
ASTERISK-29821
Change-Id: Ib68eb7037e5a479bcc2aceee77337cdde1fbdde6