)]}'
{
  "commit": "faf376cd7debfd3d36dda3c91e3fbe1cd43e3610",
  "tree": "92b1d08f50c6ba3fd49a088243b4225034d397ff",
  "parents": [
    "4aa2535add92fe826f766a6c95580548a105bd7d"
  ],
  "author": {
    "name": "Jonas Oreland",
    "email": "jonaso@webrtc.org",
    "time": "Fri Apr 01 11:57:05 2022"
  },
  "committer": {
    "name": "WebRTC LUCI CQ",
    "email": "webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Apr 01 13:16:26 2022"
  },
  "message": "Implement IsAdapterAvailable in AndroidNetworkMonitor\n\nThis cl/ fixes a race condition with the recent additions\nto NetworkMonitorAutoDetect (getAllNetworksFromCache).\n\nThe getAllNetworksFromCache-feature uses the by the Android team preferred way of\nenumerating networks, i.e to register network listeners.\n\nThis however introduces a unpleasant race condition like this:\n1) network.cc discover rmnet0\n2) BasicPortAllocator tries to create UDP port on rmnet0\n- This fails as BindSocketToNetwork requires a android handle.\n3) NetworkMonitorAutoDetect gets callback with rmnet0\n4) BasicPortAllocator tries to create TCP port on rmnet0\n- This succeeds.\n5) Since rmnet0 has one working port, there will not be\nany new ports created on that network\n\n\u003d\u003e We end up with a TCP only connection :(\n\n---\n\nBy impl. IsAdapterAvailable, we make sure that the network\nwill not be used by BasicPortAllocator (or anyone else!)\nuntil we support binding to it.\n\nThe IsAdapterAvailable was implemented for IOS,\nand has test coverage using FakeNetworkManager.\n\nThis cl/ is default enabled with the kill-switch\nWebRTC-AndroidNetworkMonitor-IsAdapterAvailable.\n\nBug: webrtc:13741\nChange-Id: I7c2cb7789660fd2e082c214d00e50c894666b07c\nReviewed-on: https://webrtc-review.googlesource.com/c/src/+/257400\nReviewed-by: Harald Alvestrand \u003chta@webrtc.org\u003e\nCommit-Queue: Jonas Oreland \u003cjonaso@webrtc.org\u003e\nCr-Commit-Position: refs/heads/main@{#36406}\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8b4bf57ee77bc0de52c5c7d411c2f3a0048d056a",
      "old_mode": 33188,
      "old_path": "p2p/client/basic_port_allocator.cc",
      "new_id": "a62b9bc5d5bd682dfa4b71fc25cf3e8e8653edc1",
      "new_mode": 33188,
      "new_path": "p2p/client/basic_port_allocator.cc"
    },
    {
      "type": "modify",
      "old_id": "754267da83e0cde344bac6a57c764ed88428df0e",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/android_network_monitor.cc",
      "new_id": "67206c850568472f40517fcf8f234364af34e0ee",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/android_network_monitor.cc"
    },
    {
      "type": "modify",
      "old_id": "60615bb360639b2ebd78bf76f79bf643af7d86b6",
      "old_mode": 33188,
      "old_path": "sdk/android/src/jni/android_network_monitor.h",
      "new_id": "a7cb766c0cb5cb9ebd10be3f2f098f711e170873",
      "new_mode": 33188,
      "new_path": "sdk/android/src/jni/android_network_monitor.h"
    }
  ]
}
