Ignore internal transport packets in DatagramConnection

Prevent DatagramConnection from forwarding internal and post-handshake
packets (such as BoringSSL session tickets, DTLS handshakes, or STUN
connectivity checks) to the OnSendOutcome observer. These internal
packets are assigned a default packet ID of -1, signaling that they
are not user-initiated data.

This could cause the following error:

[ RUN ]
DatagramConnectionTest.RtpPacketsAreSent
../../pc/datagram_connection_unittest.cc:219: Failure Mock function
called more times than expected - returning directly.
    Function call: OnSendOutcome
         Expected: to be called once
           Actual: called twice - over-saturated and active
[ FAILED ] DatagramConnectionTest.RtpPacketsAreSent (108 ms)

Additionally, update the `Observer::SendOutcome` initialization in
OnSentPacket and DispatchSendOutcome to use structured initialization,
and Add a fallback to Timestamp::MinusInfinity() and avoid setting the
timestamp to -1ms.

Bug: none
Change-Id: I6576110ec5f9aa620b8870d3f6db963d1f5e2bbd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/477140
Auto-Submit: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Tony Herre <herre@google.com>
Cr-Commit-Position: refs/heads/main@{#47862}
2 files changed
tree: 513e74259a8432f047697086bad86e74e8c22a97
  1. .agents/
  2. agents/
  3. api/
  4. audio/
  5. build_overrides/
  6. call/
  7. common_audio/
  8. common_video/
  9. data/
  10. docs/
  11. examples/
  12. experiments/
  13. g3doc/
  14. infra/
  15. logging/
  16. media/
  17. modules/
  18. net/
  19. p2p/
  20. pc/
  21. resources/
  22. rtc_base/
  23. rtc_tools/
  24. rust/
  25. sdk/
  26. stats/
  27. system_wrappers/
  28. test/
  29. tools_webrtc/
  30. video/
  31. .clang-format
  32. .clang-tidy
  33. .git-blame-ignore-revs
  34. .gitignore
  35. .gn
  36. .mailmap
  37. .rustfmt.toml
  38. .style.yapf
  39. .vpython3
  40. .yapfignore
  41. AUTHORS
  42. BUILD.gn
  43. CODE_OF_CONDUCT.md
  44. codereview.settings
  45. DEPS
  46. DIR_METADATA
  47. ENG_REVIEW_OWNERS
  48. GEMINI.md
  49. LICENSE
  50. license_template.txt
  51. native-api.md
  52. OWNERS
  53. OWNERS_INFRA
  54. PATENTS
  55. PRESUBMIT.py
  56. presubmit_test.py
  57. presubmit_test_mocks.py
  58. pylintrc
  59. pylintrc_old_style
  60. README.chromium
  61. README.md
  62. unsafe_buffers_paths.txt
  63. WATCHLISTS
  64. webrtc.gni
  65. webrtc_lib_link_test.cc
  66. whitespace.txt
README.md

WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.

Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.

The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.

Development

See here for instructions on how to get started developing with the native code.

Authoritative list of directories that contain the native API header files.

More info