diff options
| author | 2022-05-12 17:28:16 +0000 | |
|---|---|---|
| committer | 2022-05-12 17:28:16 +0000 | |
| commit | db6650eb07a8afa9d75a4f15fa80c9a99ba8fff1 (patch) | |
| tree | 8941ed5388ea2a86f398c729a0fa0bf16e9f3178 | |
| parent | a0ca2766e7ba2ee13bd7d1939f1b2e0b8e7cea7a (diff) | |
| parent | d68034d60f1fa8a3c714ae6491db5405891f8077 (diff) | |
Merge "Handle TooManyRequestsException" into tm-dev
| -rw-r--r-- | services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java index 718f98a0f04b..70b86898c24b 100644 --- a/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java +++ b/services/core/java/com/android/server/location/gnss/GnssNetworkConnectivityHandler.java @@ -200,7 +200,7 @@ class GnssNetworkConnectivityHandler { mHandler = new Handler(looper); mNiHandler = niHandler; mConnMgr = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); - mSuplConnectivityCallback = createSuplConnectivityCallback(); + mSuplConnectivityCallback = null; } /** @@ -584,11 +584,21 @@ class GnssNetworkConnectivityHandler { networkRequestBuilder.setNetworkSpecifier(Integer.toString(mActiveSubId)); } NetworkRequest networkRequest = networkRequestBuilder.build(); - mConnMgr.requestNetwork( - networkRequest, - mSuplConnectivityCallback, - mHandler, - SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS); + // Make sure we only have a single request. + if (mSuplConnectivityCallback != null) { + mConnMgr.unregisterNetworkCallback(mSuplConnectivityCallback); + } + mSuplConnectivityCallback = createSuplConnectivityCallback(); + try { + mConnMgr.requestNetwork( + networkRequest, + mSuplConnectivityCallback, + mHandler, + SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS); + } catch (RuntimeException e) { + Log.e(TAG, "Failed to request network.", e); + handleReleaseSuplConnection(GPS_AGPS_DATA_CONN_FAILED); + } } private int getNetworkCapability(int agpsType) { @@ -619,7 +629,10 @@ class GnssNetworkConnectivityHandler { } mAGpsDataConnectionState = AGPS_DATA_CONNECTION_CLOSED; - mConnMgr.unregisterNetworkCallback(mSuplConnectivityCallback); + if (mSuplConnectivityCallback != null) { + mConnMgr.unregisterNetworkCallback(mSuplConnectivityCallback); + mSuplConnectivityCallback = null; + } switch (agpsDataConnStatus) { case GPS_AGPS_DATA_CONN_FAILED: native_agps_data_conn_failed(); |