Commit Graph

5852 Commits

Author SHA1 Message Date
Joshua Colp 3fd1216083 Merge "stasis_cache: Prune stasis_subscription_change messages" into 13 2018-09-07 05:40:24 -05:00
George Joseph 87550706c8 stasis_cache: Prune stasis_subscription_change messages
The stasis cache provides a way to reconstruct the current state
of topic subscribers.  Unfortunately, since every subscribe and
unsubscribe is cached, the cache continues to grow unabated while
asterisk is running.  This patch removes subscribe messages from
the cache when the corresponding unsubscribe is received.

This patch also registers the cache containers with ao2 so that if
AO2_DEBUG is turned on, you can list the container and get its
stats from the CLI.

ASTERISK-27121

Change-Id: I3d18905e477f3721815da91f30da8d3fbb2d4f56
2018-09-05 12:50:42 -06:00
Richard Mudgett 4e20fe9f06 http.c: Give HTTP error response when received lines are too long.
Added a check when we receive a HTTP request line or header line that is
too long.  We now return an error response to the sender because we are
not able to process the request.

Change-Id: I6df2705435fd7dde4d5d3bdf7acec859cfb7c12d
2018-08-30 16:40:31 -05:00
Joshua Colp c2cafddaf3 Merge "AMI: be less verbose when adding HTTP headers to AMI/HTTP messages." into 13 2018-08-24 10:12:29 -05:00
Jaco Kroon b528715fa0 AMI: be less verbose when adding HTTP headers to AMI/HTTP messages.
All HTTP/AMI message headers are being sent to the verbose channel.
There are multiple places this is happening.  Consolidate the loop into
a function.  Drop the debug/verbose message.

Convert to using ast_asprintf to perform the length calculation, memory
allocation and snprintf all in one step.

Change-Id: Ic45e673fde05bd544be95ad5cdbc69518207c1a1
2018-08-23 12:19:46 -05:00
Richard Mudgett 9b9dee2d2c AMI: Remove docs for nonexistent AMI ContactStatus event headers
Change-Id: I5736965c64c44338f7330e85a24bb46818607f19
2018-08-20 12:31:58 -05:00
Joshua Colp c22efd9990 Merge "stasis: Reduce calculation of stasis message type hash." into 13 2018-08-08 06:04:14 -05:00
Joshua Colp 856b6d1954 stasis: Reduce calculation of stasis message type hash.
When the stasis cache is used a hash is calculated for
retrieving or inserting messages. This change calculates
a hash when the message type is initialized that is then
used each time needed. This ensures that the hash is
calculated only once for the message type.

Change-Id: I4fe6bfdafb55bf5c322dd313fbd8c32cce73ef37
2018-08-06 13:05:56 -03:00
Salah Ahmed 4aa91c6f11 dialplan_functions: wrong srtp use status report of a dialplan function
If asterisk offer an endpoint with SRTP and that endpoint respond
with non srtp, in that case channel(rtp,secure,audio) reply wrong
status.

Why delete flag AST_SRTP_CRYPTO_OFFER_OK while check identical remote_key:
Currently this flag has being set redundantly. In either case identical
or different remote_key this flag has being set. So if we
don't set it while we receive identical remote_key or non SRTP SDP
response then we can take decision of srtp use by using that flag.

ASTERISK-27999

Change-Id: I29dc2843cf4e5ae2604301cb4ff258f1822dc2d7
2018-08-02 16:58:47 -05:00
Jenkins2 111cde6026 Merge "devicestate: Don't create topic when change isn't cached." into 13 2018-07-27 06:09:18 -05:00
Kevin Harwell 059e1e3bc8 json.c: improve ast_json_to_ast_variables performance
When converting from a json object to an ast variables list the conversion
algorithm was doing a complete traversal of the entire variables list for
every item appended from the json structure.

This patch makes it so the list is no longer traversed for each new ast
variable being appended.

Change-Id: I8bf496a1fc449485150d6db36bfc0354934a3977
2018-07-25 15:33:22 -05:00
Joshua Colp dd1b4b38cf devicestate: Don't create topic when change isn't cached.
When publishing a device state the change can be marked as being
cachable or not. If it is not cached the change is just published
to all interested and not stored away for later query. This was not
fully taken into account when publishing in stasis. The act of
publishing would create a topic for the device even if it may be
ephemeral.

This change makes it so messages which are not cached won't create
a topic for the device. If a topic does already exist it will be
published to but otherwise the change will only be published to
the device state all topic.

ASTERISK-27591

Change-Id: I18da0e8cbb18e79602e731020c46ba4101e59f0a
2018-07-25 19:20:35 +00:00
George Joseph 487951735e Merge "sched: Make ABI compatible between dev mode and non-dev mode." into 13 2018-07-23 13:32:10 -05:00
Joshua Colp 1fbe1b1eff sched: Make ABI compatible between dev mode and non-dev mode.
In the past there was an assertion in the ast_sched_del function
and in order to ensure it was useful the calling function name,
line number, and filename had to be passed in. This cause the ABI
to be different between dev mode and non-dev mode.

This assertion is no longer present so the special logic can be
removed to make it the same between them both.

Change-Id: Icbc69c801e357d7004efc5cf2ab936d9b83b6ab8
2018-07-22 15:41:03 +00:00
George Joseph 58c7b64ed6 xmldoc.c: Fix dump of xml document
The "xmldoc dump" cli command was simply concatenating xml documents
into the output file.  The resulting file had multiple "xml"
processing instructions and multiple root elements which is illegal.
Normally this isn't an issue because Asterisk has only 1 main xml
documentation file but codec_opus has its own file so if it's
downloaded and you do "xmldoc dump", the result is invalid.

* Added 2 new functions to xml.c:
    ast_xml_copy_node_list creates a copy of a list of children.
    ast_xml_add_child_list adds a list to an existing list.

* Modified handle_dump_docs to create a new output document and
  add to it the children from each input file.  It then dumps the
  new document to the output file.

Change-Id: I3f182d38c75776aee76413dadd2d489d54a85c07
2018-07-20 05:20:25 -06:00
Chris-Savinovich ae5ba776ae stasis: Improve message type "Use of before/init after destruction"
Fixes issue where error msg
"Use of before/init after destruction"
was being printed on disabled messages
in dev mode.  With this
fix if message is disabled
a warning will print.

ASTERISK-25548
Change-Id: Ie0d866d1cbc60c16dbef08bc65e99505c3c1adfa
2018-07-18 13:11:42 -05:00
Nick French 6a0847cfc6 SRTP: Lower SDES key lifetime minimum to 2^20
SRTP SDES key lifetime support was added in ASTERISK_17899.

In that addition, the minimum key lifetime to be accepted was
set at the 10 hours @ 20ms/packet = 1800000 packets.

The firmware in the obi1xx ATA uses a hardcoded lifetime of
2^20 packets.

Lower the limit to 2^20 to support a wider field of clients.

ASTERISK-27967 #close

Change-Id: I81a0703c595a0c9101dfdf02300149a3cc39bf94
2018-07-17 14:45:56 -05:00
George Joseph 7666b80378 test.c: Make output jUnit compatible
Separate "name" into "classname" and "name".
Use '.' for classname separator instead of '/'.
Prefix reserved words with '_'.
Wrap output with a top-level "testsuites" element.

Change-Id: Iec1a985eba1c478e5c1d65d5dfd95cb708442099
2018-07-06 11:53:09 -06:00
Jenkins2 567e306f8e Merge "main/cdr.c: Alleviate CDR deadlock" into 13 2018-07-02 06:40:22 -05:00
Matthew Fredrickson 33f4716d13 main/cdr.c: Alleviate CDR deadlock
There is a rare case (do to the infrequent timing involved) where
CDR submission threads in batch mode can deadlock with a currently
running CDR batch process.  This patch should remove the need for
holding the lock in the scheduler and should clean a few code
paths up that inconsistently submitted new work to the CDR batch
processor.

ASTERISK-27909

Change-Id: I6333e865db7c593c102c2fd948cecdb96481974d
Reported-by: Denis Lebedev
2018-06-29 09:46:17 -06:00
Richard Mudgett d0e4cbfc51 AMI SendText action: Fix to use correct thread to send the text.
The AMI action was directly sending the text to the channel driver.
However, this makes two threads attempt to handle media and runs afowl of
CHECK_BLOCKING.

* Queue a read action to make the channel's media handling thread actually
send the text message.  This changes the AMI actions success/fail response
to just mean the text was queued to be sent not that the text actually got
sent.  The channel driver may not even support sending text messages.

ASTERISK-27943

Change-Id: I9dce343d8fa634ba5a416a1326d8a6340f98c379
2018-06-28 13:15:46 -05:00
Jenkins2 a5754e7904 Merge "res_pjsip_messaging: Allow application/* for in-dialog MESSAGEs" into 13 2018-06-28 06:02:37 -05:00
George Joseph 6087c1e575 res_pjsip_messaging: Allow application/* for in-dialog MESSAGEs
In addition to text/* content types, incoming_in_dialog_request now
accepts application/* content types.

Also fixed a length issue when copying the body text.  It was one
character short.

ASTERISK-27942

Change-Id: I4e54d8cc6158dc47eb8fdd6ba0108c6fd53f2818
2018-06-27 06:46:27 -06:00
Alexander Traud 5e9230b528 uuid: Enable UUID in Solaris 11.
ASTERISK-27933
Reported by: bautsche

Change-Id: I9b8362824efbfb2a16981e46e85f7c8322908c49
2018-06-23 00:27:06 -06:00
Joshua Colp dca83e2aa2 Merge "utils: Avoid an unused variable in Solaris 11." into 13 2018-06-22 07:21:56 -05:00
George Joseph 498e775a4a Merge changes from topic 'ASTERISK-27625' into 13
* changes:
  channel.c: Make CHECK_BLOCKING() save thread LWP id for messages.
  channel.c: Fix usage of CHECK_BLOCKING()
  autoservice: Don't start channel autoservice if the thread is a user interface.
2018-06-21 10:26:42 -05:00
George Joseph aedbf5ba58 Merge "ARI POST DTMF: Make not compete with channel's media thread." into 13 2018-06-21 10:26:08 -05:00
George Joseph 4228dc7b4f Merge "AMI PlayDTMF Action: Make not compete with channel's media thread." into 13 2018-06-21 10:22:45 -05:00
Alexander Traud a0445c7a3e utils: Avoid an unused variable in Solaris 11.
With ./configure --enable-dev-mode[=noisy], the build fails because every
warning gets an error. Therefore, Asterisk has to be free of warnings and this
variable must go.

Change-Id: I63dd2bc4833b9bdb04602f83422d16caf289d46a
2018-06-21 04:16:23 -06:00
Kevin Harwell e7ffbbd40e Merge "Fix some doxygen and curly placement." into 13 2018-06-20 17:15:35 -05:00
Jenkins2 8cc080a95c Merge "Dialplan functions: Fix some channel autoservice misuse." into 13 2018-06-20 16:36:58 -05:00
Richard Mudgett f878de44af channel.c: Make CHECK_BLOCKING() save thread LWP id for messages.
* Removed an unnecessary call to ast_channel_blocker_set() in
__ast_read().

ASTERISK-27625

Change-Id: I342168b999984666fb869cd519fe779583a73834
2018-06-19 14:13:07 -05:00
Richard Mudgett 99f439dc01 ARI POST DTMF: Make not compete with channel's media thread.
There can be one and only one thread handling a channel's media at a time.
Otherwise, we don't know which thread is going to handle the media frames.

ASTERISK-27625

Change-Id: I4d6a2fe7386ea447ee199003bf8ad681cb30454e
2018-06-19 14:13:07 -05:00
Richard Mudgett 6a1626c265 AMI PlayDTMF Action: Make not compete with channel's media thread.
There can be one and only one thread handling a channel's media at a time.
Otherwise, we don't know which thread is going to handle the media frames.

ASTERISK-27625

Change-Id: Ia341f1a6f4d54f2022261abec9021fe5b2eb4905
2018-06-19 14:13:07 -05:00
Richard Mudgett 1abcc41fff channel.c: Fix usage of CHECK_BLOCKING()
The CHECK_BLOCKING() macro is used to indicate if a channel's handling
thread is about to do a blocking operation (poll, read, or write) of
media.  A few operations such as ast_queue_frame(), soft hangup, and
masquerades use the indication to wake up the blocked thread to reevaluate
what is going on.

ASTERISK-27625

Change-Id: I4dfc33e01e60627d962efa29d0a4244cf151a84d
2018-06-19 14:13:07 -05:00
Richard Mudgett 5d34ca5b33 autoservice: Don't start channel autoservice if the thread is a user interface.
Executing dialplan functions from either AMI or ARI by getting a variable
could place the channel into autoservice.  However, these user interface
threads do not handle the channel's media so we wind up with two threads
attempting to handle the media.

There can be one and only one thread handling a channel's media at a time.
Otherwise, we don't know which thread is going to handle the media frames.

ASTERISK-27625

Change-Id: If2dc94ce15ddabf923ed1e2a65ea0ef56e013e49
2018-06-19 14:13:07 -05:00
Richard Mudgett a6edbc9be1 Dialplan functions: Fix some channel autoservice misuse.
* Fix off nominal paths leaving the channel in autoservice.
* Remove unnecessary start/stop channel autoservice.
* Fix channel locking around a channel datastore search.

Change-Id: I7ff2e42388064fe3149034ecae57604040b8b540
2018-06-19 11:49:24 -05:00
Richard Mudgett 7b30158147 Fix some doxygen and curly placement.
Change-Id: I9a784a7c804120a8fa826c2a4cb9957e4b0b2fc8
2018-06-19 11:46:45 -05:00
Richard Mudgett f94a310ca0 channel: Fix some more unprotected channel flag setting.
Change-Id: I34c3b1201b1de539945bcfdcb264fff30332d48c
2018-06-18 10:54:03 -05:00
Joshua Colp b5a186d723 Merge "bridge_channel.c: Fix Deadlock when using Local channels and fax gateway" into 13 2018-06-06 05:46:28 -05:00
George Joseph 8dbd3d2b05 Merge "tcptls: Allow OpenSSL configured with no-dh." into 13 2018-06-05 14:22:35 -05:00
George Joseph a938f49bc5 Merge "tcptls.h: Repair ./configure --with-ssl=PATH." into 13 2018-06-05 14:20:38 -05:00
George Joseph 93a85150e1 Merge "tcptls: Allow OpenSSL 1.1.x configured with enable-ssl3-method no-deprecated." into 13 2018-06-05 13:01:08 -05:00
George Joseph db2413b446 app_sendtext: Allow content types other than text/plain
There was no real reason to limit the conteny type to text/plain other
than that's what it was limited to before.  Now any text/* content
type will be allowed for channel drivers that don't support enhanced
messaging and any type will be allowed for channel drivers that do
support enhanced messaging.

Change-Id: I94a90cfee98b4bc8e22aa5c0b6afb7b862f979d9
2018-06-04 13:19:52 -06:00
Pirmin Walthert 8b67e2bd14 bridge_channel.c: Fix Deadlock when using Local channels and fax gateway
ast_indicate is invoked with the bridge locked. As ast_indicate locks the
other end of the bridge as well this can lead to a deadlock in some situations.
(Especially when a different thread does the same in the reverse order).
This patch calls ast_indicate after unlocking the bridge which fixes the
deadlock. Calling ast_indicate with these parameters without locking the
bridge should be safe as this is done at different places without a
bridge lock.

ASTERISK-27094 #close
Reported-by: David Brillert

Change-Id: I5f86c1e2ce75b9929a36ab589b18c450e62ea35f
2018-06-01 14:24:59 -06:00
Joshua Colp 369e611ac0 Merge "libasteriskssl: Allow OpenSSL 1.0.2 configured with no-deprecated." into 13 2018-05-29 12:07:39 -05:00
Alexander Traud 8c78337479 tcptls.h: Repair ./configure --with-ssl=PATH.
asterisk/tcptls.h was included (explicitly, implicitly, or transitively). Those
inclusions got replaced by forward declarations. As side effect, the inclusions
got completed.

ASTERISK-27878

Change-Id: I9d102728e30336d6522e5e4ae9e964013a0835f7
2018-05-28 17:32:15 +02:00
Alexander Traud 6833c763c7 tcptls: Allow OpenSSL configured with no-dh.
Additionally, this change allows auto-negotiation of the elliptic curve/group
for servers, not only with OpenSSL 1.0.2 but also with OpenSSL 1.1.0 and newer.
This enables X25519 (since OpenSSL 1.1.0) and X448 (since OpenSSL 1.1.1) as a
side-effect.

ASTERISK-27876

Change-Id: I62c2aba4a630aefc231b71f646207e8c027d9497
2018-05-25 08:56:46 -06:00
Alexander Traud 204cc25a27 tcptls: Allow OpenSSL 1.1.x configured with enable-ssl3-method no-deprecated.
ASTERISK-27874

Change-Id: Ica65113511c7a1c13f7988e7d9e7d9e7f3f620dd
2018-05-25 14:24:51 +02:00
Joshua Colp bb33dafa8f Merge "tcptls: Repair ./configure --with-ssl=PATH." into 13 2018-05-24 06:07:18 -05:00