asterisk/res
George Joseph 86f1bce186 res_pjsip_session: Handle multi-stream re-invites better
When both Asterisk and a UA send re-invites at the same time, both
send 491 "Transaction in progress" responses to each other and back
off a specified amount of time before retrying. When Asterisk
prepares to send its re-invite, it sets up the session's pending
media state with the new topology it wants, then sends the
re-invite.  Unfortunately, when it received the re-invite from the
UA, it partially processed the media in the re-invite and reset
the pending media state before sending the 491 losing the state it
set in its own re-invite.

Asterisk also was not tracking re-invites received while an existing
re-invite was queued resulting in sending stale SDP with missing
or duplicated streams, or no re-invite at all because we erroneously
determined that a re-invite wasn't needed.

There was also an issue in bridge_softmix where we were using a stream
from the wrong topology to determine if a stream was added.  This also
caused us to erroneously determine that a re-invite wasn't needed.

Regardless of how the delayed re-invite was triggered, we need to
reconcile the topology that was active at the time the delayed
request was queued, the pending topology of the queued request,
and the topology currently active on the session.  To do this we
need a topology resolver AND we need to make stream named unique
so we can accurately tell what a stream has been added or removed
and if we can re-use a slot in the topology.

Summary of changes:

 * bridge_softmix:
   * We no longer reset the stream name to "removed" in
     remove_all_original_streams().  That was causing  multiple streams
     to have the same name and wrecked the checks for duplicate streams.

   * softmix_bridge_stream_sources_update() was checking the old_stream
     to see if it had the softmix prefix and not considering the stream
     as "new" if it did.  If the stream in that slot has something in it
     because another re-invite happened, then that slot in old might
     have a softmix stream but the same stream in new might actually
     be a new one.  Now we check the new_stream's name instead of
     the old_stream's.

 * stream:
   * Instead of using plain media type name ("audio", "video", etc) as
     the default stream name, we now append the stream position to it
     to make it unique.  We need to do this so we can distinguish multiple
     streams of the same type from each other.

   * When we set a stream's state to REMOVED, we no longer reset its
     name to "removed" or destroy its metadata.  Again, we need to
     do this so we can distinguish multiple streams of the same
     type from each other.

 * res_pjsip_session:
   * Added resolve_refresh_media_states() that takes in 3 media states
     and creates an up-to-date pending media state that includes the changes
     that might have happened while a delayed session refresh was in the
     delayed queue.

   * Added is_media_state_valid() that checks the consistency of
     a media state and returns a true/false value. A valid state has:
     * The same number of stream entries as media session entries.
         Some media session entries can be NULL however.
     * No duplicate streams.
     * A valid stream for each non-NULL media session.
     * A stream that matches each media session's stream_num
       and media type.

   * Updated handle_incoming_sdp() to set the stream name to include the
     stream position number in the name to make it unique.

   * Updated the ast_sip_session_delayed_request structure to include both
     the pending and active media states and updated the associated delay
     functions to process them.

   * Updated sip_session_refresh() to accept both the pending and active
     media states that were in effect when the request was originally queued
     and to pass them on should the request need to be delayed again.

   * Updated sip_session_refresh() to call resolve_refresh_media_states()
     and substitute its results for the pending state passed in.

   * Updated sip_session_refresh() with additional debugging.

   * Updated session_reinvite_on_rx_request() to simply return PJ_FALSE
     to pjproject if a transaction is in progress.  This stops us from
     creating a partial pending media state that would be invalid later on.

   * Updated reschedule_reinvite() to clone both the current pending and
     active media states and pass them to delay_request() so the resolver
     can tell what the original intention of the re-invite was.

   * Added a large unit test for the resolver.

ASTERISK-29014

Change-Id: Id3440972943c611a15f652c6c569fa0e4536bfcb
2020-09-14 09:27:14 -05:00
..
ael Merge "res_ael: Use Gosub in for loop expressions" 2019-04-16 08:11:28 -05:00
ari res_stasis.c: Added video_single option for bridge creation 2020-09-10 09:53:27 -05:00
parking parking: Copy parker UUID as well. 2020-08-31 12:59:39 -05:00
prometheus res_prometheus: Add metrics for PJSIP outbound registrations 2019-05-22 08:25:19 -05:00
res_pjsip res_pjsip: Fix codec preference defaults. 2020-08-11 05:44:07 -05:00
res_pjsip_session stream: Enforce formats immutability and ensure formats exist. 2020-04-23 09:16:51 -05:00
res_stir_shaken res_stir_shaken: Fix memory allocation error in curl.c 2020-08-04 09:43:31 -05:00
snmp Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
srtp res_srtp: Add support for libsrtp2 with AES-GCM. 2017-10-18 03:34:56 -05:00
stasis res_stasis.c: Added video_single option for bridge creation 2020-09-10 09:53:27 -05:00
stasis_recording core: Remove ABI effects of MALLOC_DEBUG. 2018-03-01 13:13:55 -06:00
ari.make Build System: Create Makefile macro MOD_ADD_SOURCE. 2015-04-14 12:53:03 -04:00
Makefile res_stir_shaken: Initial commit and reading private key. 2020-03-25 18:04:22 -05:00
res.xml Create --disable-binary-modules option. 2018-08-27 13:22:31 -04:00
res_adsi.c module: Remove deprecated modules and update support levels. 2018-07-18 18:15:53 +00:00
res_ael_share.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_ael_share.exports.in
res_agi.c res_agi: Improve GET FULL VARIABLE documentation 2020-01-03 10:29:02 -06:00
res_agi.exports.in
res_ari.c res_ari.c: Prefer exact handler match over wildcard 2019-08-20 13:19:42 -05:00
res_ari.exports.in Rename everything Stasis-HTTP to ARI 2013-07-27 23:11:02 +00:00
res_ari_applications.c ARI event type filtering 2019-02-20 09:56:22 -06:00
res_ari_asterisk.c Added ARI resource /ari/asterisk/ping 2019-01-30 12:51:03 +00:00
res_ari_bridges.c ARI: Ability to inhibit COLP frames when adding channels to a bridge 2020-01-02 15:06:15 +00:00
res_ari_channels.c ari: Allow variables to be set on channel create. 2020-05-15 06:41:45 -05:00
res_ari_device_states.c Merge "Remove redundant module checks and references." 2018-01-29 12:39:34 -06:00
res_ari_endpoints.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_ari_events.c res_ari_events: Add module reference when a WebSocket is open. 2019-10-24 05:26:57 -05:00
res_ari_mailboxes.c Merge "Remove redundant module checks and references." 2018-01-29 12:39:34 -06:00
res_ari_model.c modules: change module LOAD_FAILUREs to LOAD_DECLINES 2017-04-12 15:57:21 -06:00
res_ari_model.exports.in Rename everything Stasis-HTTP to ARI 2013-07-27 23:11:02 +00:00
res_ari_playbacks.c Merge "Remove redundant module checks and references." 2018-01-29 12:39:34 -06:00
res_ari_recordings.c Merge "Remove redundant module checks and references." 2018-01-29 12:39:34 -06:00
res_ari_sounds.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_audiosocket.c res_audiosocket: Avoid Sometimes-uninitialized Warning with Clang. 2020-04-14 09:47:22 -05:00
res_audiosocket.exports.in feat: AudioSocket channel, application, and ARI support. 2020-01-14 09:36:44 -06:00
res_calendar.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_calendar.exports.in
res_calendar_caldav.c res_calendar: Specialized calendars depend on symbols of general calendar. 2018-02-16 13:52:37 +01:00
res_calendar_ews.c res_calendar: Resolve memory leak on calendar destruction 2019-10-24 09:18:38 -05:00
res_calendar_exchange.c res_calendar: Resolve memory leak on calendar destruction 2019-10-24 09:18:38 -05:00
res_calendar_icalendar.c res_calendar: Resolve memory leak on calendar destruction 2019-10-24 09:18:38 -05:00
res_chan_stats.c stasis: Segment channel snapshot to reduce creation cost. 2018-11-26 12:56:24 -06:00
res_clialiases.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_clioriginate.c manager: Restore Originate failure behavior from Asterisk 11 2017-02-10 18:04:41 -05:00
res_config_curl.c curl: Add build-time dependency. 2020-04-20 09:55:45 -05:00
res_config_ldap.c Fix 'statement' typo throughout code. 2018-10-18 12:44:10 -05:00
res_config_odbc.c Revert "res_config_odbc: Preserve empty strings returned by the database" 2020-04-07 18:11:55 -05:00
res_config_pgsql.c cdr_pgsql cel_pgsql res_config_pgsql: compatibility with PostgreSQL 12 2019-10-14 05:08:02 -05:00
res_config_sqlite.c loader: Convert reload_classes to built-in modules. 2018-03-14 05:20:12 -04:00
res_config_sqlite3.c res_config_sqlite3: Only join threads that we started 2019-07-24 04:51:43 -06:00
res_convert.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_corosync.c res_corosync: Fix crash in huge distributed environment. 2020-06-22 12:57:26 -05:00
res_crypto.c res_crypto: Allow OpenSSL configured with no-deprecated. 2018-06-08 11:03:35 +02:00
res_crypto.exports.in
res_curl.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_endpoint_stats.c loader: Add dependency fields to module structures. 2018-01-15 13:25:51 -05:00
res_fax.c res_fax: Don't start a gateway if either channel is hung up 2020-06-10 13:59:06 -05:00
res_fax.exports.in res_fax: Provide AMI equivalents for fax CLI commands 2014-07-18 15:49:46 +00:00
res_fax_spandsp.c loader: Add dependency fields to module structures. 2018-01-15 13:25:51 -05:00
res_format_attr_celt.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_format_attr_g729.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_format_attr_h263.c Loader: Remove unneeded load_pri declarations. 2017-11-20 13:17:55 -06:00
res_format_attr_h264.c res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set 2018-12-13 17:03:59 -05:00
res_format_attr_ilbc.c codecs: Add iLBC 20. 2016-07-22 10:09:08 +02:00
res_format_attr_opus.c Fix Common Typo's. 2017-12-20 12:40:01 -05:00
res_format_attr_silk.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_format_attr_siren7.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_format_attr_siren14.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_format_attr_vp8.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_hep.c netsock2: Add ast_sockaddr_resolve_first_af to netsock2 public API 2018-05-21 11:03:10 -05:00
res_hep.exports.in res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded 2016-06-08 12:32:02 -05:00
res_hep_pjsip.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_hep_rtcp.c stasis: Add internal filtering of messages. 2018-11-18 15:08:16 -05:00
res_http_media_cache.c Add the ability to read the media file type from HTTP header for playback 2018-04-30 16:30:44 -04:00
res_http_post.c res_http_post: Enable GMime in Solaris 11. 2018-06-21 10:18:36 -06:00
res_http_websocket.c websocket / pjsip: Increase maximum packet size. 2020-07-23 09:26:32 -03:00
res_http_websocket.exports.in res_http_websocket: Export symbol for ast_websocket_set_timeout 2014-06-26 18:27:53 +00:00
res_limit.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_manager_devicestate.c AST_MODULE_INFO: Format corrections to the usages of AST_MODULE_INFO macro. 2015-05-13 16:34:23 -05:00
res_manager_presencestate.c AST_MODULE_INFO: Format corrections to the usages of AST_MODULE_INFO macro. 2015-05-13 16:34:23 -05:00
res_monitor.c Complete deprecating legacy modules. 2018-03-08 13:53:09 -06:00
res_monitor.exports.in
res_musiconhold.c res_musiconhold.c: Use ast_file_read_dir to scan MoH directory 2020-08-25 09:34:49 -05:00
res_mutestream.c Remove ASTERISK_REGISTER_FILE. 2016-10-27 09:53:55 -04:00
res_mwi_devstate.c mwi core: Move core MWI functionality into its own files 2019-04-23 17:40:15 -05:00
res_mwi_external.c mwi core: Move core MWI functionality into its own files 2019-04-23 17:40:15 -05:00
res_mwi_external.exports.in External MWI core support. 2014-01-06 17:45:25 +00:00
res_mwi_external_ami.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_odbc.c res_odbc: Add basic query logging. 2019-02-07 08:23:14 -06:00
res_odbc.exports.in res_odbc: Fix exports.in for missing symbols 2016-02-16 16:42:26 -06:00
res_odbc_transaction.c res_odbc_transaction: add dep on generic_odbc 2016-08-21 18:56:01 -05:00
res_odbc_transaction.exports.in res_odbc: Remove connection management 2016-01-22 11:59:06 -06:00
res_parking.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_phoneprov.c various files - fix some alerts raised by lgtm code analysis 2019-11-18 08:30:45 -06:00
res_phoneprov.exports.in res_phoneprov: Refactor phoneprov to allow pluggable config providers 2014-10-09 17:46:23 +00:00
res_pjproject.c res_pjproject: Fix sockaddr conversion routines for non-bundled PJSIP 2018-09-12 07:26:33 -05:00
res_pjproject.exports.in res_pjproject: Add utility functions to convert between socket structures 2018-09-06 13:30:12 -05:00
res_pjsip.c ACN: Configuration renaming for pjsip endpoint 2020-08-06 10:50:16 -05:00
res_pjsip.exports.in res_pjsip: Add REF_DEBUG info to module references. 2017-10-04 12:00:47 -04:00
res_pjsip_acl.c pjsip: Update ACLs on named ACL changes. 2020-02-20 04:52:11 -06:00
res_pjsip_authenticator_digest.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_caller_id.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_config_wizard.c res_pjsip_config_wizard: Fix change detection for wizard settings 2020-01-05 10:13:05 -06:00
res_pjsip_dialog_info_body_generator.c res_pjsip_pubsub: Add ability to persist generator state information. 2020-01-08 09:48:18 -06:00
res_pjsip_diversion.c res_pjsip_diversion: handle 181 2020-08-27 08:03:05 -05:00
res_pjsip_dlg_options.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_dtmf_info.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_empty_info.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_endpoint_identifier_anonymous.c endpoint identifiers: Some code cleanup. 2018-02-02 18:03:06 -06:00
res_pjsip_endpoint_identifier_ip.c res_pjsip_endpoint_identifier_ip: Document support for hostnames 2020-01-10 15:15:59 -06:00
res_pjsip_endpoint_identifier_user.c endpoint identifiers: Some code cleanup. 2018-02-02 18:03:06 -06:00
res_pjsip_exten_state.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_pjsip_exten_state.exports.in The large GULP->PJSIP renaming effort. 2013-07-30 18:14:50 +00:00
res_pjsip_header_funcs.c res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations. 2018-04-12 17:34:16 -05:00
res_pjsip_history.c res_pjsip_history.c: Fix to stop SIGSEGV when IPv6 addresses are encountered. 2020-05-11 16:26:29 -05:00
res_pjsip_logger.c res_pjsip_logger: use the correct pointer when logging tx_messages to pcap 2020-06-05 09:15:34 -05:00
res_pjsip_messaging.c res_pjsip: Include <pjsip_ua.h> instead of internal "pjsua-lib/pjsua.h" 2020-06-17 09:33:10 -05:00
res_pjsip_mwi.c res_pjsip_mwi: potential double unref, and potential unwanted double link 2019-10-10 15:30:24 -05:00
res_pjsip_mwi_body_generator.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_nat.c res_pjsip_nat.c: remove x-ast-orig-host from request URI and To header 2020-05-22 07:47:33 -05:00
res_pjsip_notify.c res_pjsip_notify: Only allow a single Event header to be added to a NOTIFY 2020-01-10 14:49:54 -06:00
res_pjsip_one_touch_record_info.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_outbound_authenticator_digest.c res_pjsip: Implement additional SIP RFCs for Google Voice trunk compatability 2018-10-24 07:51:25 -05:00
res_pjsip_outbound_publish.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_pjsip_outbound_publish.exports.in res_pjsip_outbound_publish: Add module which provides outbound PUBLISH support. 2014-08-07 14:35:09 +00:00
res_pjsip_outbound_registration.c res_pjsip_outbound_registration: Fix SRV failover on timeout 2020-02-18 13:09:49 -06:00
res_pjsip_path.c res_pjsip: Add build-time dependency. 2020-04-20 09:12:40 -05:00
res_pjsip_phoneprov_provider.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_pidf_body_generator.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_pidf_digium_body_supplement.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_pidf_eyebeam_body_supplement.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_publish_asterisk.c mwi core: Move core MWI functionality into its own files 2019-04-23 17:40:15 -05:00
res_pjsip_pubsub.c websocket / pjsip: Increase maximum packet size. 2020-07-23 09:26:32 -03:00
res_pjsip_pubsub.exports.in res_pjsip_mwi: Add voicemail extension and mwi_subscribe_replaces_unsolicited 2016-03-30 13:23:54 -05:00
res_pjsip_refer.c res_pjsip_refer: Add build-time dependency. 2020-04-20 11:04:09 -05:00
res_pjsip_registrar.c res_pjsip_registrar: Don't specify an expiration for static contacts. 2020-07-28 09:48:19 -05:00
res_pjsip_rfc3326.c res_pjsip: Sync load- and build-time deps. 2020-04-20 11:03:26 -05:00
res_pjsip_sdp_rtp.c ACN: Add tracing to existing code 2020-07-08 09:24:42 -05:00
res_pjsip_send_to_voicemail.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_session.c res_pjsip_session: Handle multi-stream re-invites better 2020-09-14 09:27:14 -05:00
res_pjsip_session.exports.in test_res_pjsip_session_caps: Create unit test 2020-04-06 08:02:53 -05:00
res_pjsip_sips_contact.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pjsip_stir_shaken.c res_stir_shaken: Add stir_shaken option and general improvements. 2020-07-10 09:57:09 -05:00
res_pjsip_t38.c res_pjsip_t38: T.38 error correction mode selection at 200 ok received 2019-11-21 16:10:46 -05:00
res_pjsip_transport_websocket.c websocket: Consider pending SSL data when waiting for socket input 2020-01-02 15:51:37 -06:00
res_pjsip_xpidf_body_generator.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pktccops.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_pktccops.exports.in
res_prometheus.c res_prometheus: Add metrics for PJSIP outbound registrations 2019-05-22 08:25:19 -05:00
res_prometheus.exports.in Add core Prometheus support to Asterisk 2019-05-20 20:33:58 -05:00
res_realtime.c res_realtime: Fix 'realtime update2' argument handling 2020-01-14 10:07:20 -06:00
res_remb_modifier.c res_remb_modifier: Propertly initialize bitrate to 0.0 2019-04-18 08:04:11 -06:00
res_resolver_unbound.c various files - fix some alerts raised by lgtm code analysis 2019-11-18 08:30:45 -06:00
res_rtp_asterisk.c res_rtp_asterisk: Don't assume setting retrans props means to enable. 2020-06-11 18:04:24 -05:00
res_rtp_multicast.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_rtp_multicast.exports.in multicast RTP: Add dialing options 2016-05-27 11:00:09 -05:00
res_security_log.c stasis: Add internal filtering of messages. 2018-11-18 15:08:16 -05:00
res_smdi.c mwi core: Move core MWI functionality into its own files 2019-04-23 17:40:15 -05:00
res_smdi.exports.in
res_snmp.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_sorcery_astdb.c astdb: Improve prefix searches in astdb 2017-12-10 12:51:16 -06:00
res_sorcery_config.c res_sorcery_config: Always reload configuration on errors. 2020-05-20 10:50:09 -05:00
res_sorcery_memory.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_sorcery_memory_cache.c res_sorcery_memory_cache: Disallow per-object expire with full backend. 2020-06-18 18:32:23 -05:00
res_sorcery_realtime.c res_sorcery_realtime.c: Fix unqualified fetch warning. 2018-08-17 16:33:24 -05:00
res_speech.c res_speech: Bump reference on format object 2020-08-27 13:52:20 -05:00
res_speech.exports.in app_speech_utils: Fix unresolved symbol ast_speech_get_setting(). 2013-09-16 18:00:32 +00:00
res_srtp.c res_srtp: Set all possible flags while selecting the Crypto Suite. 2020-05-20 10:46:07 -05:00
res_srtp.exports.in Reverting accidental ci of wrong change in r433061 2015-03-17 22:03:01 +00:00
res_stasis.c res_stasis.c: Added video_single option for bridge creation 2020-09-10 09:53:27 -05:00
res_stasis.exports.in Moved core logic from app_stasis to res_stasis 2013-04-15 16:43:47 +00:00
res_stasis_answer.c loader: Add dependency fields to module structures. 2018-01-15 13:25:51 -05:00
res_stasis_answer.exports.in Add missing exports file 2013-05-20 14:21:39 +00:00
res_stasis_device_state.c astobj2: Remove legacy ao2_container_alloc routine. 2018-11-21 09:56:16 -05:00
res_stasis_device_state.exports.in ARI: Implement device state API 2013-11-23 17:48:28 +00:00
res_stasis_mailbox.c Remove redundant module checks and references. 2018-01-24 13:37:29 -05:00
res_stasis_mailbox.exports.in ARI: Add mailboxes resource for controlling and polling external MWI 2014-01-14 23:44:57 +00:00
res_stasis_playback.c res_stasis_playback: Prevent media_index from going out of bounds 2020-01-29 07:15:49 -06:00
res_stasis_playback.exports.in This patch implements the REST API's for POST /channels/{channelId}/play 2013-05-23 20:11:35 +00:00
res_stasis_recording.c res/res_ari: Added timestamp as a requirement for all ARI events 2019-03-11 23:57:01 +01:00
res_stasis_recording.exports.in ARI - channel recording support 2013-07-03 17:58:45 +00:00
res_stasis_snoop.c loader: Add dependency fields to module structures. 2018-01-15 13:25:51 -05:00
res_stasis_snoop.exports.in ari: Add Snoop operation for spying/whispering on channels. 2013-11-23 12:40:46 +00:00
res_stasis_test.c optional_api: Remove unused nonoptreq fields 2018-09-12 12:34:54 -05:00
res_stasis_test.exports.in Initial support for endpoints. 2013-05-08 13:39:08 +00:00
res_statsd.c res_statsd: Document that res_statsd does nothing on its own 2020-01-21 07:47:18 -06:00
res_statsd.exports.in res_statsd: Fix exports.in for missing symbols 2016-02-16 12:26:29 -06:00
res_stir_shaken.c res_stir_shaken: Add stir_shaken option and general improvements. 2020-07-10 09:57:09 -05:00
res_stir_shaken.exports.in res_stir_shaken: Add inbound INVITE support. 2020-06-08 10:50:16 -05:00
res_stun_monitor.c res_stun_monitor: Don't fail to load if DNS resolution fails 2017-04-14 16:55:03 -05:00
res_timing_dahdi.c Remove as much trailing whitespace as possible. 2017-12-22 09:23:22 -05:00
res_timing_kqueue.c res_timing: Don't close FD 0 when out of open files. 2015-07-02 05:13:37 -05:00
res_timing_pthread.c Use non-blocking socket() and pipe() wrappers 2018-12-11 12:29:09 -05:00
res_timing_timerfd.c res_timing: Don't close FD 0 when out of open files. 2015-07-02 05:13:37 -05:00
res_xmpp.c mwi core: Move core MWI functionality into its own files 2019-04-23 17:40:15 -05:00
res_xmpp.exports.in Add a new unified Jingle, Google Jingle, and Google Talk channel driver written from scratch called chan_motif. 2012-07-07 17:06:51 +00:00