\r
if (NULL != HttpInstance->ConnToken.CompletionToken.Event) {\r
gBS->CloseEvent (HttpInstance->ConnToken.CompletionToken.Event);\r
+ HttpInstance->ConnToken.CompletionToken.Event = NULL;\r
}\r
\r
if (NULL != HttpInstance->CloseToken.CompletionToken.Event) {\r
gBS->CloseEvent(HttpInstance->CloseToken.CompletionToken.Event);\r
+ HttpInstance->CloseToken.CompletionToken.Event = NULL;\r
} \r
}\r
\r
goto ON_ERROR;\r
}\r
\r
+ HttpInstance->Url = AllocateZeroPool (HTTP_URL_BUFFER_LEN);\r
+ if (HttpInstance->Url == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_ERROR;\r
+ }\r
+\r
NetMapInit (&HttpInstance->TxTokens);\r
NetMapInit (&HttpInstance->RxTokens);\r
\r
HttpInstance->MsgParser = NULL;\r
}\r
\r
+ if (HttpInstance->Url != NULL) {\r
+ FreePool (HttpInstance->Url);\r
+ HttpInstance->Url = NULL;\r
+ }\r
+\r
NetMapClean (&HttpInstance->TxTokens);\r
NetMapClean (&HttpInstance->RxTokens);\r
\r
{\r
EFI_STATUS Status;\r
\r
- HttpInstance->CloseToken.AbortOnClose = TRUE;\r
- HttpInstance->IsCloseDone = FALSE;\r
- \r
-\r
- Status = HttpInstance->Tcp4->Close (HttpInstance->Tcp4, &HttpInstance->CloseToken);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
+ if (HttpInstance->State == HTTP_STATE_TCP_CONNECTED) {\r
+ HttpInstance->CloseToken.AbortOnClose = TRUE;\r
+ HttpInstance->IsCloseDone = FALSE;\r
+ \r
+ Status = HttpInstance->Tcp4->Close (HttpInstance->Tcp4, &HttpInstance->CloseToken);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
\r
- while (!HttpInstance->IsCloseDone) {\r
- HttpInstance->Tcp4->Poll (HttpInstance->Tcp4);\r
+ while (!HttpInstance->IsCloseDone) {\r
+ HttpInstance->Tcp4->Poll (HttpInstance->Tcp4);\r
+ }\r
}\r
\r
HttpInstance->State = HTTP_STATE_TCP_CLOSED;\r
- return Status;\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r