Skip to content

Commit b1403c8

Browse files
committed
Add UT
1 parent 0c2aee3 commit b1403c8

File tree

2 files changed

+43
-2
lines changed

2 files changed

+43
-2
lines changed

source/FreeRTOS_TCP_State_Handling.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@
607607
/* This action is necessary to ensure proper handling of any subsequent packets that
608608
* may arrive after the refused FIN packet. Note that we only update it when the sequence
609609
* of FIN packet is correct. Otherwise, we wait for re-transmission. */
610-
if( lDistance == 1 )
610+
if( lDistance <= 1 )
611611
{
612612
pxTCPWindow->rx.ulCurrentSequenceNumber = pxTCPWindow->rx.ulFINSequenceNumber + 1U;
613613
}

test/unit-test/FreeRTOS_TCP_State_Handling/FreeRTOS_TCP_State_Handling_utest.c

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,47 @@ void test_prvHandleEstablished_FINNotSentRXComplete( void )
821821
TEST_ASSERT_EQUAL( 40, xSendLength );
822822
}
823823

824+
/**
825+
* @brief Data left for receiving when receiving TCP packet with FIN/ACK.
826+
*/
827+
void test_prvHandleEstablished_FINNotSentRXNotCompleteNotExpectedSeq( void )
828+
{
829+
BaseType_t xSendLength = 0;
830+
831+
pxSocket = &xSocket;
832+
833+
pxNetworkBuffer = &xNetworkBuffer;
834+
pxNetworkBuffer->pucEthernetBuffer = ucEthernetBuffer;
835+
836+
/* Map the buffer onto the ProtocolHeader_t struct for easy access to the fields. */
837+
ProtocolHeaders_t * pxProtocolHeaders = ( ( ProtocolHeaders_t * )
838+
&( pxNetworkBuffer->pucEthernetBuffer[ ipSIZE_OF_ETH_HEADER + ipSIZE_OF_IPv4_HEADER ] ) );
839+
TCPHeader_t * pxTCPHeader = &pxProtocolHeaders->xTCPHeader;
840+
TCPWindow_t * pxTCPWindow = &pxSocket->u.xTCP.xTCPWindow;
841+
842+
ulCalled = 0;
843+
pxTCPHeader->ucTCPFlags = tcpTCP_FLAG_FIN | tcpTCP_FLAG_ACK;
844+
pxTCPHeader->ulSequenceNumber = FreeRTOS_htonl( 1502 );
845+
pxTCPHeader->usWindow = 1000;
846+
pxSocket->u.xTCP.txStream = ( StreamBuffer_t * ) 0x12345678;
847+
pxSocket->u.xTCP.pxHandleSent = NULL;
848+
pxSocket->u.xTCP.bits.bFinSent = pdFALSE;
849+
pxTCPWindow->rx.ulCurrentSequenceNumber = 1500;
850+
851+
uxIPHeaderSizeSocket_IgnoreAndReturn( ipSIZE_OF_IPv4_HEADER );
852+
ulTCPWindowTxAck_ExpectAnyArgsAndReturn( 0 );
853+
prvTCPAddTxData_ExpectAnyArgs();
854+
xTCPWindowRxEmpty_ExpectAnyArgsAndReturn( pdFALSE );
855+
xTCPWindowTxDone_ExpectAnyArgsAndReturn( pdTRUE );
856+
prvTCPPrepareSend_ExpectAnyArgsAndReturn( 0 );
857+
858+
xSendLength = prvHandleEstablished( pxSocket,
859+
&pxNetworkBuffer,
860+
0,
861+
0 );
862+
TEST_ASSERT_EQUAL( 0, xSendLength );
863+
}
864+
824865
/**
825866
* @brief Data left for receiving when receiving TCP packet with FIN/ACK.
826867
*/
@@ -846,7 +887,7 @@ void test_prvHandleEstablished_FINNotSentRXNotComplete( void )
846887
pxSocket->u.xTCP.txStream = ( StreamBuffer_t * ) 0x12345678;
847888
pxSocket->u.xTCP.pxHandleSent = NULL;
848889
pxSocket->u.xTCP.bits.bFinSent = pdFALSE;
849-
pxTCPWindow->rx.ulCurrentSequenceNumber = 2501;
890+
pxTCPWindow->rx.ulCurrentSequenceNumber = 1500;
850891

851892
uxIPHeaderSizeSocket_IgnoreAndReturn( ipSIZE_OF_IPv4_HEADER );
852893
ulTCPWindowTxAck_ExpectAnyArgsAndReturn( 0 );

0 commit comments

Comments
 (0)