+ //\r
+ // Free the allocated buffer if error happen.\r
+ //\r
+ if (EFI_ERROR (Status)) {\r
+ if (Dns4TokenEntry != NULL) {\r
+ if (Dns4TokenEntry->GeneralLookUp) {\r
+ if (Dns4TokenEntry->Token->RspData.GLookupData != NULL) {\r
+ if (Dns4TokenEntry->Token->RspData.GLookupData->RRList != NULL) {\r
+ while (RRCount != 0) {\r
+ RRCount --;\r
+ if (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) {\r
+ FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName);\r
+ }\r
+\r
+ if (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].RData != NULL) {\r
+ FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList[RRCount].RData);\r
+ }\r
+ }\r
+\r
+ FreePool (Dns4TokenEntry->Token->RspData.GLookupData->RRList);\r
+ }\r
+\r
+ FreePool (Dns4TokenEntry->Token->RspData.GLookupData);\r
+ }\r
+ } else {\r
+ if (QuerySection->Type == DNS_TYPE_A && Dns4TokenEntry->Token->RspData.H2AData != NULL) {\r
+ if (Dns4TokenEntry->Token->RspData.H2AData->IpList != NULL) {\r
+ FreePool (Dns4TokenEntry->Token->RspData.H2AData->IpList);\r
+ }\r
+\r
+ FreePool (Dns4TokenEntry->Token->RspData.H2AData);\r
+ }\r
+ }\r
+ }\r
+\r
+ if (Dns6TokenEntry != NULL) {\r
+ if (Dns6TokenEntry->GeneralLookUp) {\r
+ if (Dns6TokenEntry->Token->RspData.GLookupData != NULL) {\r
+ if (Dns6TokenEntry->Token->RspData.GLookupData->RRList != NULL) {\r
+ while (RRCount != 0) {\r
+ RRCount --;\r
+ if (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName != NULL) {\r
+ FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].QName);\r
+ }\r
+\r
+ if (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].RData != NULL) {\r
+ FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList[RRCount].RData);\r
+ }\r
+ }\r
+\r
+ FreePool (Dns6TokenEntry->Token->RspData.GLookupData->RRList);\r
+ }\r
+\r
+ FreePool (Dns6TokenEntry->Token->RspData.GLookupData);\r
+ }\r
+ } else {\r
+ if (QuerySection->Type == DNS_TYPE_AAAA && Dns6TokenEntry->Token->RspData.H2AData != NULL) {\r
+ if (Dns6TokenEntry->Token->RspData.H2AData->IpList != NULL) {\r
+ FreePool (Dns6TokenEntry->Token->RspData.H2AData->IpList);\r
+ }\r
+\r
+ FreePool (Dns6TokenEntry->Token->RspData.H2AData);\r
+ }\r
+ }\r
+ }\r
+\r
+ if (Dns4CacheEntry != NULL) {\r
+ if (Dns4CacheEntry->HostName != NULL) {\r
+ FreePool (Dns4CacheEntry->HostName);\r
+ }\r
+\r
+ if (Dns4CacheEntry->IpAddress != NULL) {\r
+ FreePool (Dns4CacheEntry->IpAddress);\r
+ }\r
+\r
+ FreePool (Dns4CacheEntry);\r
+ }\r
+\r
+ if (Dns6CacheEntry != NULL) {\r
+ if (Dns6CacheEntry->HostName != NULL) {\r
+ FreePool (Dns6CacheEntry->HostName);\r
+ }\r
+\r
+ if (Dns6CacheEntry->IpAddress != NULL) {\r
+ FreePool (Dns6CacheEntry->IpAddress);\r
+ }\r
+\r
+ FreePool (Dns6CacheEntry);\r
+ }\r
+ }\r
+\r