From 04f25b3ab4ed13edb3ffc8e7354bca9f7bc60b44 Mon Sep 17 00:00:00 2001 From: Sylvain Fonteneau Date: Tue, 2 Nov 2010 16:27:30 -0500 Subject: Enable reading a connection-oriented socket even if remotely closed. The receive function was failing when trying to read the data present in the linear buffer after receiving a remote disconnection request (DISC). Change-Id: I48a2aa058e85e265ca53e61dcde281e47a6e187f --- src/phFriNfc_LlcpTransport_Connection.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/phFriNfc_LlcpTransport_Connection.c') diff --git a/src/phFriNfc_LlcpTransport_Connection.c b/src/phFriNfc_LlcpTransport_Connection.c index 4b89bbb..2056f45 100644 --- a/src/phFriNfc_LlcpTransport_Connection.c +++ b/src/phFriNfc_LlcpTransport_Connection.c @@ -2680,6 +2680,13 @@ NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Recv( phFriNfc_LlcpTransport /* Test if the WorkingBuffer Length is null */ if(pLlcpSocket->bufferLinearLength == 0) { + if (pLlcpSocket->eSocket_State != phFriNfc_LlcpTransportSocket_eSocketConnected) + { + /* Call the Receive CB */ + pRecv_RspCb(pContext,NFCSTATUS_FAILED); + return NFCSTATUS_SUCCESS; + } + /* Test If data is present in the RW Buffer */ if(pLlcpSocket->indexRwRead != pLlcpSocket->indexRwWrite) { @@ -2805,6 +2812,13 @@ NFCSTATUS phFriNfc_LlcpTransport_ConnectionOriented_Recv( phFriNfc_LlcpTransport } else { + if (pLlcpSocket->eSocket_State != phFriNfc_LlcpTransportSocket_eSocketConnected) + { + /* Call the Receive CB */ + pRecv_RspCb(pContext,NFCSTATUS_FAILED); + return NFCSTATUS_SUCCESS; + } + /* Set Receive pending */ pLlcpSocket->bSocketRecvPending = TRUE; -- cgit v1.1