summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CORE/SME/src/csr/csrApiRoam.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/CORE/SME/src/csr/csrApiRoam.c b/CORE/SME/src/csr/csrApiRoam.c
index e2dd8557cef8..b59ce7c417e5 100644
--- a/CORE/SME/src/csr/csrApiRoam.c
+++ b/CORE/SME/src/csr/csrApiRoam.c
@@ -6729,22 +6729,36 @@ static tANI_BOOLEAN csrRoamProcessResults( tpAniSirGlobal pMac, tSmeCmd *pComman
case eCsrForcedDisassocSta:
case eCsrForcedDeauthSta:
csrRoamStateChange( pMac, eCSR_ROAMING_STATE_JOINED, sessionId);
- if( CSR_IS_SESSION_VALID(pMac, sessionId) )
+ pSession = CSR_GET_SESSION(pMac, sessionId);
+ if(pSession)
{
- pSession = CSR_GET_SESSION(pMac, sessionId);
-
- if ( CSR_IS_INFRA_AP(&pSession->connectedProfile) )
- {
- roamInfo.u.pConnectedProfile = &pSession->connectedProfile;
- vos_mem_copy(roamInfo.peerMac,
+ if( CSR_IS_SESSION_VALID(pMac, sessionId) )
+ {
+ if ( CSR_IS_INFRA_AP(&pSession->connectedProfile) )
+ {
+ roamInfo.u.pConnectedProfile =
+ &pSession->connectedProfile;
+ vos_mem_copy(roamInfo.peerMac,
pCommand->u.roamCmd.peerMac,
sizeof(tSirMacAddr));
- roamInfo.reasonCode = eCSR_ROAM_RESULT_FORCED;
- roamInfo.statusCode = eSIR_SME_SUCCESS;
- status = csrRoamCallCallback(pMac, sessionId,
+ roamInfo.reasonCode = eCSR_ROAM_RESULT_FORCED;
+ roamInfo.statusCode = eSIR_SME_SUCCESS;
+ status = csrRoamCallCallback(pMac, sessionId,
&roamInfo, pCommand->u.roamCmd.roamId,
eCSR_ROAM_LOSTLINK, eCSR_ROAM_RESULT_FORCED);
- }
+ }
+ }
+ else
+ {
+ smsLog(pMac, LOGE, FL("Inactive sessionId %d"),
+ sessionId);
+ return eHAL_STATUS_FAILURE;
+ }
+ }
+ else
+ {
+ smsLog(pMac, LOGE, FL("Invalid session"));
+ return eHAL_STATUS_FAILURE;
}
break;
case eCsrLostLink1: