diff options
author | Martijn Coenen <maco@google.com> | 2013-03-05 17:17:20 -0800 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2013-03-05 17:32:58 -0800 |
commit | 837efc3194a03beaaa32b370c63a9270ed9664d8 (patch) | |
tree | 884477a467dc78a5e1658b7a437a35c98c3e324e | |
parent | 7c4b4fadb66959c50c170182847886e83393eebf (diff) | |
download | libnfc-nxp-837efc3194a03beaaa32b370c63a9270ed9664d8.tar.gz |
Fix wrong callback being cleared.
When a call to disconnect() failed, the
connect() callback was cleared, not the
disconnect() one. This would cause deadlocks,
where JNI threads were forever blocked on
doConnect().
Bug: 7324226
Change-Id: I784c8d700c87d643315f2417610ca75ef8f9aa7c
-rw-r--r-- | src/phFriNfc_LlcpTransport.c | 2 | ||||
-rw-r--r-- | src/phFriNfc_LlcpTransport.h | 2 | ||||
-rw-r--r-- | src/phFriNfc_LlcpTransport_Connection.c | 12 | ||||
-rw-r--r-- | src/phFriNfc_LlcpTransport_Connectionless.c | 2 |
4 files changed, 9 insertions, 9 deletions
diff --git a/src/phFriNfc_LlcpTransport.c b/src/phFriNfc_LlcpTransport.c index b3aee54..447eae6 100644 --- a/src/phFriNfc_LlcpTransport.c +++ b/src/phFriNfc_LlcpTransport.c @@ -687,7 +687,7 @@ NFCSTATUS phFriNfc_LlcpTransport_Reset (phFriNfc_LlcpTransport_t *pLlcpTran pLlcpTransport->pSocketTable[i].pAcceptContext = NULL; pLlcpTransport->pSocketTable[i].pRejectContext = NULL; pLlcpTransport->pSocketTable[i].pConnectContext = NULL; - pLlcpTransport->pSocketTable[i].pDisonnectContext = NULL; + pLlcpTransport->pSocketTable[i].pDisconnectContext = NULL; pLlcpTransport->pSocketTable[i].pSendContext = NULL; pLlcpTransport->pSocketTable[i].pRecvContext = NULL; pLlcpTransport->pSocketTable[i].pSocketErrCb = NULL; diff --git a/src/phFriNfc_LlcpTransport.h b/src/phFriNfc_LlcpTransport.h index 2bb0eac..2f83439 100644 --- a/src/phFriNfc_LlcpTransport.h +++ b/src/phFriNfc_LlcpTransport.h @@ -225,7 +225,7 @@ struct phFriNfc_LlcpTransport_Socket void *pAcceptContext; void *pRejectContext; void *pConnectContext; - void *pDisonnectContext; + void *pDisconnectContext; void *pSendContext; void *pRecvContext; void *pContext; diff --git a/src/phFriNfc_LlcpTransport_Connection.c b/src/phFriNfc_LlcpTransport_Connection.c index d23398f..4f7badf 100644 --- a/src/phFriNfc_LlcpTransport_Connection.c +++ b/src/phFriNfc_LlcpTransport_Connection.c @@ -296,10 +296,10 @@ static void phFriNfc_LlcpTransport_ConnectionOriented_Abort(phFriNfc_LlcpTranspo pLlcpSocket->pConnectContext = NULL; if (pLlcpSocket->pfSocketDisconnect_Cb != NULL) { - pLlcpSocket->pfSocketDisconnect_Cb(pLlcpSocket->pDisonnectContext, NFCSTATUS_ABORTED); + pLlcpSocket->pfSocketDisconnect_Cb(pLlcpSocket->pDisconnectContext, NFCSTATUS_ABORTED); pLlcpSocket->pfSocketDisconnect_Cb = NULL; } - pLlcpSocket->pDisonnectContext = NULL; + pLlcpSocket->pDisconnectContext = NULL; pLlcpSocket->pfSocketRecvFrom_Cb = NULL; pLlcpSocket->pfSocketListen_Cb = NULL; @@ -866,7 +866,7 @@ static void Handle_DisconnetModeFrame(phFriNfc_LlcpTransport_t *psTransport /* Call Disconnect CB */ if (psLocalLlcpSocket->pfSocketDisconnect_Cb != NULL) { - psLocalLlcpSocket->pfSocketDisconnect_Cb(psLocalLlcpSocket->pDisonnectContext,NFCSTATUS_SUCCESS); + psLocalLlcpSocket->pfSocketDisconnect_Cb(psLocalLlcpSocket->pDisconnectContext,NFCSTATUS_SUCCESS); psLocalLlcpSocket->pfSocketDisconnect_Cb = NULL; } @@ -2016,7 +2016,7 @@ NFCSTATUS phLibNfc_LlcpTransport_ConnectionOriented_Disconnect(phFriNfc_LlcpTran /* Store the Disconnect callback and context*/ pLlcpSocket->pfSocketDisconnect_Cb = pDisconnect_RspCb; - pLlcpSocket->pDisonnectContext = pContext; + pLlcpSocket->pDisconnectContext = pContext; /* Set the socket in connecting state */ pLlcpSocket->eSocket_State = phFriNfc_LlcpTransportSocket_eSocketDisconnecting; @@ -2077,8 +2077,8 @@ NFCSTATUS phLibNfc_LlcpTransport_ConnectionOriented_Disconnect(phFriNfc_LlcpTran { clearSendPending(pLlcpSocket->psTransport); LLCP_PRINT("Release Disconnect callback"); - pLlcpSocket->pfSocketConnect_Cb = NULL; - pLlcpSocket->pConnectContext = NULL; + pLlcpSocket->pfSocketDisconnect_Cb = NULL; + pLlcpSocket->pDisconnectContext = NULL; } } diff --git a/src/phFriNfc_LlcpTransport_Connectionless.c b/src/phFriNfc_LlcpTransport_Connectionless.c index 99f01bc..4b084a8 100644 --- a/src/phFriNfc_LlcpTransport_Connectionless.c +++ b/src/phFriNfc_LlcpTransport_Connectionless.c @@ -164,7 +164,7 @@ static void phFriNfc_LlcpTransport_Connectionless_Abort(phFriNfc_LlcpTransport_S pLlcpSocket->pfSocketListen_Cb = NULL; pLlcpSocket->pConnectContext = NULL; pLlcpSocket->pfSocketConnect_Cb = NULL; - pLlcpSocket->pDisonnectContext = NULL; + pLlcpSocket->pDisconnectContext = NULL; pLlcpSocket->pfSocketDisconnect_Cb = NULL; } |