]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/DnsDxe/DnsProtocol.c
NetworkPkg/DnsDxe: Update RetryCount/RetryInterval to comply with UEFI spec.
[mirror_edk2.git] / NetworkPkg / DnsDxe / DnsProtocol.c
index 743560702841ec47d1fb8fd67fc618091b945427..df737dcbeb418e4c3576035a5f8dff6e1c169c0c 100644 (file)
@@ -223,8 +223,6 @@ Dns4Configure (
       Dns4InstanceCancelToken(Instance, NULL);\r
     }\r
 \r
       Dns4InstanceCancelToken(Instance, NULL);\r
     }\r
 \r
-    Instance->MaxRetry = 0;\r
-\r
     if (Instance->UdpIo != NULL){\r
       UdpIoCleanIo (Instance->UdpIo);\r
     }\r
     if (Instance->UdpIo != NULL){\r
       UdpIoCleanIo (Instance->UdpIo);\r
     }\r
@@ -377,24 +375,30 @@ Dns4HostNameToIp (
   \r
   ConfigData = &(Instance->Dns4CfgData);\r
   \r
   \r
   ConfigData = &(Instance->Dns4CfgData);\r
   \r
-  Instance->MaxRetry = ConfigData->RetryCount;\r
-  \r
-  Token->Status = EFI_NOT_READY;\r
-  Token->RetryCount = 0;\r
-  Token->RetryInterval = ConfigData->RetryInterval;\r
-\r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
+  Token->Status = EFI_NOT_READY;\r
+\r
   //\r
   //\r
-  // Check the MaxRetry and RetryInterval values.\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
   //\r
   //\r
-  if (Instance->MaxRetry == 0) {\r
-    Instance->MaxRetry = DNS_DEFAULT_RETRY;\r
+  if (Token->RetryCount == 0) {\r
+    Token->RetryCount = ConfigData->RetryCount;\r
   }\r
 \r
   }\r
 \r
+  //\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
+  //\r
+  if (Token->RetryInterval == 0) {\r
+    Token->RetryInterval = ConfigData->RetryInterval;\r
+  }\r
+  \r
+  //\r
+  // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second. \r
+  //\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r
@@ -620,25 +624,31 @@ Dns4GeneralLookUp (
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This);\r
   \r
   ConfigData = &(Instance->Dns4CfgData);\r
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL4 (This);\r
   \r
   ConfigData = &(Instance->Dns4CfgData);\r
-  \r
-  Instance->MaxRetry = ConfigData->RetryCount;\r
-  \r
-  Token->Status = EFI_NOT_READY;\r
-  Token->RetryCount = 0;\r
-  Token->RetryInterval = ConfigData->RetryInterval;\r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
+  Token->Status = EFI_NOT_READY;\r
+  \r
+  //\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
   //\r
   //\r
-  // Check the MaxRetry and RetryInterval values.\r
+  if (Token->RetryCount == 0) {\r
+    Token->RetryCount = ConfigData->RetryCount;\r
+  }\r
+  \r
+  //\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
   //\r
   //\r
-  if (Instance->MaxRetry == 0) {\r
-    Instance->MaxRetry = DNS_DEFAULT_RETRY;\r
+  if (Token->RetryInterval == 0) {\r
+    Token->RetryInterval = ConfigData->RetryInterval;\r
   }\r
 \r
   }\r
 \r
+  //\r
+  // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second. \r
+  //\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r
@@ -1052,8 +1062,6 @@ Dns6Configure (
       Dns6InstanceCancelToken(Instance, NULL);\r
     }\r
 \r
       Dns6InstanceCancelToken(Instance, NULL);\r
     }\r
 \r
-    Instance->MaxRetry = 0;\r
-\r
     if (Instance->UdpIo != NULL){\r
       UdpIoCleanIo (Instance->UdpIo);\r
     }\r
     if (Instance->UdpIo != NULL){\r
       UdpIoCleanIo (Instance->UdpIo);\r
     }\r
@@ -1203,28 +1211,34 @@ Dns6HostNameToIp (
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);\r
   \r
   ConfigData = &(Instance->Dns6CfgData);\r
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);\r
   \r
   ConfigData = &(Instance->Dns6CfgData);\r
-  \r
-  Instance->MaxRetry = ConfigData->RetryCount;\r
-\r
-  Token->Status = EFI_NOT_READY;\r
-  Token->RetryCount = 0;\r
-  Token->RetryInterval = ConfigData->RetryInterval;\r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
+  Token->Status = EFI_NOT_READY;\r
+\r
   //\r
   //\r
-  // Check the MaxRetry and RetryInterval values.\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
   //\r
   //\r
-  if (Instance->MaxRetry == 0) {\r
-    Instance->MaxRetry = DNS_DEFAULT_RETRY;\r
+  if (Token->RetryCount == 0) {\r
+    Token->RetryCount = ConfigData->RetryCount;\r
   }\r
 \r
   }\r
 \r
+  //\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
+  //\r
+  if (Token->RetryInterval == 0) {\r
+    Token->RetryInterval = ConfigData->RetryInterval;\r
+  }\r
+  \r
+  //\r
+  // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second. \r
+  //\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
-  } \r
+  }\r
 \r
   //\r
   // Check cache\r
 \r
   //\r
   // Check cache\r
@@ -1451,25 +1465,31 @@ Dns6GeneralLookUp (
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);\r
   \r
   ConfigData = &(Instance->Dns6CfgData);\r
   Instance = DNS_INSTANCE_FROM_THIS_PROTOCOL6 (This);\r
   \r
   ConfigData = &(Instance->Dns6CfgData);\r
-  \r
-  Instance->MaxRetry = ConfigData->RetryCount;\r
-  \r
-  Token->Status = EFI_NOT_READY;\r
-  Token->RetryCount = 0;\r
-  Token->RetryInterval = ConfigData->RetryInterval;\r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
 \r
   if (Instance->State != DNS_STATE_CONFIGED) {\r
     Status = EFI_NOT_STARTED;\r
     goto ON_EXIT;\r
   }\r
 \r
+  Token->Status = EFI_NOT_READY;\r
+  \r
   //\r
   //\r
-  // Check the MaxRetry and RetryInterval values.\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
   //\r
   //\r
-  if (Instance->MaxRetry == 0) {\r
-    Instance->MaxRetry = DNS_DEFAULT_RETRY;\r
+  if (Token->RetryCount == 0) {\r
+    Token->RetryCount = ConfigData->RetryCount;\r
+  }\r
+  \r
+  //\r
+  // If zero, use the parameter configured through Dns.Configure() interface.\r
+  //\r
+  if (Token->RetryInterval == 0) {\r
+    Token->RetryInterval = ConfigData->RetryInterval;\r
   }\r
 \r
   }\r
 \r
+  //\r
+  // Minimum interval of retry is 2 second. If the retry interval is less than 2 second, then use the 2 second. \r
+  //\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r
   if (Token->RetryInterval < DNS_DEFAULT_TIMEOUT) {\r
     Token->RetryInterval = DNS_DEFAULT_TIMEOUT;\r
   }\r