[Bugfix][API-1122][DATA] Report IP address even after deactivation status is disconnected
Change-Id: I82a9b1988b68c586e6e64b21ebc58a10583fb2f9
(cherry picked from commit 9450376a32a1a48ea20e19ab6e7281cd4eeb5300)
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
index bbb8790..8222aaf 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.cpp
@@ -75,6 +75,7 @@
int RpDataController::s_dataSetting_resend[MAX_SIM_COUNT][DATA_SETTING_NUMBERS];
RpDataController* RpDataController::sInstance[4] = {NULL};
+Mutex m_mutex[MAX_SIM_COUNT];
#include <string>
using namespace std;
@@ -497,7 +498,7 @@
RFX_LOG_E(RFX_LOG_TAG, "[%s][%d] sim_ps_id[%d] NULL dataController", __FUNCTION__, __LINE__ ,sim_ps_id);
return;
}
-
+ m_mutex[sim_ps_id - 1].lock();
RmcDcPdnManager* pPdnManager = dataController->m_pPdnManager;
if (pPdnManager == NULL){
@@ -515,6 +516,7 @@
dataController->sendDataCallListResponse(result_ptr->id);
pPdnManager->clearPdnInfo(result_ptr->id);
}
+ m_mutex[sim_ps_id - 1].unlock();
}
@@ -705,7 +707,7 @@
RFX_ASSERT(m_pPdnManager != NULL);
}
}
- RFX_LOG_D(RFX_LOG_TAG, "%s %d m_pPdnManager[%p]", __FUNCTION__, __LINE__, m_pPdnManager);
+ //RFX_LOG_D(RFX_LOG_TAG, "%s %d m_pPdnManager[%p]", __FUNCTION__, __LINE__, m_pPdnManager);
return m_pPdnManager ;
}
@@ -1381,7 +1383,7 @@
goto error;
}
-
+ m_mutex[rid].lock();
for (int i = 0; i < nPdnInfoSize; i++) {
if ((getPdnManager()->getPdnActiveStatus(i) == DATA_STATE_ACTIVE) &&
(getPdnManager()->getTransIntfId(i) != INVALID_TRANS_INTF_ID) &&
@@ -1390,7 +1392,7 @@
vTransIntfIdList.push_back(getPdnManager()->getTransIntfId(i));
}
}
-
+ m_mutex[rid].unlock();
if (vTransIntfIdList.size() > 0) {
RFX_LOG_D(RFX_LOG_TAG, "[%d][%s] active trans-interface number is %zu",
rid, __FUNCTION__, vTransIntfIdList.size());
diff --git a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
index 88d6d22..4a1fc60 100755
--- a/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
+++ b/src/telephonyware/3.0/hardware/ril/fusion/libril/rilmipc/telephony/data/RpDataController.h
@@ -48,6 +48,10 @@
#include <utils/Vector.h>
+#include "utils/Mutex.h"
+
+using ::android::Mutex;
+
#define DATA_SETTING_NUMBERS 5