History log of /webrtc/data/ (Results 1 – 25 of 33)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
e215e90801-Mar-2023 koushiro <[email protected]>

update rust-version: 1.60.0 ==> 1.63.0

9d33ef6027-Feb-2023 Thomas Eizinger <[email protected]>

Add missing version to changelog

3b73498327-Feb-2023 yngrtc <[email protected]>

bump data version to v0.7.0

ff4acda927-Feb-2023 Thomas Eizinger <[email protected]>

Extend changelog entry

84b8594c27-Feb-2023 Thomas Eizinger <[email protected]>

Remove `derive_builder` dependency

ada0a12425-Feb-2023 yngrtc <[email protected]>

bump data/webrtc version to v0.6.1/v0.6.2, respectively due to sctp version upgrade

5d8fe95302-Feb-2023 João Oliveira <[email protected]>

general: apply clippy lints (#407)

* general: update crates to 2021 edition.

* general: apply clippy --fix

* general: apply manual clippy lints

* cargo fmt.


/webrtc/README.md
/webrtc/constraints/Cargo.toml
/webrtc/constraints/src/algorithms/fitness_distance/setting.rs
/webrtc/constraints/src/constraint/value.rs
/webrtc/constraints/src/constraint/value_range.rs
/webrtc/constraints/src/constraint/value_sequence.rs
/webrtc/constraints/src/errors.rs
/webrtc/constraints/src/setting.rs
Cargo.toml
/webrtc/dtls/Cargo.toml
/webrtc/dtls/examples/certificates/README.md
/webrtc/dtls/examples/dial/psk/dial_psk.rs
/webrtc/dtls/examples/dial/selfsign/dial_selfsign.rs
/webrtc/dtls/examples/dial/verify/dial_verify.rs
/webrtc/dtls/examples/hub/Cargo.toml
/webrtc/dtls/examples/hub/src/lib.rs
/webrtc/dtls/examples/hub/src/utilities.rs
/webrtc/dtls/examples/listen/psk/listen_psk.rs
/webrtc/dtls/examples/listen/selfsign/listen_selfsign.rs
/webrtc/dtls/examples/listen/verify/listen_verify.rs
/webrtc/dtls/src/alert/alert_test.rs
/webrtc/dtls/src/change_cipher_spec/change_cipher_spec_test.rs
/webrtc/dtls/src/conn/conn_test.rs
/webrtc/dtls/src/conn/mod.rs
/webrtc/dtls/src/crypto/crypto_test.rs
/webrtc/dtls/src/crypto/mod.rs
/webrtc/dtls/src/extension/extension_server_name/extension_server_name_test.rs
/webrtc/dtls/src/extension/extension_supported_elliptic_curves/extension_supported_elliptic_curves_test.rs
/webrtc/dtls/src/extension/extension_supported_point_formats/extension_supported_point_formats_test.rs
/webrtc/dtls/src/extension/extension_supported_signature_algorithms/extension_supported_signature_algorithms_test.rs
/webrtc/dtls/src/extension/extension_use_extended_master_secret/extension_use_extended_master_secret_test.rs
/webrtc/dtls/src/extension/extension_use_srtp/extension_use_srtp_test.rs
/webrtc/dtls/src/fragment_buffer/fragment_buffer_test.rs
/webrtc/dtls/src/handshake/handshake_cache/handshake_cache_test.rs
/webrtc/dtls/src/handshake/handshake_message_certificate/handshake_message_certificate_test.rs
/webrtc/dtls/src/handshake/handshake_message_certificate_request/handshake_message_certificate_request_test.rs
/webrtc/dtls/src/handshake/handshake_message_certificate_verify/handshake_message_certificate_verify_test.rs
/webrtc/dtls/src/handshake/handshake_message_client_hello.rs
/webrtc/dtls/src/handshake/handshake_message_client_hello/handshake_message_client_hello_test.rs
/webrtc/dtls/src/handshake/handshake_message_client_key_exchange/handshake_message_client_key_exchange_test.rs
/webrtc/dtls/src/handshake/handshake_message_finished/handshake_message_finished_test.rs
/webrtc/dtls/src/handshake/handshake_message_hello_verify_request/handshake_message_hello_verify_request_test.rs
/webrtc/dtls/src/handshake/handshake_message_server_hello/handshake_message_server_hello_test.rs
/webrtc/dtls/src/handshake/handshake_message_server_hello_done/handshake_message_server_hello_done_test.rs
/webrtc/dtls/src/handshake/handshake_message_server_key_exchange/handshake_message_server_key_exchange_test.rs
/webrtc/dtls/src/handshake/handshake_test.rs
/webrtc/dtls/src/prf/mod.rs
/webrtc/dtls/src/prf/prf_test.rs
/webrtc/dtls/src/record_layer/record_layer_test.rs
/webrtc/dtls/src/signature_hash_algorithm/signature_hash_algorithm_test.rs
/webrtc/examples/Cargo.toml
/webrtc/examples/examples/broadcast/README.md
/webrtc/examples/examples/broadcast/broadcast.rs
/webrtc/examples/examples/data-channels-close/data-channels-close.rs
/webrtc/examples/examples/data-channels-create/README.md
/webrtc/examples/examples/data-channels-create/data-channels-create.rs
/webrtc/examples/examples/data-channels-detach-create/README.md
/webrtc/examples/examples/data-channels-detach-create/data-channels-detach-create.rs
/webrtc/examples/examples/data-channels-detach/README.md
/webrtc/examples/examples/data-channels-detach/data-channels-detach.rs
/webrtc/examples/examples/data-channels-flow-control/README.md
/webrtc/examples/examples/data-channels/README.md
/webrtc/examples/examples/data-channels/data-channels.rs
/webrtc/examples/examples/ice-restart/README.md
/webrtc/examples/examples/ice-restart/ice-restart.rs
/webrtc/examples/examples/insertable-streams/README.md
/webrtc/examples/examples/insertable-streams/insertable-streams.rs
/webrtc/examples/examples/offer-answer/README.md
/webrtc/examples/examples/offer-answer/answer.rs
/webrtc/examples/examples/offer-answer/offer.rs
/webrtc/examples/examples/ortc/README.md
/webrtc/examples/examples/ortc/ortc.rs
/webrtc/examples/examples/play-from-disk-h264/README.md
/webrtc/examples/examples/play-from-disk-h264/play-from-disk-h264.rs
/webrtc/examples/examples/play-from-disk-renegotiation/README.md
/webrtc/examples/examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs
/webrtc/examples/examples/play-from-disk-vpx/README.md
/webrtc/examples/examples/play-from-disk-vpx/play-from-disk-vpx.rs
/webrtc/examples/examples/reflect/README.md
/webrtc/examples/examples/reflect/reflect.rs
/webrtc/examples/examples/rtp-forwarder/README.md
/webrtc/examples/examples/rtp-forwarder/rtp-forwarder.rs
/webrtc/examples/examples/rtp-to-webrtc/README.md
/webrtc/examples/examples/rtp-to-webrtc/rtp-to-webrtc.rs
/webrtc/examples/examples/save-to-disk-h264/README.md
/webrtc/examples/examples/save-to-disk-h264/save-to-disk-h264.rs
/webrtc/examples/examples/save-to-disk-vpx/README.md
/webrtc/examples/examples/save-to-disk-vpx/save-to-disk-vpx.rs
/webrtc/examples/examples/signal/Cargo.toml
/webrtc/examples/examples/signal/src/lib.rs
/webrtc/examples/examples/simulcast/README.md
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/examples/examples/swap-tracks/README.md
/webrtc/examples/examples/swap-tracks/swap-tracks.rs
/webrtc/ice/CHANGELOG.md
/webrtc/ice/Cargo.toml
/webrtc/ice/examples/ping_pong.rs
/webrtc/ice/src/agent/agent_gather_test.rs
/webrtc/ice/src/agent/agent_test.rs
/webrtc/ice/src/agent/agent_vnet_test.rs
/webrtc/ice/src/candidate/candidate_base.rs
/webrtc/ice/src/candidate/candidate_pair_test.rs
/webrtc/ice/src/candidate/candidate_test.rs
/webrtc/ice/src/candidate/mod.rs
/webrtc/ice/src/control/mod.rs
/webrtc/ice/src/mdns/mdns_test.rs
/webrtc/ice/src/mdns/mod.rs
/webrtc/ice/src/network_type/mod.rs
/webrtc/ice/src/network_type/network_type_test.rs
/webrtc/ice/src/rand/rand_test.rs
/webrtc/ice/src/state/mod.rs
/webrtc/ice/src/state/state_test.rs
/webrtc/ice/src/tcp_type/mod.rs
/webrtc/ice/src/udp_mux/udp_mux_test.rs
/webrtc/ice/src/url/mod.rs
/webrtc/ice/src/url/url_test.rs
/webrtc/interceptor/Cargo.toml
/webrtc/interceptor/src/nack/generator/generator_stream.rs
/webrtc/interceptor/src/nack/responder/responder_stream.rs
/webrtc/interceptor/src/nack/responder/responder_test.rs
/webrtc/mdns/Cargo.toml
/webrtc/mdns/examples/mdns_query.rs
/webrtc/mdns/examples/mdns_server_query.rs
/webrtc/mdns/src/message/header.rs
/webrtc/mdns/src/message/message_test.rs
/webrtc/mdns/src/message/mod.rs
/webrtc/media/Cargo.toml
/webrtc/media/src/io/h264_writer/h264_writer_test.rs
/webrtc/media/src/io/ivf_writer/ivf_writer_test.rs
/webrtc/media/src/io/sample_builder/sample_builder_test.rs
/webrtc/media/src/io/sample_builder/sample_sequence_location.rs
/webrtc/rtcp/Cargo.toml
/webrtc/rtcp/src/compound_packet/compound_packet_test.rs
/webrtc/rtcp/src/compound_packet/mod.rs
/webrtc/rtcp/src/extended_report/dlrr.rs
/webrtc/rtcp/src/extended_report/mod.rs
/webrtc/rtcp/src/extended_report/prt.rs
/webrtc/rtcp/src/extended_report/rle.rs
/webrtc/rtcp/src/extended_report/rrt.rs
/webrtc/rtcp/src/extended_report/ssr.rs
/webrtc/rtcp/src/extended_report/unknown.rs
/webrtc/rtcp/src/extended_report/vm.rs
/webrtc/rtcp/src/goodbye/goodbye_test.rs
/webrtc/rtcp/src/goodbye/mod.rs
/webrtc/rtcp/src/header.rs
/webrtc/rtcp/src/packet.rs
/webrtc/rtcp/src/payload_feedbacks/full_intra_request/full_intra_request_test.rs
/webrtc/rtcp/src/payload_feedbacks/full_intra_request/mod.rs
/webrtc/rtcp/src/payload_feedbacks/picture_loss_indication/picture_loss_indication_test.rs
/webrtc/rtcp/src/payload_feedbacks/slice_loss_indication/slice_loss_indication_test.rs
/webrtc/rtcp/src/raw_packet.rs
/webrtc/rtcp/src/receiver_report/mod.rs
/webrtc/rtcp/src/receiver_report/receiver_report_test.rs
/webrtc/rtcp/src/reception_report.rs
/webrtc/rtcp/src/sender_report/mod.rs
/webrtc/rtcp/src/sender_report/sender_report_test.rs
/webrtc/rtcp/src/source_description/mod.rs
/webrtc/rtcp/src/source_description/source_description_test.rs
/webrtc/rtcp/src/transport_feedbacks/rapid_resynchronization_request/rapid_resynchronization_request_test.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_cc/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_cc/transport_layer_cc_test.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_nack/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_nack/transport_layer_nack_test.rs
/webrtc/rtcp/src/util.rs
/webrtc/rtp/Cargo.toml
/webrtc/rtp/benches/packet_bench.rs
/webrtc/rtp/src/codecs/vp8/vp8_test.rs
/webrtc/rtp/src/codecs/vp9/vp9_test.rs
/webrtc/rtp/src/extension/abs_send_time_extension/abs_send_time_extension_test.rs
/webrtc/rtp/src/extension/video_orientation_extension/mod.rs
/webrtc/rtp/src/packet/mod.rs
/webrtc/rtp/src/packet/packet_test.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
/webrtc/sctp/examples/ping.rs
/webrtc/sctp/examples/pong.rs
/webrtc/sctp/examples/throughput.rs
/webrtc/sctp/fuzz/Cargo.toml
/webrtc/sctp/src/association/association_internal.rs
/webrtc/sctp/src/association/association_internal/association_internal_test.rs
/webrtc/sctp/src/association/association_test.rs
/webrtc/sctp/src/association/mod.rs
/webrtc/sctp/src/chunk/chunk_abort.rs
/webrtc/sctp/src/chunk/chunk_error.rs
/webrtc/sctp/src/chunk/chunk_init.rs
/webrtc/sctp/src/chunk/chunk_payload_data.rs
/webrtc/sctp/src/chunk/chunk_reconfig.rs
/webrtc/sctp/src/chunk/chunk_selective_ack.rs
/webrtc/sctp/src/chunk/chunk_test.rs
/webrtc/sctp/src/chunk/chunk_type.rs
/webrtc/sctp/src/error_cause.rs
/webrtc/sctp/src/packet.rs
/webrtc/sctp/src/param/param_reconfig_response.rs
/webrtc/sctp/src/param/param_requested_hmac_algorithm.rs
/webrtc/sctp/src/param/param_test.rs
/webrtc/sctp/src/param/param_type.rs
/webrtc/sctp/src/queue/payload_queue.rs
/webrtc/sctp/src/queue/queue_test.rs
/webrtc/sctp/src/queue/reassembly_queue.rs
/webrtc/sctp/src/stream/mod.rs
/webrtc/sctp/src/timer/timer_test.rs
/webrtc/sctp/src/util.rs
/webrtc/sdp/Cargo.toml
/webrtc/sdp/fuzz/Cargo.toml
/webrtc/sdp/src/description/description_test.rs
/webrtc/sdp/src/description/media.rs
/webrtc/sdp/src/description/session.rs
/webrtc/sdp/src/direction/mod.rs
/webrtc/sdp/src/extmap/extmap_test.rs
/webrtc/sdp/src/extmap/mod.rs
/webrtc/sdp/src/lexer/mod.rs
/webrtc/sdp/src/util/mod.rs
/webrtc/sdp/src/util/util_test.rs
/webrtc/srtp/Cargo.toml
/webrtc/srtp/src/context/context_test.rs
/webrtc/srtp/src/key_derivation.rs
/webrtc/srtp/src/session/session_rtcp_test.rs
/webrtc/srtp/src/session/session_rtp_test.rs
/webrtc/stun/CHANGELOG.md
/webrtc/stun/Cargo.toml
/webrtc/stun/examples/stun_client.rs
/webrtc/stun/examples/stun_decode.rs
/webrtc/stun/src/addr.rs
/webrtc/stun/src/addr/addr_test.rs
/webrtc/stun/src/attributes.rs
/webrtc/stun/src/attributes/attributes_test.rs
/webrtc/stun/src/integrity/integrity_test.rs
/webrtc/stun/src/message.rs
/webrtc/stun/src/message/message_test.rs
/webrtc/stun/src/textattrs.rs
/webrtc/stun/src/textattrs/textattrs_test.rs
/webrtc/stun/src/uattrs/uattrs_test.rs
/webrtc/stun/src/uri/uri_test.rs
/webrtc/stun/src/xoraddr.rs
/webrtc/stun/src/xoraddr/xoraddr_test.rs
/webrtc/turn/Cargo.toml
/webrtc/turn/examples/turn_client_udp.rs
/webrtc/turn/examples/turn_server_udp.rs
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/five_tuple/five_tuple_test.rs
/webrtc/turn/src/auth/auth_test.rs
/webrtc/turn/src/auth/mod.rs
/webrtc/turn/src/client/client_test.rs
/webrtc/turn/src/client/relay_conn.rs
/webrtc/turn/src/proto/addr/addr_test.rs
/webrtc/turn/src/proto/chandata/chandata_test.rs
/webrtc/turn/src/proto/channum/channnum_test.rs
/webrtc/turn/src/proto/data/data_test.rs
/webrtc/turn/src/proto/evenport/evenport_test.rs
/webrtc/turn/src/proto/lifetime/lifetime_test.rs
/webrtc/turn/src/proto/mod.rs
/webrtc/turn/src/proto/reqfamily.rs
/webrtc/turn/src/proto/reqfamily/reqfamily_test.rs
/webrtc/turn/src/proto/reqtrans/reqtrans_test.rs
/webrtc/turn/src/proto/rsrvtoken/rsrvtoken_test.rs
/webrtc/turn/src/server/request/request_test.rs
/webrtc/turn/src/server/server_test.rs
/webrtc/util/Cargo.toml
/webrtc/util/examples/display-interfaces.rs
/webrtc/util/src/buffer/buffer_test.rs
/webrtc/util/src/conn/conn_bridge_test.rs
/webrtc/util/src/conn/conn_test.rs
/webrtc/util/src/conn/conn_udp_listener_test.rs
/webrtc/util/src/fixed_big_int/mod.rs
/webrtc/util/src/marshal/mod.rs
/webrtc/util/src/replay_detector/replay_detector_test.rs
/webrtc/util/src/vnet/nat.rs
/webrtc/util/src/vnet/net/net_test.rs
/webrtc/util/src/vnet/router.rs
/webrtc/util/src/vnet/router/router_test.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/api/media_engine/media_engine_test.rs
/webrtc/webrtc/src/api/mod.rs
/webrtc/webrtc/src/api/setting_engine/setting_engine_test.rs
/webrtc/webrtc/src/data_channel/data_channel_state.rs
/webrtc/webrtc/src/data_channel/data_channel_test.rs
/webrtc/webrtc/src/dtls_transport/dtls_role.rs
/webrtc/webrtc/src/dtls_transport/dtls_transport_state.rs
/webrtc/webrtc/src/dtls_transport/mod.rs
/webrtc/webrtc/src/ice_transport/ice_candidate.rs
/webrtc/webrtc/src/ice_transport/ice_candidate_pair.rs
/webrtc/webrtc/src/ice_transport/ice_candidate_type.rs
/webrtc/webrtc/src/ice_transport/ice_connection_state.rs
/webrtc/webrtc/src/ice_transport/ice_credential_type.rs
/webrtc/webrtc/src/ice_transport/ice_gatherer_state.rs
/webrtc/webrtc/src/ice_transport/ice_gathering_state.rs
/webrtc/webrtc/src/ice_transport/ice_protocol.rs
/webrtc/webrtc/src/ice_transport/ice_role.rs
/webrtc/webrtc/src/ice_transport/ice_server.rs
/webrtc/webrtc/src/ice_transport/ice_transport_state.rs
/webrtc/webrtc/src/peer_connection/certificate.rs
/webrtc/webrtc/src/peer_connection/mod.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/peer_connection_state.rs
/webrtc/webrtc/src/peer_connection/peer_connection_test.rs
/webrtc/webrtc/src/peer_connection/policy/bundle_policy.rs
/webrtc/webrtc/src/peer_connection/policy/ice_transport_policy.rs
/webrtc/webrtc/src/peer_connection/policy/rtcp_mux_policy.rs
/webrtc/webrtc/src/peer_connection/policy/sdp_semantics.rs
/webrtc/webrtc/src/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_type.rs
/webrtc/webrtc/src/peer_connection/sdp/session_description.rs
/webrtc/webrtc/src/peer_connection/signaling_state.rs
/webrtc/webrtc/src/rtp_transceiver/fmtp/generic/generic_test.rs
/webrtc/webrtc/src/rtp_transceiver/fmtp/h264/h264_test.rs
/webrtc/webrtc/src/rtp_transceiver/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_codec.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_receiver/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_direction.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_test.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_state.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_test.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
/webrtc/webrtc/src/track/track_remote/mod.rs
c910331203-Jan-2023 Vincent Esche <[email protected]>

Remove trailing spaces in 'README.md' files


/webrtc/.github/workflows/cargo.yml
/webrtc/README.md
/webrtc/constraints/CHANGELOG.md
/webrtc/constraints/Cargo.toml
/webrtc/constraints/README.md
/webrtc/constraints/examples/json.rs
/webrtc/constraints/examples/macros.rs
/webrtc/constraints/examples/native.rs
/webrtc/constraints/src/algorithms/fitness_distance.rs
/webrtc/constraints/src/algorithms/fitness_distance/empty_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/setting.rs
/webrtc/constraints/src/algorithms/fitness_distance/settings.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests/bool.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint.rs
/webrtc/constraints/src/algorithms/select_settings.rs
/webrtc/constraints/src/algorithms/select_settings/apply_advanced.rs
/webrtc/constraints/src/algorithms/select_settings/apply_mandatory.rs
/webrtc/constraints/src/algorithms/select_settings/tests.rs
/webrtc/constraints/src/algorithms/select_settings/tie_breaking.rs
/webrtc/constraints/src/capabilities/track.rs
/webrtc/constraints/src/capability.rs
/webrtc/constraints/src/constraint.rs
/webrtc/constraints/src/constraint/value.rs
/webrtc/constraints/src/constraint/value_range.rs
/webrtc/constraints/src/constraint/value_sequence.rs
/webrtc/constraints/src/constraints/mandatory.rs
/webrtc/constraints/src/constraints/track.rs
/webrtc/constraints/src/enumerations.rs
/webrtc/constraints/src/errors.rs
/webrtc/constraints/src/lib.rs
/webrtc/constraints/src/macros.rs
/webrtc/constraints/src/property.rs
/webrtc/constraints/src/setting.rs
/webrtc/constraints/src/settings/track.rs
/webrtc/constraints/src/supported_constraints.rs
/webrtc/constraints/tests/w3c_spec_examples.rs
README.md
/webrtc/doc/AVStack.jpg
/webrtc/dtls/README.md
/webrtc/dtls/src/change_cipher_spec/change_cipher_spec_test.rs
/webrtc/dtls/src/conn/conn_test.rs
/webrtc/dtls/src/flight/flight4.rs
/webrtc/dtls/src/fragment_buffer/fragment_buffer_test.rs
/webrtc/dtls/src/handshake/handshake_message_client_hello/handshake_message_client_hello_test.rs
/webrtc/dtls/src/record_layer/record_layer_test.rs
/webrtc/dtls/src/signature_hash_algorithm/signature_hash_algorithm_test.rs
/webrtc/examples/README.md
/webrtc/examples/examples/data-channels-flow-control/README.md
/webrtc/examples/examples/offer-answer/answer.rs
/webrtc/examples/examples/offer-answer/offer.rs
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/ice/CHANGELOG.md
/webrtc/ice/README.md
/webrtc/ice/src/agent/agent_test.rs
/webrtc/ice/src/candidate/candidate_test.rs
/webrtc/interceptor/README.md
/webrtc/interceptor/src/lib.rs
/webrtc/interceptor/src/mock/mock_stream.rs
/webrtc/interceptor/src/nack/generator/generator_stream.rs
/webrtc/interceptor/src/nack/generator/generator_test.rs
/webrtc/interceptor/src/nack/responder/responder_stream.rs
/webrtc/interceptor/src/nack/responder/responder_test.rs
/webrtc/interceptor/src/report/receiver/receiver_test.rs
/webrtc/interceptor/src/report/sender/sender_test.rs
/webrtc/interceptor/src/stats/interceptor.rs
/webrtc/interceptor/src/twcc/receiver/receiver_test.rs
/webrtc/interceptor/src/twcc/sender/sender_test.rs
/webrtc/interceptor/src/twcc/twcc_test.rs
/webrtc/mdns/README.md
/webrtc/mdns/src/conn/conn_test.rs
/webrtc/mdns/src/message/message_test.rs
/webrtc/media/README.md
/webrtc/media/src/io/h264_reader/h264_reader_test.rs
/webrtc/media/src/io/ivf_reader/ivf_reader_test.rs
/webrtc/media/src/io/sample_builder/sample_builder_test.rs
/webrtc/rtcp/README.md
/webrtc/rtcp/src/compound_packet/compound_packet_test.rs
/webrtc/rtcp/src/reception_report.rs
/webrtc/rtp/README.md
/webrtc/rtp/benches/packet_bench.rs
/webrtc/rtp/src/codecs/h264/h264_test.rs
/webrtc/rtp/src/codecs/h265/h265_test.rs
/webrtc/rtp/src/codecs/vp9/vp9_test.rs
/webrtc/rtp/src/extension/abs_send_time_extension/abs_send_time_extension_test.rs
/webrtc/rtp/src/packet/packet_test.rs
/webrtc/rtp/src/packetizer/packetizer_test.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/README.md
/webrtc/sctp/examples/throughput.rs
/webrtc/sctp/src/association/association_internal/association_internal_test.rs
/webrtc/sctp/src/association/association_test.rs
/webrtc/sctp/src/chunk/chunk_test.rs
/webrtc/sctp/src/packet.rs
/webrtc/sctp/src/queue/pending_queue.rs
/webrtc/sctp/src/stream/stream_test.rs
/webrtc/sctp/src/timer/timer_test.rs
/webrtc/sctp/src/util.rs
/webrtc/sdp/README.md
/webrtc/sdp/src/description/description_test.rs
/webrtc/sdp/src/extmap/extmap_test.rs
/webrtc/sdp/src/util/util_test.rs
/webrtc/srtp/README.md
/webrtc/srtp/src/context/context_test.rs
/webrtc/srtp/src/session/session_rtp_test.rs
/webrtc/stun/README.md
/webrtc/stun/src/addr/addr_test.rs
/webrtc/stun/src/agent/agent_test.rs
/webrtc/stun/src/attributes/attributes_test.rs
/webrtc/stun/src/fingerprint/fingerprint_test.rs
/webrtc/stun/src/message/message_test.rs
/webrtc/stun/src/textattrs/textattrs_test.rs
/webrtc/stun/src/xoraddr/xoraddr_test.rs
/webrtc/turn/README.md
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/channel_bind/channel_bind_test.rs
/webrtc/turn/src/client/relay_conn/relay_conn_test.rs
/webrtc/turn/src/proto/chandata/chandata_test.rs
/webrtc/turn/src/proto/channum/channnum_test.rs
/webrtc/turn/src/proto/evenport/evenport_test.rs
/webrtc/turn/src/proto/lifetime/lifetime_test.rs
/webrtc/turn/src/proto/reqfamily/reqfamily_test.rs
/webrtc/turn/src/proto/reqtrans/reqtrans_test.rs
/webrtc/turn/src/proto/rsrvtoken/rsrvtoken_test.rs
/webrtc/util/README.md
/webrtc/util/src/conn/conn_bridge_test.rs
/webrtc/util/src/conn/conn_udp_listener_test.rs
/webrtc/util/src/replay_detector/replay_detector_test.rs
/webrtc/util/src/vnet/conn/conn_test.rs
/webrtc/util/src/vnet/net/net_test.rs
/webrtc/util/src/vnet/resolver/resolver_test.rs
/webrtc/util/src/vnet/router/router_test.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/src/api/api_test.rs
/webrtc/webrtc/src/api/media_engine/media_engine_test.rs
/webrtc/webrtc/src/data_channel/data_channel_test.rs
/webrtc/webrtc/src/dtls_transport/dtls_transport_test.rs
/webrtc/webrtc/src/ice_transport/ice_server.rs
/webrtc/webrtc/src/peer_connection/mod.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/peer_connection_test.rs
/webrtc/webrtc/src/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
/webrtc/webrtc/src/peer_connection/signaling_state.rs
/webrtc/webrtc/src/rtp_transceiver/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_receiver/rtp_receiver_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_test.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_test.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
/webrtc/webrtc/src/track/track_remote/mod.rs
99037ca704-Jan-2023 Vincent Esche <[email protected]>

Add `impl PartialEq<Error> for util::Error`, making `==` commutative over `data::Error` and `util::Error`

83f2d1bb04-Jan-2023 Vincent Esche <[email protected]>

Unify `assert_eq!(…)`/`assert_ne!(…)` to take args in order of `…!(actual, expected)`

While there isn't an explicit convention for this in Rust the stdlib docs all use `assert_eq!(actual, expected)`

Unify `assert_eq!(…)`/`assert_ne!(…)` to take args in order of `…!(actual, expected)`

While there isn't an explicit convention for this in Rust the stdlib docs all use `assert_eq!(actual, expected)`, making it a sort of implicit convention.

show more ...


/webrtc/Cargo.toml
/webrtc/constraints/.gitignore
/webrtc/constraints/Cargo.toml
/webrtc/constraints/LICENSE-APACHE
/webrtc/constraints/LICENSE-MIT
/webrtc/constraints/src/algorithms.rs
/webrtc/constraints/src/algorithms/fitness_distance.rs
/webrtc/constraints/src/algorithms/fitness_distance/empty_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/setting.rs
/webrtc/constraints/src/algorithms/fitness_distance/settings.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests/bool.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests/f64.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests/string.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_constraint/tests/u64.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint/tests.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint/tests/empty.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint/tests/f64.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_range_constraint/tests/u64.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint/tests.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint/tests/bool.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint/tests/f64.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint/tests/string.rs
/webrtc/constraints/src/algorithms/fitness_distance/value_sequence_constraint/tests/u64.rs
/webrtc/constraints/src/algorithms/select_settings.rs
/webrtc/constraints/src/algorithms/select_settings/apply_advanced.rs
/webrtc/constraints/src/algorithms/select_settings/apply_mandatory.rs
/webrtc/constraints/src/algorithms/select_settings/select_optimal.rs
/webrtc/constraints/src/algorithms/select_settings/tests.rs
/webrtc/constraints/src/algorithms/select_settings/tie_breaking.rs
/webrtc/constraints/src/capabilities.rs
/webrtc/constraints/src/capabilities/stream.rs
/webrtc/constraints/src/capabilities/track.rs
/webrtc/constraints/src/capability.rs
/webrtc/constraints/src/capability/value.rs
/webrtc/constraints/src/capability/value_range.rs
/webrtc/constraints/src/capability/value_sequence.rs
/webrtc/constraints/src/constraint.rs
/webrtc/constraints/src/constraint/value.rs
/webrtc/constraints/src/constraint/value_range.rs
/webrtc/constraints/src/constraint/value_sequence.rs
/webrtc/constraints/src/constraints.rs
/webrtc/constraints/src/constraints/advanced.rs
/webrtc/constraints/src/constraints/constraint_set.rs
/webrtc/constraints/src/constraints/mandatory.rs
/webrtc/constraints/src/constraints/stream.rs
/webrtc/constraints/src/constraints/track.rs
/webrtc/constraints/src/enumerations.rs
/webrtc/constraints/src/errors.rs
/webrtc/constraints/src/lib.rs
/webrtc/constraints/src/macros.rs
/webrtc/constraints/src/property.rs
/webrtc/constraints/src/setting.rs
/webrtc/constraints/src/settings.rs
/webrtc/constraints/src/settings/stream.rs
/webrtc/constraints/src/settings/track.rs
/webrtc/constraints/src/supported_constraints.rs
/webrtc/constraints/tests/w3c_spec_examples.rs
src/data_channel/data_channel_test.rs
src/message/message_test.rs
/webrtc/dtls/src/crypto/crypto_test.rs
/webrtc/ice/src/agent/agent_test.rs
/webrtc/ice/src/candidate/candidate_test.rs
/webrtc/ice/src/external_ip_mapper/external_ip_mapper_test.rs
/webrtc/ice/src/mdns/mdns_test.rs
/webrtc/ice/src/network_type/network_type_test.rs
/webrtc/ice/src/priority/priority_test.rs
/webrtc/ice/src/state/state_test.rs
/webrtc/ice/src/tcp_type/tcp_type_test.rs
/webrtc/ice/src/url/url_test.rs
/webrtc/interceptor/src/nack/generator/generator_test.rs
/webrtc/interceptor/src/nack/responder/responder_test.rs
/webrtc/interceptor/src/report/receiver/receiver_test.rs
/webrtc/interceptor/src/report/sender/sender_test.rs
/webrtc/interceptor/src/twcc/receiver/receiver_test.rs
/webrtc/interceptor/src/twcc/sender/sender_test.rs
/webrtc/interceptor/src/twcc/twcc_test.rs
/webrtc/mdns/src/conn/conn_test.rs
/webrtc/mdns/src/message/message_test.rs
/webrtc/media/src/io/h264_reader/h264_reader_test.rs
/webrtc/media/src/io/h264_writer/h264_writer_test.rs
/webrtc/media/src/io/ivf_reader/ivf_reader_test.rs
/webrtc/media/src/io/ivf_writer/ivf_writer_test.rs
/webrtc/media/src/io/ogg_reader/ogg_reader_test.rs
/webrtc/media/src/io/sample_builder/sample_builder_test.rs
/webrtc/media/src/io/sample_builder/sample_sequence_location_test.rs
/webrtc/media/src/lib.rs
/webrtc/rtcp/src/header.rs
/webrtc/rtcp/src/packet.rs
/webrtc/rtcp/src/payload_feedbacks/receiver_estimated_maximum_bitrate/receiver_estimated_maximum_bitrate_test.rs
/webrtc/rtp/src/codecs/h265/h265_test.rs
/webrtc/rtp/src/codecs/vp9/vp9_test.rs
/webrtc/rtp/src/packetizer/packetizer_test.rs
/webrtc/sctp/src/association/association_internal/association_internal_test.rs
/webrtc/sctp/src/association/association_test.rs
/webrtc/sctp/src/chunk/chunk_test.rs
/webrtc/sctp/src/param/param_test.rs
/webrtc/sctp/src/queue/queue_test.rs
/webrtc/sctp/src/stream/stream_test.rs
/webrtc/sctp/src/timer/timer_test.rs
/webrtc/sdp/src/extmap/extmap_test.rs
/webrtc/srtp/src/session/session_rtp_test.rs
/webrtc/stun/src/agent/agent_test.rs
/webrtc/stun/src/integrity/integrity_test.rs
/webrtc/turn/benches/bench.rs
/webrtc/util/src/buffer/buffer_test.rs
/webrtc/util/src/vnet/chunk/chunk_test.rs
/webrtc/util/src/vnet/conn_map/conn_map_test.rs
/webrtc/util/src/vnet/nat/nat_test.rs
/webrtc/util/src/vnet/net/net_test.rs
/webrtc/util/src/vnet/router/router_test.rs
/webrtc/webrtc/src/api/media_engine/media_engine_test.rs
/webrtc/webrtc/src/data_channel/data_channel_state.rs
/webrtc/webrtc/src/data_channel/data_channel_test.rs
/webrtc/webrtc/src/dtls_transport/dtls_role.rs
/webrtc/webrtc/src/dtls_transport/dtls_transport_state.rs
/webrtc/webrtc/src/ice_transport/ice_candidate.rs
/webrtc/webrtc/src/ice_transport/ice_candidate_type.rs
/webrtc/webrtc/src/ice_transport/ice_connection_state.rs
/webrtc/webrtc/src/ice_transport/ice_credential_type.rs
/webrtc/webrtc/src/ice_transport/ice_gatherer_state.rs
/webrtc/webrtc/src/ice_transport/ice_gathering_state.rs
/webrtc/webrtc/src/ice_transport/ice_protocol.rs
/webrtc/webrtc/src/ice_transport/ice_role.rs
/webrtc/webrtc/src/ice_transport/ice_server.rs
/webrtc/webrtc/src/ice_transport/ice_transport_state.rs
/webrtc/webrtc/src/peer_connection/configuration.rs
/webrtc/webrtc/src/peer_connection/operation/operation_test.rs
/webrtc/webrtc/src/peer_connection/peer_connection_state.rs
/webrtc/webrtc/src/peer_connection/policy/bundle_policy.rs
/webrtc/webrtc/src/peer_connection/policy/ice_transport_policy.rs
/webrtc/webrtc/src/peer_connection/policy/rtcp_mux_policy.rs
/webrtc/webrtc/src/peer_connection/policy/sdp_semantics.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_type.rs
/webrtc/webrtc/src/peer_connection/signaling_state.rs
/webrtc/webrtc/src/rtp_transceiver/fmtp/generic/generic_test.rs
/webrtc/webrtc/src/rtp_transceiver/fmtp/h264/h264_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_direction.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_test.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_state.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
0b4f3fdc02-Jan-2023 Martin Algesten <[email protected]>

upgrade to chrono 0.4.23

daaf05d102-Jan-2023 Moritz Borcherding <[email protected]>

sctp: limit the bytes in the PendingQueue by using a semaphore (#367)

As discussed in #360 the pending queue can grow indefinitely if the sender writes packets faster than the association is able to

sctp: limit the bytes in the PendingQueue by using a semaphore (#367)

As discussed in #360 the pending queue can grow indefinitely if the sender writes packets faster than the association is able to transmit them.

This PR solves this by enforcing a limit on the pending queue. This blocks the sender until enough space is free.

show more ...


src/data_channel/mod.rs
/webrtc/dtls/CHANGELOG.md
/webrtc/dtls/examples/hub/src/utilities.rs
/webrtc/dtls/src/cipher_suite/mod.rs
/webrtc/dtls/src/config.rs
/webrtc/dtls/src/conn/mod.rs
/webrtc/dtls/src/crypto/crypto_test.rs
/webrtc/dtls/src/crypto/mod.rs
/webrtc/dtls/src/extension/extension_supported_point_formats.rs
/webrtc/dtls/src/flight/flight4.rs
/webrtc/dtls/src/flight/flight5.rs
/webrtc/dtls/src/fragment_buffer/mod.rs
/webrtc/dtls/src/handshaker.rs
/webrtc/examples/examples/broadcast/broadcast.rs
/webrtc/examples/examples/data-channels-close/data-channels-close.rs
/webrtc/examples/examples/data-channels-create/data-channels-create.rs
/webrtc/examples/examples/data-channels-detach-create/data-channels-detach-create.rs
/webrtc/examples/examples/data-channels-detach/data-channels-detach.rs
/webrtc/examples/examples/data-channels-flow-control/data-channels-flow-control.rs
/webrtc/examples/examples/data-channels/data-channels.rs
/webrtc/examples/examples/insertable-streams/insertable-streams.rs
/webrtc/examples/examples/offer-answer/answer.rs
/webrtc/examples/examples/offer-answer/offer.rs
/webrtc/examples/examples/play-from-disk-h264/play-from-disk-h264.rs
/webrtc/examples/examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs
/webrtc/examples/examples/play-from-disk-vpx/play-from-disk-vpx.rs
/webrtc/examples/examples/reflect/reflect.rs
/webrtc/examples/examples/rtp-forwarder/rtp-forwarder.rs
/webrtc/examples/examples/rtp-to-webrtc/rtp-to-webrtc.rs
/webrtc/examples/examples/save-to-disk-h264/save-to-disk-h264.rs
/webrtc/examples/examples/save-to-disk-vpx/save-to-disk-vpx.rs
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/examples/examples/swap-tracks/swap-tracks.rs
/webrtc/ice/examples/ping_pong.rs
/webrtc/ice/src/agent/agent_selector.rs
/webrtc/ice/src/control/mod.rs
/webrtc/interceptor/CHANGELOG.md
/webrtc/interceptor/Cargo.toml
/webrtc/interceptor/src/report/receiver/receiver_stream.rs
/webrtc/interceptor/src/stats/interceptor.rs
/webrtc/mdns/CHANGELOG.md
/webrtc/mdns/Cargo.toml
/webrtc/mdns/src/conn/mod.rs
/webrtc/mdns/src/message/header.rs
/webrtc/mdns/src/message/resource/mod.rs
/webrtc/media/CHANGELOG.md
/webrtc/media/Cargo.toml
/webrtc/media/src/io/ivf_writer/mod.rs
/webrtc/media/src/io/ogg_reader/mod.rs
/webrtc/rtcp/CHANGELOG.md
/webrtc/rtcp/Cargo.toml
/webrtc/rtcp/src/goodbye/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_cc/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_nack/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_nack/transport_layer_nack_test.rs
/webrtc/rtp/src/codecs/h264/mod.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/examples/ping.rs
/webrtc/sctp/examples/pong.rs
/webrtc/sctp/examples/throughput.rs
/webrtc/sctp/src/association/association_internal.rs
/webrtc/sctp/src/association/association_internal/association_internal_test.rs
/webrtc/sctp/src/association/association_test.rs
/webrtc/sctp/src/association/mod.rs
/webrtc/sctp/src/chunk/chunk_payload_data.rs
/webrtc/sctp/src/error.rs
/webrtc/sctp/src/packet.rs
/webrtc/sctp/src/queue/payload_queue.rs
/webrtc/sctp/src/queue/pending_queue.rs
/webrtc/sctp/src/queue/queue_test.rs
/webrtc/sctp/src/stream/mod.rs
/webrtc/sctp/src/stream/stream_test.rs
/webrtc/sctp/src/timer/rtx_timer.rs
/webrtc/sctp/src/util.rs
/webrtc/sdp/CHANGELOG.md
/webrtc/sdp/src/description/session.rs
/webrtc/srtp/src/option.rs
/webrtc/stun/benches/bench.rs
/webrtc/stun/examples/stun_client.rs
/webrtc/stun/src/client.rs
/webrtc/turn/CHANGELOG.md
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/mod.rs
/webrtc/turn/src/auth/mod.rs
/webrtc/turn/src/server/request/request_test.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/api/setting_engine/mod.rs
/webrtc/webrtc/src/dtls_transport/mod.rs
/webrtc/webrtc/src/peer_connection/mod.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/peer_connection_test.rs
/webrtc/webrtc/src/rtp_transceiver/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_codec.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_receiver/rtp_receiver_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
4d036b3515-Nov-2022 Hugo Tunius <[email protected]>

Release data version 0.6.0

e73e9c1315-Nov-2022 Hugo Tunius <[email protected]>

Release sctp version 0.7.0

254a17e215-Nov-2022 Hugo Tunius <[email protected]>

Release util version 0.7.0

0acb5a4915-Nov-2022 Anton Kaliaev <[email protected]>

[sctp] make `write` sync (#344)

There's no reason for it to be async because it just buffers the data in memory (actual IO is happening in a separate thread).

5b79f08a14-Nov-2022 alexlapa <[email protected]>

remove unnecessary async in public API (#338)

> mind if i create a PR that makes all callback setters (e.g. RTCPeerConnection::on_ice_candidate()) non async? Currently callbacks are stored behind to

remove unnecessary async in public API (#338)

> mind if i create a PR that makes all callback setters (e.g. RTCPeerConnection::on_ice_candidate()) non async? Currently callbacks are stored behind tokio::Mutex'es, i believe that ArcSwap can be used here, so we can use atomic load/store. It wont affect performance in any way, just some quality of life improvements.

> All good with me. I'd like to get rid of tokio::Mutex, replacing it with sync variants, where that's possible

So i've refactored all public callback setters here.

Regarding removing `tokio::Mutex`es that you've mentioned, well, i've replaced some of those, but i don't want this PR to become even bigger, and it would be nice if you provide some feedback first. I've used both `ArcSwap` and `std::Mutex`, i guess its ok to use blocking mutex in simple cases, when you don't need to hold it, e.g. copy, store, swap, take one-liners. I will prepare follow-up PRs on this issue if this PR looks good to you.

And one more thing regarding the callbacks, maybe it makes sense to make them just dumb `Box<dyn Fn(_)>`? So `Box<dyn (FnMut(ConnectionState) -> Pin<Box<dyn Future<Output = ()> + Send + 'static>>) + Send + Sync>` => `Box<dyn (Fn(ConnectionState)) + Send + Sync>`. Yeah, that might hurt users in some rare cases, but it would make everything simpler.

Been using this to play around with detecting deadlocks, didn't find anything though.

```diff
diff --git a/util/src/sync/mod.rs b/util/src/sync/mod.rs
index 6a101299..d5eb835d 100644
--- a/util/src/sync/mod.rs
+++ b/util/src/sync/mod.rs
@@ -1,4 +1,150 @@
-use std::{ops, sync};
+use std::backtrace::Backtrace;
+use std::sync::atomic::{AtomicBool, Ordering};
+use std::sync::Arc;
+use std::time::{Duration, Instant};
+use std::{fmt, ops, sync, thread};
+
+const MAX_AGE: Duration = Duration::from_millis(5000);
+const CHECK_INTERVAL: Duration = Duration::from_millis(20);
+static DEADLOCK_THREAD_STARTED: AtomicBool = AtomicBool::new(false);
+lazy_static! {
+ static ref TRACKED_LOCKS: Arc<sync::RwLock<Vec<TrackedLock>>> =
+ Arc::new(sync::RwLock::new(Vec::new()));
+}
+
+struct TrackedLock {
+ backtrace: Backtrace,
+ tracker: AliveTracker,
+ typ: Type,
+ reported: AtomicBool,
+}
+
+impl TrackedLock {
+ fn mark_reported(&self) -> bool {
+ self.reported
+ .compare_exchange(false, true, Ordering::Acquire, Ordering::Acquire)
+ .is_ok()
+ }
+}
+
+#[derive(Debug)]
+enum Type {
+ MutexLock,
+ RwReadLock,
+ RwWriteLock,
+}
+
+impl fmt::Display for Type {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ Type::MutexLock => write!(f, "MutexLock"),
+ Type::RwReadLock => write!(f, "RwReadLock"),
+ Type::RwWriteLock => write!(f, "RwWriteLock"),
+ }
+ }
+}
+
+struct Alive {
+ live: Arc<AtomicBool>,
+ born_at: Instant,
+}
+
+impl Alive {
+ fn new() -> Self {
+ Self {
+ live: Arc::new(AtomicBool::new(true)),
+ born_at: Instant::now(),
+ }
+ }
+
+ fn track(&self) -> AliveTracker {
+ AliveTracker {
+ live: self.live.clone(),
+ born_at: self.born_at.clone(),
+ }
+ }
+
+ fn mark_dead(&self) {
+ self.live.store(false, Ordering::Release);
+ }
+}
+
+impl Drop for Alive {
+ fn drop(&mut self) {
+ self.mark_dead();
+ }
+}
+
+struct AliveTracker {
+ live: Arc<AtomicBool>,
+ born_at: Instant,
+}
+
+impl AliveTracker {
+ fn is_dead(&self) -> bool {
+ !self.live.load(Ordering::Acquire)
+ }
+
+ fn age(&self) -> Option<Duration> {
+ if self.is_dead() {
+ None
+ } else {
+ Some(Instant::now() - self.born_at)
+ }
+ }
+}
+
+fn start_deadlock_thread() {
+ if DEADLOCK_THREAD_STARTED
+ .compare_exchange(false, true, Ordering::Acquire, Ordering::Acquire)
+ .is_err()
+ {
+ return;
+ }
+
+ thread::spawn(|| loop {
+ let lock = TRACKED_LOCKS.read().unwrap();
+ let mut needs_cleanup = false;
+
+ for tracked in lock.iter() {
+ let age = tracked.tracker.age();
+ match age {
+ Some(age) if age > MAX_AGE => {
+ if tracked.mark_reported() {
+ println!(
+ "Potential deadlock on {}. Backtrace:\n{}Held for: {}s",
+ tracked.typ,
+ tracked.backtrace,
+ age.as_secs_f64()
+ );
+ }
+ }
+ None => {
+ // Lock is dead
+ needs_cleanup = true;
+ }
+ _ => {}
+ }
+ }
+ drop(lock);
+
+ if needs_cleanup {
+ let mut write = TRACKED_LOCKS.write().unwrap();
+ write.retain(|tracked| !tracked.tracker.is_dead());
+ }
+ });
+}
+
+fn track(backtrace: Backtrace, alive: &Alive, typ: Type) {
+ start_deadlock_thread();
+ let mut write = TRACKED_LOCKS.write().unwrap();
+ write.push(TrackedLock {
+ backtrace,
+ tracker: alive.track(),
+ typ,
+ reported: AtomicBool::new(false),
+ });
+}

/// A synchronous mutual exclusion primitive useful for protecting shared data.
#[derive(Default, Debug)]
@@ -13,8 +159,10 @@ impl<T> Mutex<T> {
/// Acquires a mutex, blocking the current thread until it is able to do so.
pub fn lock(&self) -> MutexGuard<'_, T> {
let guard = self.0.lock().unwrap();
+ let alive = Alive::new();
+ track(Backtrace::capture(), &alive, Type::MutexLock);

- MutexGuard(guard)
+ MutexGuard(guard, alive)
}

/// Consumes this mutex, returning the underlying data.
@@ -25,7 +173,7 @@ impl<T> Mutex<T> {

/// An RAII implementation of a "scoped lock" of a mutex. When this structure is
/// dropped (falls out of scope), the lock will be unlocked.
-pub struct MutexGuard<'a, T>(sync::MutexGuard<'a, T>);
+pub struct MutexGuard<'a, T>(sync::MutexGuard<'a, T>, Alive);

impl<'a, T> ops::Deref for MutexGuard<'a, T> {
type Target = T;
@@ -55,22 +203,26 @@ impl<T> RwLock<T> {
/// until it can be acquired.
pub fn read(&self) -> RwLockReadGuard<'_, T> {
let guard = self.0.read().unwrap();
+ let alive = Alive::new();
+ track(Backtrace::capture(), &alive, Type::MutexLock);

- RwLockReadGuard(guard)
+ RwLockReadGuard(guard, alive)
}

/// Locks this rwlock with exclusive write access, blocking the current
/// thread until it can be acquired.
pub fn write(&self) -> RwLockWriteGuard<'_, T> {
let guard = self.0.write().unwrap();
+ let alive = Alive::new();
+ track(Backtrace::capture(), &alive, Type::MutexLock);

- RwLockWriteGuard(guard)
+ RwLockWriteGuard(guard, alive)
}
}

/// RAII structure used to release the shared read access of a lock when
/// dropped.
-pub struct RwLockReadGuard<'a, T>(sync::RwLockReadGuard<'a, T>);
+pub struct RwLockReadGuard<'a, T>(sync::RwLockReadGuard<'a, T>, Alive);

impl<'a, T> ops::Deref for RwLockReadGuard<'a, T> {
type Target = T;
@@ -82,7 +234,7 @@ impl<'a, T> ops::Deref for RwLockReadGuard<'a, T> {

/// RAII structure used to release the shared read access of a lock when
/// dropped.
-pub struct RwLockWriteGuard<'a, T>(sync::RwLockWriteGuard<'a, T>);
+pub struct RwLockWriteGuard<'a, T>(sync::RwLockWriteGuard<'a, T>, Alive);

impl<'a, T> ops::Deref for RwLockWriteGuard<'a, T> {
type Target = T;
```

show more ...


CHANGELOG.md
src/data_channel/data_channel_test.rs
src/data_channel/mod.rs
/webrtc/dtls/examples/hub/src/lib.rs
/webrtc/dtls/src/conn/mod.rs
/webrtc/examples/examples/broadcast/broadcast.rs
/webrtc/examples/examples/data-channels-close/data-channels-close.rs
/webrtc/examples/examples/data-channels-create/data-channels-create.rs
/webrtc/examples/examples/data-channels-detach-create/data-channels-detach-create.rs
/webrtc/examples/examples/data-channels-detach/data-channels-detach.rs
/webrtc/examples/examples/data-channels-flow-control/data-channels-flow-control.rs
/webrtc/examples/examples/data-channels/data-channels.rs
/webrtc/examples/examples/ice-restart/ice-restart.rs
/webrtc/examples/examples/insertable-streams/insertable-streams.rs
/webrtc/examples/examples/offer-answer/answer.rs
/webrtc/examples/examples/offer-answer/offer.rs
/webrtc/examples/examples/ortc/ortc.rs
/webrtc/examples/examples/play-from-disk-h264/play-from-disk-h264.rs
/webrtc/examples/examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs
/webrtc/examples/examples/play-from-disk-vpx/play-from-disk-vpx.rs
/webrtc/examples/examples/reflect/reflect.rs
/webrtc/examples/examples/rtp-forwarder/rtp-forwarder.rs
/webrtc/examples/examples/rtp-to-webrtc/rtp-to-webrtc.rs
/webrtc/examples/examples/save-to-disk-h264/save-to-disk-h264.rs
/webrtc/examples/examples/save-to-disk-vpx/save-to-disk-vpx.rs
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/examples/examples/swap-tracks/swap-tracks.rs
/webrtc/ice/CHANGELOG.md
/webrtc/ice/Cargo.toml
/webrtc/ice/examples/ping_pong.rs
/webrtc/ice/src/agent/agent_gather.rs
/webrtc/ice/src/agent/agent_gather_test.rs
/webrtc/ice/src/agent/agent_internal.rs
/webrtc/ice/src/agent/agent_selector.rs
/webrtc/ice/src/agent/agent_test.rs
/webrtc/ice/src/agent/agent_transport.rs
/webrtc/ice/src/agent/agent_transport_test.rs
/webrtc/ice/src/agent/agent_vnet_test.rs
/webrtc/ice/src/agent/mod.rs
/webrtc/ice/src/candidate/candidate_base.rs
/webrtc/ice/src/candidate/candidate_host.rs
/webrtc/ice/src/candidate/candidate_pair_test.rs
/webrtc/ice/src/candidate/candidate_peer_reflexive.rs
/webrtc/ice/src/candidate/candidate_relay.rs
/webrtc/ice/src/candidate/candidate_relay_test.rs
/webrtc/ice/src/candidate/candidate_server_reflexive.rs
/webrtc/ice/src/candidate/candidate_server_reflexive_test.rs
/webrtc/ice/src/candidate/candidate_test.rs
/webrtc/ice/src/candidate/mod.rs
/webrtc/ice/src/mdns/mdns_test.rs
/webrtc/ice/src/udp_mux/mod.rs
/webrtc/ice/src/udp_mux/udp_mux_conn.rs
/webrtc/interceptor/src/mock/mock_time.rs
/webrtc/interceptor/src/nack/generator/generator_stream.rs
/webrtc/interceptor/src/report/receiver/receiver_stream.rs
/webrtc/rtcp/src/lib.rs
/webrtc/rtp/Cargo.toml
/webrtc/rtp/src/sequence.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
/webrtc/sctp/examples/pong.rs
/webrtc/sctp/src/association/association_internal/association_internal_test.rs
/webrtc/sctp/src/association/association_test.rs
/webrtc/sctp/src/stream/mod.rs
/webrtc/sctp/src/stream/stream_test.rs
/webrtc/turn/examples/turn_client_udp.rs
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/mod.rs
/webrtc/turn/src/client/mod.rs
/webrtc/turn/src/client/relay_conn.rs
/webrtc/turn/src/relay/relay_none.rs
/webrtc/turn/src/relay/relay_range.rs
/webrtc/turn/src/relay/relay_static.rs
/webrtc/turn/src/server/request.rs
/webrtc/turn/src/server/request/request_test.rs
/webrtc/turn/src/server/server_test.rs
/webrtc/util/CHANGELOG.md
/webrtc/util/Cargo.toml
/webrtc/util/src/conn/conn_bridge.rs
/webrtc/util/src/conn/conn_bridge_test.rs
/webrtc/util/src/conn/conn_disconnected_packet.rs
/webrtc/util/src/conn/conn_pipe.rs
/webrtc/util/src/conn/conn_udp.rs
/webrtc/util/src/conn/conn_udp_listener.rs
/webrtc/util/src/conn/conn_udp_listener_test.rs
/webrtc/util/src/conn/mod.rs
/webrtc/util/src/sync/mod.rs
/webrtc/util/src/vnet/conn.rs
/webrtc/util/src/vnet/conn_map.rs
/webrtc/util/src/vnet/conn_map/conn_map_test.rs
/webrtc/util/src/vnet/net/net_test.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/data_channel/data_channel_test.rs
/webrtc/webrtc/src/data_channel/mod.rs
/webrtc/webrtc/src/dtls_transport/dtls_transport_test.rs
/webrtc/webrtc/src/dtls_transport/mod.rs
/webrtc/webrtc/src/error.rs
/webrtc/webrtc/src/ice_transport/ice_candidate.rs
/webrtc/webrtc/src/ice_transport/ice_gatherer.rs
/webrtc/webrtc/src/ice_transport/ice_transport_test.rs
/webrtc/webrtc/src/ice_transport/mod.rs
/webrtc/webrtc/src/mux/endpoint.rs
/webrtc/webrtc/src/mux/mux_test.rs
/webrtc/webrtc/src/peer_connection/certificate.rs
/webrtc/webrtc/src/peer_connection/mod.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/peer_connection_test.rs
/webrtc/webrtc/src/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_receiver/rtp_receiver_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_test.rs
/webrtc/webrtc/src/sctp_transport/mod.rs
/webrtc/webrtc/src/stats/mod.rs
/webrtc/webrtc/src/stats/stats_collector.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
242db9d611-Nov-2022 Anton Kaliaev <[email protected]>

release minor versions of data, sctp and dtls crates (#346)

* bump minor versions for dtls, data and sctp crates

* bump versions in Cargo.toml

* rename no-run attribute to no_run

* fix `sam

release minor versions of data, sctp and dtls crates (#346)

* bump minor versions for dtls, data and sctp crates

* bump versions in Cargo.toml

* rename no-run attribute to no_run

* fix `sample_writer` example

* bring back v prefix

show more ...

137f11f209-Nov-2022 Anton Kaliaev <[email protected]>

[PollStream/PollDataChannel] do not loose bytes (#341)

Returning Poll::Ready(Ok(n)) when write_fut is Some is incorrect since buf already contains new data and we should instead always return Poll::

[PollStream/PollDataChannel] do not loose bytes (#341)

Returning Poll::Ready(Ok(n)) when write_fut is Some is incorrect since buf already contains new data and we should instead always return Poll::Ready(Ok(buf.len())) and update write_fut.

In the future, if/when we make write synchronous, this whole block could be simplified to just contain a single call (1 line) to write. See #344

show more ...

d50269a607-Nov-2022 Anton Kaliaev <[email protected]>

PollStream/PollDataChannel: flush before shutting down (#340)

* PollStream/PollDataChannel: flush before shutting down

"Invocation of a shutdown implies an invocation of flush. Once this
method

PollStream/PollDataChannel: flush before shutting down (#340)

* PollStream/PollDataChannel: flush before shutting down

"Invocation of a shutdown implies an invocation of flush. Once this
method returns Ready it implies that a flush successfully happened
before the shutdown happened. That is, callers don’t need to call flush
before calling shutdown. They can rely that by calling shutdown any
pending buffered data will be written out."

https://docs.rs/tokio/1.21.2/tokio/io/trait.AsyncWrite.html#tymethod.poll_shutdown

* format code

* fix clippy warning

* fix another clippy warning

* add changelog entries

show more ...

de6e781e02-Nov-2022 Hugo Tunius <[email protected]>

Add MSRV policy and update MSRV to 1.60.0 (#337)


/webrtc/.github/workflows/cargo.yml
/webrtc/README.md
CHANGELOG.md
Cargo.toml
/webrtc/dtls/CHANGELOG.md
/webrtc/dtls/Cargo.toml
/webrtc/examples/Cargo.toml
/webrtc/ice/CHANGELOG.md
/webrtc/ice/Cargo.toml
/webrtc/interceptor/CHANGELOG.md
/webrtc/interceptor/Cargo.toml
/webrtc/interceptor/src/twcc/mod.rs
/webrtc/interceptor/src/twcc/receiver/mod.rs
/webrtc/interceptor/src/twcc/receiver/receiver_stream.rs
/webrtc/interceptor/src/twcc/receiver/receiver_test.rs
/webrtc/interceptor/src/twcc/twcc_test.rs
/webrtc/mdns/CHANGELOG.md
/webrtc/mdns/Cargo.toml
/webrtc/media/CHANGELOG.md
/webrtc/media/Cargo.toml
/webrtc/rtcp/CHANGELOG.md
/webrtc/rtcp/Cargo.toml
/webrtc/rtp/CHANGELOG.md
/webrtc/rtp/Cargo.toml
/webrtc/rtp/src/extension/audio_level_extension/mod.rs
/webrtc/rtp/src/extension/mod.rs
/webrtc/rtp/src/extension/transport_cc_extension/mod.rs
/webrtc/rtp/src/extension/video_orientation_extension/mod.rs
/webrtc/rtp/src/extension/video_orientation_extension/video_orientation_extension_test.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
/webrtc/sdp/CHANGELOG.md
/webrtc/sdp/Cargo.toml
/webrtc/sdp/src/extmap/mod.rs
/webrtc/srtp/CHANGELOG.md
/webrtc/srtp/Cargo.toml
/webrtc/stun/CHANGELOG.md
/webrtc/stun/Cargo.toml
/webrtc/turn/CHANGELOG.md
/webrtc/turn/Cargo.toml
/webrtc/turn/src/allocation/allocation_manager.rs
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/five_tuple.rs
/webrtc/turn/src/allocation/mod.rs
/webrtc/turn/src/server/mod.rs
/webrtc/turn/src/server/request.rs
/webrtc/util/CHANGELOG.md
/webrtc/util/Cargo.toml
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/peer_connection/configuration.rs
/webrtc/webrtc/src/peer_connection/mod.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/policy/sdp_semantics.rs
/webrtc/webrtc/src/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
8315d00921-Oct-2022 Hugo Tunius <[email protected]>

Add rust-version

980753fb21-Oct-2022 Hugo Tunius <[email protected]>

Revert "Add rust-version to Cargo.toml"

This reverts commit 5a263440b18854c7ffd9b47ebea6260934da0ad9.

Turns out this was only added in Cargo version 1.64.0 so it breaks CI.

5a26344020-Oct-2022 Hugo Tunius <[email protected]>

Add rust-version to Cargo.toml


/webrtc/Cargo.toml
Cargo.toml
/webrtc/dtls/Cargo.toml
/webrtc/dtls/src/conn/mod.rs
/webrtc/examples/Cargo.toml
/webrtc/examples/examples/data-channels-flow-control/README.md
/webrtc/examples/examples/data-channels-flow-control/data-channels-flow-control.rs
/webrtc/examples/examples/ice-restart/ice-restart.rs
/webrtc/examples/examples/play-from-disk-renegotiation/play-from-disk-renegotiation.rs
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/ice/CHANGELOG.md
/webrtc/ice/Cargo.toml
/webrtc/ice/src/agent/agent_config.rs
/webrtc/ice/src/agent/agent_gather.rs
/webrtc/ice/src/agent/agent_gather_test.rs
/webrtc/ice/src/agent/mod.rs
/webrtc/ice/src/util/mod.rs
/webrtc/ice/src/util/util_test.rs
/webrtc/interceptor/CHANGELOG.md
/webrtc/interceptor/Cargo.toml
/webrtc/interceptor/src/stats/interceptor.rs
/webrtc/interceptor/src/stats/mod.rs
/webrtc/interceptor/src/twcc/receiver/mod.rs
/webrtc/mdns/Cargo.toml
/webrtc/media/CHANGELOG.md
/webrtc/media/Cargo.toml
/webrtc/media/src/io/sample_builder/mod.rs
/webrtc/media/src/io/sample_builder/sample_builder_test.rs
/webrtc/media/src/io/sample_builder/sample_sequence_location.rs
/webrtc/media/src/io/sample_builder/sample_sequence_location_test.rs
/webrtc/media/src/lib.rs
/webrtc/rtcp/Cargo.toml
/webrtc/rtcp/src/reception_report.rs
/webrtc/rtp/Cargo.toml
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
/webrtc/sdp/Cargo.toml
/webrtc/srtp/Cargo.toml
/webrtc/stun/Cargo.toml
/webrtc/turn/CHANGELOG.md
/webrtc/turn/Cargo.toml
/webrtc/turn/examples/turn_client_udp.rs
/webrtc/turn/examples/turn_server_udp.rs
/webrtc/turn/src/allocation/allocation_manager.rs
/webrtc/turn/src/allocation/allocation_manager/allocation_manager_test.rs
/webrtc/turn/src/allocation/allocation_test.rs
/webrtc/turn/src/allocation/channel_bind/channel_bind_test.rs
/webrtc/turn/src/allocation/five_tuple.rs
/webrtc/turn/src/allocation/mod.rs
/webrtc/turn/src/client/relay_conn.rs
/webrtc/turn/src/proto/chandata.rs
/webrtc/turn/src/proto/mod.rs
/webrtc/turn/src/relay/relay_range.rs
/webrtc/turn/src/server/mod.rs
/webrtc/turn/src/server/request.rs
/webrtc/turn/src/server/request/request_test.rs
/webrtc/util/Cargo.toml
/webrtc/util/src/vnet/net.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/api/interceptor_registry/mod.rs
/webrtc/webrtc/src/api/media_engine/media_engine_test.rs
/webrtc/webrtc/src/api/media_engine/mod.rs
/webrtc/webrtc/src/api/setting_engine/mod.rs
/webrtc/webrtc/src/error.rs
/webrtc/webrtc/src/ice_transport/ice_gatherer.rs
/webrtc/webrtc/src/peer_connection/peer_connection_internal.rs
/webrtc/webrtc/src/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_codec.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_receiver/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/mod.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_direction.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_test.rs
/webrtc/webrtc/src/stats/mod.rs
/webrtc/webrtc/src/track/track_local/mod.rs
/webrtc/webrtc/src/track/track_local/track_local_static_rtp.rs
/webrtc/webrtc/src/track/track_local/track_local_static_sample.rs
258da87407-Sep-2022 Hugo Tunius <[email protected]>

Bump all sub crate versions (#286)

12