History log of /webrtc/sctp/src/ (Results 1 – 25 of 33)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
e56a486326-Apr-2023 yngrtc <[email protected]>

fix fmt

f3f4953605-Apr-2023 InDieTasten <[email protected]>

Fix comment indentation

9792112908-Apr-2023 yngrtc <[email protected]>

fix clippy default warning


/webrtc/.github/workflows/cargo.yml
/webrtc/README.md
/webrtc/constraints/Cargo.toml
/webrtc/data/CHANGELOG.md
/webrtc/data/Cargo.toml
/webrtc/data/src/data_channel/mod.rs
/webrtc/dtls/CHANGELOG.md
/webrtc/dtls/Cargo.toml
/webrtc/dtls/examples/dial/verify/dial_verify.rs
/webrtc/dtls/examples/hub/Cargo.toml
/webrtc/dtls/examples/listen/verify/listen_verify.rs
/webrtc/dtls/src/config.rs
/webrtc/dtls/src/content.rs
/webrtc/dtls/src/curve/named_curve.rs
/webrtc/dtls/src/handshake/mod.rs
/webrtc/examples/Cargo.toml
/webrtc/examples/examples/broadcast/broadcast.rs
/webrtc/examples/examples/reflect/reflect.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/swap-tracks/swap-tracks.rs
/webrtc/ice/CHANGELOG.md
/webrtc/ice/Cargo.toml
/webrtc/ice/src/agent/mod.rs
/webrtc/ice/src/lib.rs
/webrtc/ice/src/mdns/mod.rs
/webrtc/interceptor/Cargo.toml
/webrtc/mdns/Cargo.toml
/webrtc/mdns/src/message/header.rs
/webrtc/mdns/src/message/mod.rs
/webrtc/media/Cargo.toml
/webrtc/media/src/io/h264_reader/mod.rs
/webrtc/rtcp/Cargo.toml
/webrtc/rtcp/src/extended_report/mod.rs
/webrtc/rtcp/src/extended_report/ssr.rs
/webrtc/rtcp/src/header.rs
/webrtc/rtcp/src/source_description/mod.rs
/webrtc/rtcp/src/transport_feedbacks/transport_layer_cc/mod.rs
/webrtc/rtp/Cargo.toml
/webrtc/rtp/src/extension/video_orientation_extension/mod.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
association/mod.rs
chunk/chunk_payload_data.rs
param/param_reconfig_response.rs
stream/mod.rs
/webrtc/sdp/Cargo.toml
/webrtc/sdp/src/direction/mod.rs
/webrtc/sdp/src/util/mod.rs
/webrtc/srtp/Cargo.toml
/webrtc/srtp/src/protection_profile.rs
/webrtc/stun/Cargo.toml
/webrtc/turn/Cargo.toml
/webrtc/turn/src/client/periodic_timer.rs
/webrtc/turn/src/client/permission.rs
/webrtc/util/Cargo.toml
/webrtc/util/src/vnet/nat.rs
/webrtc/webrtc/CHANGELOG.md
/webrtc/webrtc/Cargo.toml
/webrtc/webrtc/src/api/media_engine/media_engine_test.rs
/webrtc/webrtc/src/api/media_engine/mod.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/mod.rs
/webrtc/webrtc/src/dtls_transport/dtls_role.rs
/webrtc/webrtc/src/dtls_transport/dtls_transport_state.rs
/webrtc/webrtc/src/error.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.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_transport_state.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/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/signaling_state.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_receiver/rtp_receiver_test.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/srtp_writer_future.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_state.rs
/webrtc/webrtc/src/track/track_local/mod.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
/webrtc/webrtc/src/track/track_remote/mod.rs
ed83f1a402-Feb-2023 João Oliveira <[email protected]>

sctp: set verification tag to zero on the INIT packet. (#405)

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/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
/webrtc/data/Cargo.toml
/webrtc/dtls/Cargo.toml
/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/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/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/signal/Cargo.toml
/webrtc/examples/examples/signal/src/lib.rs
/webrtc/examples/examples/simulcast/simulcast.rs
/webrtc/examples/examples/swap-tracks/swap-tracks.rs
/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/Cargo.toml
/webrtc/sctp/examples/ping.rs
/webrtc/sctp/examples/pong.rs
/webrtc/sctp/examples/throughput.rs
/webrtc/sctp/fuzz/Cargo.toml
association/association_internal.rs
association/association_internal/association_internal_test.rs
association/association_test.rs
association/mod.rs
chunk/chunk_abort.rs
chunk/chunk_error.rs
chunk/chunk_init.rs
chunk/chunk_payload_data.rs
chunk/chunk_reconfig.rs
chunk/chunk_selective_ack.rs
chunk/chunk_test.rs
chunk/chunk_type.rs
error_cause.rs
packet.rs
param/param_reconfig_response.rs
param/param_requested_hmac_algorithm.rs
param/param_test.rs
param/param_type.rs
queue/payload_queue.rs
queue/queue_test.rs
stream/mod.rs
timer/timer_test.rs
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/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/Cargo.toml
/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/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_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/mod.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/rtp_codec.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_sender/rtp_sender_test.rs
/webrtc/webrtc/src/rtp_transceiver/rtp_transceiver_direction.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_state.rs
/webrtc/webrtc/src/sctp_transport/sctp_transport_test.rs
95f8c26017-Jan-2023 Christopher Corley <[email protected]>

sctp: fix 'attempt to add with overflow' panic in dev profile (#393)


/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
/webrtc/data/README.md
/webrtc/doc/AVStack.jpg
/webrtc/dtls/README.md
/webrtc/dtls/examples/certificates/README.md
/webrtc/examples/README.md
/webrtc/examples/examples/broadcast/README.md
/webrtc/examples/examples/broadcast/broadcast.rs
/webrtc/examples/examples/data-channels-create/README.md
/webrtc/examples/examples/data-channels-detach-create/README.md
/webrtc/examples/examples/data-channels-detach/README.md
/webrtc/examples/examples/data-channels-flow-control/README.md
/webrtc/examples/examples/data-channels/README.md
/webrtc/examples/examples/ice-restart/README.md
/webrtc/examples/examples/insertable-streams/README.md
/webrtc/examples/examples/offer-answer/README.md
/webrtc/examples/examples/ortc/README.md
/webrtc/examples/examples/play-from-disk-h264/README.md
/webrtc/examples/examples/play-from-disk-renegotiation/README.md
/webrtc/examples/examples/play-from-disk-vpx/README.md
/webrtc/examples/examples/reflect/README.md
/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/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/simulcast/README.md
/webrtc/examples/examples/swap-tracks/README.md
/webrtc/ice/CHANGELOG.md
/webrtc/ice/README.md
/webrtc/interceptor/README.md
/webrtc/mdns/README.md
/webrtc/media/README.md
/webrtc/rtcp/README.md
/webrtc/rtcp/src/reception_report.rs
/webrtc/rtp/README.md
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/README.md
queue/reassembly_queue.rs
/webrtc/sdp/README.md
/webrtc/srtp/README.md
/webrtc/stun/CHANGELOG.md
/webrtc/stun/README.md
/webrtc/turn/README.md
/webrtc/util/README.md
/webrtc/webrtc/CHANGELOG.md
/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/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/peer_connection/sdp/mod.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
/webrtc/webrtc/src/rtp_transceiver/mod.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_test.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs
/webrtc/webrtc/src/track/track_remote/mod.rs
f68267b904-Jan-2023 Vincent Esche <[email protected]>

Resolve `clippy::new_ret_no_self` cliipy warning by renaming `FakeEchoConn::new()` to `…::type_erased()`

013c11db04-Jan-2023 Vincent Esche <[email protected]>

Silence `clippy::needless_range_loop` warning in tests

1f428f4d04-Jan-2023 Vincent Esche <[email protected]>

Silence `clippy::needless_update` warning in tests

5b6b0d6003-Jan-2023 Vincent Esche <[email protected]>

Simplify initialization of types with `Default::default()`, followed by field assignment in tests

39ea30b803-Jan-2023 Vincent Esche <[email protected]>

Replace `stream.read(…)` with `stream.read_exact(…)`

f78265e503-Jan-2023 Vincent Esche <[email protected]>

Make `const` itemwith interior mutable `static` instead

82df1b8003-Jan-2023 Vincent Esche <[email protected]>

Remove needless use of references
for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed

2e7ce1eb03-Jan-2023 Vincent Esche <[email protected]>

Remove redundant `t as T` cast

4ee96d0c03-Jan-2023 Vincent Esche <[email protected]>

Replace `Box::new(T::default())` with `Box::<T>::default()`

7bd9f39d04-Jan-2023 Vincent Esche <[email protected]>

Replace `assert!(false, …)`/`assert!(false)` with `panic!(…)`/`panic!()`


/webrtc/dtls/src/change_cipher_spec/change_cipher_spec_test.rs
/webrtc/dtls/src/conn/conn_test.rs
/webrtc/dtls/src/record_layer/record_layer_test.rs
/webrtc/dtls/src/signature_hash_algorithm/signature_hash_algorithm_test.rs
/webrtc/examples/examples/offer-answer/answer.rs
/webrtc/examples/examples/offer-answer/offer.rs
/webrtc/ice/src/agent/agent_test.rs
/webrtc/interceptor/src/lib.rs
/webrtc/interceptor/src/mock/mock_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/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/ivf_reader/ivf_reader_test.rs
/webrtc/media/src/io/sample_builder/sample_builder_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/examples/throughput.rs
association/association_internal/association_internal_test.rs
association/association_test.rs
chunk/chunk_test.rs
timer/timer_test.rs
/webrtc/sdp/src/description/description_test.rs
/webrtc/sdp/src/extmap/extmap_test.rs
/webrtc/sdp/src/util/util_test.rs
/webrtc/srtp/src/context/context_test.rs
/webrtc/srtp/src/session/session_rtp_test.rs
/webrtc/stun/src/addr/addr_test.rs
/webrtc/stun/src/agent/agent_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/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/src/conn/conn_bridge_test.rs
/webrtc/util/src/conn/conn_udp_listener_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/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/peer_connection_test.rs
/webrtc/webrtc/src/peer_connection/sdp/sdp_test.rs
/webrtc/webrtc/src/peer_connection/signaling_state.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
6bc4a8f105-Jan-2023 Anton <[email protected]>

sctp: remove unnecessary drops and use precise padding (#381)

* add comments for QUEUE_BYTES_LIMIT and QUEUE_APPEND_LARGE

* remove unnecessary drop(sem_lock)

lock will be dropped automatically

sctp: remove unnecessary drops and use precise padding (#381)

* add comments for QUEUE_BYTES_LIMIT and QUEUE_APPEND_LARGE

* remove unnecessary drop(sem_lock)

lock will be dropped automatically

* use PADDING_MULTIPLE instead of 16

contract: padding_needed <= PADDING_MULTIPLE

Refs https://github.com/webrtc-rs/webrtc/pull/364 and https://github.com/webrtc-rs/webrtc/pull/367

show more ...

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
/webrtc/data/Cargo.toml
/webrtc/data/src/data_channel/data_channel_test.rs
/webrtc/data/src/message/message_test.rs
/webrtc/dtls/Cargo.toml
/webrtc/dtls/src/crypto/crypto_gcm.rs
/webrtc/dtls/src/crypto/crypto_test.rs
/webrtc/dtls/src/crypto/mod.rs
/webrtc/dtls/src/prf/mod.rs
/webrtc/examples/Cargo.toml
/webrtc/ice/Cargo.toml
/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/Cargo.toml
/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/Cargo.toml
/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/Cargo.toml
/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/packetizer/packetizer_test.rs
/webrtc/sctp/Cargo.toml
association/association_internal/association_internal_test.rs
association/association_test.rs
chunk/chunk_test.rs
param/param_test.rs
queue/queue_test.rs
stream/stream_test.rs
timer/timer_test.rs
/webrtc/sdp/src/extmap/extmap_test.rs
/webrtc/srtp/Cargo.toml
/webrtc/srtp/src/cipher/cipher_aead_aes_gcm.rs
/webrtc/srtp/src/cipher/cipher_aes_cm_hmac_sha1.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/Cargo.toml
/webrtc/turn/benches/bench.rs
/webrtc/util/Cargo.toml
/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/Cargo.toml
/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
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 ...

225cec0302-Jan-2023 Moritz Borcherding <[email protected]>

sctp: improve payload queue push performance (#365)

As discussed in #360 Gathering packets to send is a big chunk of the work the Association::write_loop is doing while in a critical section.

Thi

sctp: improve payload queue push performance (#365)

As discussed in #360 Gathering packets to send is a big chunk of the work the Association::write_loop is doing while in a critical section.

This PR improves the performance of this by making the payload queue more performant to push to.

Previously this did a full mergesort (O(n*log(n))) on all the in-flight TSNs, now it does a binary search (O(log(n)))

show more ...

58b4febc02-Jan-2023 Moritz Borcherding <[email protected]>

sctp: optimize packet marshalling (#364)

As discussed in #360 the marshalling code has become a bottle neck in high bandwidth sending situations. I found two places that had a big effect on the perf

sctp: optimize packet marshalling (#364)

As discussed in #360 the marshalling code has become a bottle neck in high bandwidth sending situations. I found two places that had a big effect on the performance, the hot path for this situation is marshalling packets with exactly one data chunk in them.

After this PR the marshalling is largely dominated by the CRC32 calculation which is... not easy to speed up.

show more ...

0f98498502-Jan-2023 Moritz Borcherding <[email protected]>

sctp: reduce AI lock contention (#363)

As discussed in #360 the lock on the internal association is very contended in high send-bandwidth situations. This PR achieves two things:

1. Pull the mars

sctp: reduce AI lock contention (#363)

As discussed in #360 the lock on the internal association is very contended in high send-bandwidth situations. This PR achieves two things:

1. Pull the marshalling of packets outside of the critical section thus reducing the time the lock is taken by the write loop
2. Schedule the marshalling and sending as a new tokio::task::Task which makes tokio schedule this on another thread allowing the read loop to make progress in parallel while the write loop is working on that
This in itself does not really increase the bandwidth but with improvements to the marshalling code itself gains can be head now, that were previously (at least partially) blocked by the lock contention.

It should also improve situations where both sides send a lot of data because then the write and read loops would both be very busy and fighting for the lock even more.

show more ...

630c46fe19-Dec-2022 Hugo Tunius <[email protected]>

Fix clippy for rust 1.66 (#369)


/webrtc/data/CHANGELOG.md
/webrtc/data/Cargo.toml
/webrtc/dtls/CHANGELOG.md
/webrtc/dtls/Cargo.toml
/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/CHANGELOG.md
/webrtc/ice/Cargo.toml
/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/rtp/CHANGELOG.md
/webrtc/rtp/Cargo.toml
/webrtc/rtp/src/codecs/h264/mod.rs
/webrtc/sctp/CHANGELOG.md
/webrtc/sctp/Cargo.toml
association/association_internal.rs
timer/rtx_timer.rs
/webrtc/sdp/CHANGELOG.md
/webrtc/sdp/Cargo.toml
/webrtc/sdp/src/description/session.rs
/webrtc/srtp/CHANGELOG.md
/webrtc/srtp/Cargo.toml
/webrtc/srtp/src/option.rs
/webrtc/stun/CHANGELOG.md
/webrtc/stun/Cargo.toml
/webrtc/stun/benches/bench.rs
/webrtc/stun/examples/stun_client.rs
/webrtc/stun/src/client.rs
/webrtc/turn/CHANGELOG.md
/webrtc/turn/Cargo.toml
/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/util/CHANGELOG.md
/webrtc/util/Cargo.toml
/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
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 ...


/webrtc/data/CHANGELOG.md
/webrtc/data/Cargo.toml
/webrtc/data/src/data_channel/data_channel_test.rs
/webrtc/data/src/data_channel/mod.rs
/webrtc/dtls/CHANGELOG.md
/webrtc/dtls/Cargo.toml
/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/media/src/io/sample_builder/mod.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
association/association_internal/association_internal_test.rs
association/association_test.rs
stream/mod.rs
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_sample.rs
/webrtc/webrtc/src/track/track_local/track_local_static_test.rs

12