| Index: webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.cc
|
| diff --git a/webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.cc b/webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.cc
|
| index 4b3144efcbb553608f5825088e7bbbe4737174b5..83caac2467924027447ae931f10fbbbff366e20e 100644
|
| --- a/webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.cc
|
| +++ b/webrtc/sdk/android/src/jni/androidnetworkmonitor_jni.cc
|
| @@ -240,13 +240,18 @@ rtc::NetworkBindingResult AndroidNetworkMonitor::BindSocketToNetwork(
|
| int socket_fd,
|
| const rtc::IPAddress& address) {
|
| RTC_CHECK(thread_checker_.CalledOnValidThread());
|
| +
|
| + jmethodID network_binding_supported_id = GetMethodID(
|
| + jni(), *j_network_monitor_class_, "networkBindingSupported", "()Z");
|
| // Android prior to Lollipop didn't have support for binding sockets to
|
| - // networks. In that case it should not have reached here because
|
| - // |network_handle_by_address_| is only populated in Android Lollipop
|
| - // and above.
|
| - if (android_sdk_int_ < SDK_VERSION_LOLLIPOP) {
|
| - LOG(LS_ERROR) << "BindSocketToNetwork is not supported in Android SDK "
|
| - << android_sdk_int_;
|
| + // networks. This may also occur if there is no connectivity manager service.
|
| + bool network_binding_supported = jni()->CallBooleanMethod(
|
| + *j_network_monitor_, network_binding_supported_id);
|
| + CHECK_EXCEPTION(jni())
|
| + << "Error during NetworkMonitor.networkBindingSupported";
|
| + if (!network_binding_supported) {
|
| + LOG(LS_WARNING) << "BindSocketToNetwork is not supported on this platform "
|
| + << "(Android SDK: " << android_sdk_int_ << ")";
|
| return rtc::NetworkBindingResult::NOT_IMPLEMENTED;
|
| }
|
|
|
|
|