]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-TCP/FreeRTOS_DHCP.c
Update trace recorder code.
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-TCP / FreeRTOS_DHCP.c
index 6fb30226b251b56f3e0bce90501d5ee0f88e8848..8ce9e8e92dffb6c5b1d1dfd1e3bb96189fae717e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
- * FreeRTOS+TCP V2.0.1\r
+ * FreeRTOS+TCP V2.0.3\r
  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
  *\r
  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
  *\r
- * http://www.FreeRTOS.org\r
  * http://aws.amazon.com/freertos\r
- *\r
- * 1 tab == 4 spaces!\r
+ * http://www.FreeRTOS.org\r
  */\r
 \r
 /* Standard includes. */\r
@@ -597,15 +595,19 @@ static void prvInitialiseDHCP( void )
                xDHCPData.ulTransactionId++;\r
        }\r
 \r
-       xDHCPData.xUseBroadcast = 0;\r
-       xDHCPData.ulOfferedIPAddress = 0UL;\r
-       xDHCPData.ulDHCPServerAddress = 0UL;\r
-       xDHCPData.xDHCPTxPeriod = dhcpINITIAL_DHCP_TX_PERIOD;\r
-\r
-       /* Create the DHCP socket if it has not already been created. */\r
-       prvCreateDHCPSocket();\r
-       FreeRTOS_debug_printf( ( "prvInitialiseDHCP: start after %lu ticks\n", dhcpINITIAL_TIMER_PERIOD ) );\r
-       vIPReloadDHCPTimer( dhcpINITIAL_TIMER_PERIOD );\r
+       /* Check for random number generator API failure. */\r
+       if( 0 != xDHCPData.ulTransactionId )\r
+       {\r
+               xDHCPData.xUseBroadcast = 0;\r
+               xDHCPData.ulOfferedIPAddress = 0UL;\r
+               xDHCPData.ulDHCPServerAddress = 0UL;\r
+               xDHCPData.xDHCPTxPeriod = dhcpINITIAL_DHCP_TX_PERIOD;\r
+\r
+               /* Create the DHCP socket if it has not already been created. */\r
+               prvCreateDHCPSocket();\r
+               FreeRTOS_debug_printf( ( "prvInitialiseDHCP: start after %lu ticks\n", dhcpINITIAL_TIMER_PERIOD ) );\r
+               vIPReloadDHCPTimer( dhcpINITIAL_TIMER_PERIOD );\r
+       }\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -675,18 +677,17 @@ const uint32_t ulMandatoryOptions = 2ul; /* DHCP server address, and the correct
                                                                state machine is expecting. */\r
                                                                ulProcessed++;\r
                                                        }\r
-                                                       else\r
+                                                       else if( *pucByte == ( uint8_t ) dhcpMESSAGE_TYPE_NACK )\r
                                                        {\r
-                                                               if( *pucByte == ( uint8_t ) dhcpMESSAGE_TYPE_NACK )\r
+                                                               if( xExpectedMessageType == ( BaseType_t ) dhcpMESSAGE_TYPE_ACK )\r
                                                                {\r
-                                                                       if( xExpectedMessageType == ( BaseType_t ) dhcpMESSAGE_TYPE_ACK )\r
-                                                                       {\r
-                                                                               /* Start again. */\r
-                                                                               xDHCPData.eDHCPState = eWaitingSendFirstDiscover;\r
-                                                                       }\r
+                                                                       /* Start again. */\r
+                                                                       xDHCPData.eDHCPState = eWaitingSendFirstDiscover;\r
                                                                }\r
-                                                               /* Stop processing further options. */\r
-                                                               ucLength = 0;\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               /* Don't process other message types. */\r
                                                        }\r
                                                        break;\r
 \r