From e86207c4c8c39f7c86fa031bb742cce25073d20b Mon Sep 17 00:00:00 2001 From: Hein Tibosch Date: Wed, 8 Feb 2023 12:11:39 +0800 Subject: [PATCH 1/4] Make sure that a TCP socket is closed only once --- source/FreeRTOS_TCP_IP.c | 33 ++++++++++++++++++++-------- source/include/FreeRTOS_IP_Private.h | 20 +++++++++++++---- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/source/FreeRTOS_TCP_IP.c b/source/FreeRTOS_TCP_IP.c index 7db7737267..995173573d 100644 --- a/source/FreeRTOS_TCP_IP.c +++ b/source/FreeRTOS_TCP_IP.c @@ -445,27 +445,42 @@ } } + /* Fill in the new state. */ + pxSocket->u.xTCP.eTCPState = eTCPState; + if( ( eTCPState == eCLOSED ) || ( eTCPState == eCLOSE_WAIT ) ) { /* Socket goes to status eCLOSED because of a RST. * When nobody owns the socket yet, delete it. */ - if( ( pxSocket->u.xTCP.bits.bPassQueued != pdFALSE_UNSIGNED ) || - ( pxSocket->u.xTCP.bits.bPassAccept != pdFALSE_UNSIGNED ) ) + vTaskSuspendAll(); { - FreeRTOS_debug_printf( ( "vTCPStateChange: Closing socket\n" ) ); + if( ( pxSocket->u.xTCP.bits.bPassQueued != pdFALSE_UNSIGNED ) || + ( pxSocket->u.xTCP.bits.bPassAccept != pdFALSE_UNSIGNED ) ) + { + if( pxSocket->u.xTCP.bits.bReuseSocket == pdFALSE_UNSIGNED ) + { + pxSocket->u.xTCP.bits.bPassQueued = pdFALSE_UNSIGNED; + pxSocket->u.xTCP.bits.bPassAccept = pdFALSE_UNSIGNED; + } - if( pxSocket->u.xTCP.bits.bReuseSocket == pdFALSE_UNSIGNED ) + xTaskResumeAll(); + + FreeRTOS_printf( ( "vTCPStateChange: Closing socket\n" ) ); + + if( pxSocket->u.xTCP.bits.bReuseSocket == pdFALSE_UNSIGNED ) + { + configASSERT( xIsCallingFromIPTask() != pdFALSE ); + vSocketCloseNextTime( pxSocket ); + } + } + else { - configASSERT( xIsCallingFromIPTask() != pdFALSE ); - vSocketCloseNextTime( pxSocket ); + xTaskResumeAll(); } } } - /* Fill in the new state. */ - pxSocket->u.xTCP.eTCPState = eTCPState; - if( ( eTCPState == eCLOSE_WAIT ) && ( pxSocket->u.xTCP.bits.bReuseSocket == pdTRUE_UNSIGNED ) ) { switch( xPreviousState ) diff --git a/source/include/FreeRTOS_IP_Private.h b/source/include/FreeRTOS_IP_Private.h index 411cf9cb1b..542c28b247 100644 --- a/source/include/FreeRTOS_IP_Private.h +++ b/source/include/FreeRTOS_IP_Private.h @@ -508,6 +508,20 @@ BaseType_t xIPIsNetworkTaskReady( void ); */ TickType_t xTCPTimerCheck( BaseType_t xWillSleep ); +/** + * About the TCP flags 'bPassQueued' and 'bPassAccept': + * + * When a new TCP connection request is received on a listening socket, the bPassQueued and + * bPassAccept members of the newly created socket are updated as follows: + * + * 1. bPassQueued is set to indicate that the 3-way TCP handshake is in progress. + * 2. When the 3-way TCP handshake is complete, bPassQueued is cleared. At the same time, + * bPassAccept is set to indicate that the socket is ready to be picked up by the task + * that called FreeRTOS_accept(). + * 3. When the socket is picked up by the task that called FreeRTOS_accept, the bPassAccept + * is cleared. + */ + /** * Every TCP socket has a buffer space just big enough to store * the last TCP header received. @@ -544,10 +558,8 @@ BaseType_t xIPIsNetworkTaskReady( void ); /* Most compilers do like bit-flags */ uint32_t bMssChange : 1, /**< This socket has seen a change in MSS */ - bPassAccept : 1, /**< when true, this socket may be returned in a call to accept() */ - bPassQueued : 1, /**< when true, this socket is an orphan until it gets connected - * Why an orphan? Because it may not be returned in a accept() call until it - * gets the state eESTABLISHED */ + bPassAccept : 1, /**< See comment here above. */ + bPassQueued : 1, /**< See comment here above. */ bReuseSocket : 1, /**< When a listening socket gets a connection, do not create a new instance but keep on using it */ bCloseAfterSend : 1, /**< As soon as the last byte has been transmitted, finalise the connection * Useful in e.g. FTP connections, where the last data bytes are sent along with the FIN flag */ From 82b8ffc027ba49adab668f64c19107a0658babb3 Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Fri, 10 Feb 2023 04:20:02 +0000 Subject: [PATCH 2/4] Fix failing test cases for FreeRTOS_TCP_IP unit test modules post PR#705 changes --- .../FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c | 35 +++++++++++++++++++ .../FreeRTOS_TCP_IP_DiffConfig_utest.c | 2 ++ 2 files changed, 37 insertions(+) diff --git a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c index d3afc4ac48..2aca0c306c 100644 --- a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c @@ -587,6 +587,8 @@ void test_vTCPStateChange_ClosedState( void ) memset( &xSocket, 0, sizeof( xSocket ) ); eTCPState = eCLOSED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -617,6 +619,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSyn( void ) xSocket.u.xTCP.eTCPState = eCONNECT_SYN; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -647,6 +651,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynFirst( void ) xSocket.u.xTCP.eTCPState = eSYN_FIRST; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -680,6 +686,8 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -711,6 +719,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynRecvd( void ) xSocket.u.xTCP.eTCPState = eSYN_RECEIVED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -738,6 +748,8 @@ void test_vTCPStateChange_ClosedWaitState( void ) memset( &xSocket, 0, sizeof( xSocket ) ); eTCPState = eCLOSE_WAIT; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -769,6 +781,9 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask( void ) xSocket.u.xTCP.bits.bPassQueued = pdTRUE_UNSIGNED; + + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -801,6 +816,8 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask( void ) xSocket.u.xTCP.bits.bPassQueued = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -821,6 +838,8 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -851,6 +870,8 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -872,6 +893,8 @@ void test_vTCPStateChange_ClosedWaitState_ReuseSocket( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -946,6 +969,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketInactive( void ) xTCPWindowLoggingLevel = 2; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, 0 ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -991,6 +1016,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive( void ) xHandleConnectedLength = 0; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1036,6 +1063,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive_SelectExcept( vo xHandleConnectedLength = 0; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1685,6 +1714,9 @@ void test_xProcessReceivedTCPPacket_ConnectSyn_State_Rst_Change_State( void ) pxTCPSocketLookup_ExpectAnyArgsAndReturn( pxSocket ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); + xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); @@ -1768,6 +1800,9 @@ void test_xProcessReceivedTCPPacket_Establish_State_Rst_Change_State( void ) pxTCPSocketLookup_ExpectAnyArgsAndReturn( pxSocket ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); + xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); diff --git a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c index f8a5babebb..900252ecfa 100644 --- a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c @@ -163,6 +163,8 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); From ef720590923d4a7848a57568fb970f1af84e3381 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 10 Feb 2023 10:08:53 +0000 Subject: [PATCH 3/4] Uncrustify: triggered by comment. --- .../FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c | 34 +++++++++---------- .../FreeRTOS_TCP_IP_DiffConfig_utest.c | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c index 2aca0c306c..dbee39fd2c 100644 --- a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c @@ -588,7 +588,7 @@ void test_vTCPStateChange_ClosedState( void ) eTCPState = eCLOSED; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -620,7 +620,7 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSyn( void ) prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -652,7 +652,7 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynFirst( void ) prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -687,7 +687,7 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -720,7 +720,7 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynRecvd( void ) prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -749,7 +749,7 @@ void test_vTCPStateChange_ClosedWaitState( void ) eTCPState = eCLOSE_WAIT; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -783,7 +783,7 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask( void ) vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -817,7 +817,7 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask( void ) xSocket.u.xTCP.bits.bPassQueued = pdTRUE_UNSIGNED; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -839,7 +839,7 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -871,7 +871,7 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -894,7 +894,7 @@ void test_vTCPStateChange_ClosedWaitState_ReuseSocket( void ) xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -970,7 +970,7 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketInactive( void ) prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, 0 ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1017,7 +1017,7 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive( void ) prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1064,7 +1064,7 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive_SelectExcept( vo prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1715,7 +1715,7 @@ void test_xProcessReceivedTCPPacket_ConnectSyn_State_Rst_Change_State( void ) pxTCPSocketLookup_ExpectAnyArgsAndReturn( pxSocket ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); @@ -1801,8 +1801,8 @@ void test_xProcessReceivedTCPPacket_Establish_State_Rst_Change_State( void ) prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); - + xTaskResumeAll_ExpectAndReturn( 0 ); + xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); diff --git a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c index 900252ecfa..84f62cfad8 100644 --- a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c @@ -164,7 +164,7 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); vTaskSuspendAll_Expect(); - xTaskResumeAll_ExpectAndReturn(0); + xTaskResumeAll_ExpectAndReturn( 0 ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); From 185b95b3ab8e329fa647a0db8ea73bc20640efc2 Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Fri, 10 Feb 2023 04:20:02 +0000 Subject: [PATCH 4/4] Fix failing test cases for FreeRTOS_TCP_IP unit test modules post PR - 705 changes --- .../FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c | 35 +++++++++++++++++++ .../FreeRTOS_TCP_IP_DiffConfig_utest.c | 2 ++ 2 files changed, 37 insertions(+) diff --git a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c index d3afc4ac48..2aca0c306c 100644 --- a/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP/FreeRTOS_TCP_IP_utest.c @@ -587,6 +587,8 @@ void test_vTCPStateChange_ClosedState( void ) memset( &xSocket, 0, sizeof( xSocket ) ); eTCPState = eCLOSED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -617,6 +619,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSyn( void ) xSocket.u.xTCP.eTCPState = eCONNECT_SYN; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -647,6 +651,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynFirst( void ) xSocket.u.xTCP.eTCPState = eSYN_FIRST; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -680,6 +686,8 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -711,6 +719,8 @@ void test_vTCPStateChange_ClosedWaitState_PrvStateSynRecvd( void ) xSocket.u.xTCP.eTCPState = eSYN_RECEIVED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -738,6 +748,8 @@ void test_vTCPStateChange_ClosedWaitState( void ) memset( &xSocket, 0, sizeof( xSocket ) ); eTCPState = eCLOSE_WAIT; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -769,6 +781,9 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask( void ) xSocket.u.xTCP.bits.bPassQueued = pdTRUE_UNSIGNED; + + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -801,6 +816,8 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask( void ) xSocket.u.xTCP.bits.bPassQueued = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -821,6 +838,8 @@ void test_vTCPStateChange_ClosedWaitState_CallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdTRUE ); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); @@ -851,6 +870,8 @@ void test_vTCPStateChange_ClosedWaitState_NotCallingFromIPTask1( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xIsCallingFromIPTask_ExpectAndReturn( pdFALSE ); catch_assert( vTCPStateChange( &xSocket, eTCPState ) ); @@ -872,6 +893,8 @@ void test_vTCPStateChange_ClosedWaitState_ReuseSocket( void ) xSocket.u.xTCP.bits.bPassAccept = pdTRUE_UNSIGNED; xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -946,6 +969,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketInactive( void ) xTCPWindowLoggingLevel = 2; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, 0 ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -991,6 +1016,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive( void ) xHandleConnectedLength = 0; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1036,6 +1063,8 @@ void test_vTCPStateChange_EstablishedToClosedState_SocketActive_SelectExcept( vo xHandleConnectedLength = 0; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive ); @@ -1685,6 +1714,9 @@ void test_xProcessReceivedTCPPacket_ConnectSyn_State_Rst_Change_State( void ) pxTCPSocketLookup_ExpectAnyArgsAndReturn( pxSocket ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); + xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); @@ -1768,6 +1800,9 @@ void test_xProcessReceivedTCPPacket_Establish_State_Rst_Change_State( void ) pxTCPSocketLookup_ExpectAnyArgsAndReturn( pxSocket ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); prvTCPSocketIsActive_ExpectAnyArgsAndReturn( pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); + xTaskGetTickCount_ExpectAndReturn( 1000 ); xTaskGetTickCount_ExpectAndReturn( 1500 ); diff --git a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c index f8a5babebb..900252ecfa 100644 --- a/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c +++ b/test/unit-test/FreeRTOS_TCP_IP_DiffConfig/FreeRTOS_TCP_IP_DiffConfig_utest.c @@ -163,6 +163,8 @@ void test_vTCPStateChange_ClosedWaitState_CurrentStateSynFirstNextStateCloseWait xSocket.u.xTCP.bits.bReuseSocket = pdTRUE_UNSIGNED; prvTCPSocketIsActive_ExpectAndReturn( xSocket.u.xTCP.eTCPState, pdTRUE ); + vTaskSuspendAll_Expect(); + xTaskResumeAll_ExpectAndReturn(0); xTaskGetTickCount_ExpectAndReturn( xTickCountAck ); xTaskGetTickCount_ExpectAndReturn( xTickCountAlive );