MdeModulePkg:DxeHttpLib: Update to DxeHttpLib API
Rename and update the logic of HttpGenRequestString API provided by DxeHttpLib. The RequestString size is returned as an argument. The user is not expected to do a AsciiStrLen anymore, and is not logical too, since request string can contain message body and using AsciiStrLen on such a string can provide truncated lengths. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Nagaraj Hegde <nagaraj-p.hegde@hpe.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com>
This commit is contained in:
parent
0aa0beca37
commit
e297a0a498
|
@ -417,12 +417,20 @@ HttpFreeHeaderFields (
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Generate HTTP request string.
|
Generate HTTP request message.
|
||||||
|
|
||||||
@param[in] Message Pointer to storage containing HTTP message data.
|
This function will allocate memory for the whole HTTP message and generate a
|
||||||
|
well formatted HTTP Request message in it, include the Request-Line, header
|
||||||
|
fields and also the message body. It is the caller's responsibility to free
|
||||||
|
the buffer returned in *RequestMsg.
|
||||||
|
|
||||||
|
@param[in] Message Pointer to the EFI_HTTP_MESSAGE structure which
|
||||||
|
contains the required information to generate
|
||||||
|
the HTTP request message.
|
||||||
@param[in] Url The URL of a remote host.
|
@param[in] Url The URL of a remote host.
|
||||||
@param[out] RequestString Pointer to the created HTTP request string.
|
@param[out] RequestMsg Pointer to the created HTTP request message.
|
||||||
NULL if any error occured.
|
NULL if any error occured.
|
||||||
|
@param[out] RequestMsgSize Size of the RequestMsg (in bytes).
|
||||||
|
|
||||||
@return EFI_SUCCESS If HTTP request string was created successfully
|
@return EFI_SUCCESS If HTTP request string was created successfully
|
||||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
|
||||||
|
@ -431,10 +439,11 @@ HttpFreeHeaderFields (
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
HttpGenRequestString (
|
HttpGenRequestMessage (
|
||||||
IN CONST EFI_HTTP_MESSAGE *Message,
|
IN CONST EFI_HTTP_MESSAGE *Message,
|
||||||
IN CONST CHAR8 *Url,
|
IN CONST CHAR8 *Url,
|
||||||
OUT CHAR8 **RequestString
|
OUT CHAR8 **RequestMsg,
|
||||||
|
OUT UINTN *RequestMsgSize
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1630,12 +1630,20 @@ HttpFreeHeaderFields (
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Generate HTTP request string.
|
Generate HTTP request message.
|
||||||
|
|
||||||
@param[in] Message Pointer to storage containing HTTP message data.
|
This function will allocate memory for the whole HTTP message and generate a
|
||||||
|
well formatted HTTP Request message in it, include the Request-Line, header
|
||||||
|
fields and also the message body. It is the caller's responsibility to free
|
||||||
|
the buffer returned in *RequestMsg.
|
||||||
|
|
||||||
|
@param[in] Message Pointer to the EFI_HTTP_MESSAGE structure which
|
||||||
|
contains the required information to generate
|
||||||
|
the HTTP request message.
|
||||||
@param[in] Url The URL of a remote host.
|
@param[in] Url The URL of a remote host.
|
||||||
@param[out] RequestString Pointer to the created HTTP request string.
|
@param[out] RequestMsg Pointer to the created HTTP request message.
|
||||||
NULL if any error occured.
|
NULL if any error occured.
|
||||||
|
@param[out] RequestMsgSize Size of the RequestMsg (in bytes).
|
||||||
|
|
||||||
@return EFI_SUCCESS If HTTP request string was created successfully
|
@return EFI_SUCCESS If HTTP request string was created successfully
|
||||||
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
|
@retval EFI_OUT_OF_RESOURCES Failed to allocate resources.
|
||||||
|
@ -1644,10 +1652,11 @@ HttpFreeHeaderFields (
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
HttpGenRequestString (
|
HttpGenRequestMessage (
|
||||||
IN CONST EFI_HTTP_MESSAGE *Message,
|
IN CONST EFI_HTTP_MESSAGE *Message,
|
||||||
IN CONST CHAR8 *Url,
|
IN CONST CHAR8 *Url,
|
||||||
OUT CHAR8 **Request
|
OUT CHAR8 **RequestMsg,
|
||||||
|
OUT UINTN *RequestMsgSize
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
@ -1664,7 +1673,7 @@ HttpGenRequestString (
|
||||||
|
|
||||||
ASSERT (Message != NULL);
|
ASSERT (Message != NULL);
|
||||||
|
|
||||||
*Request = NULL;
|
*RequestMsg = NULL;
|
||||||
MsgSize = 0;
|
MsgSize = 0;
|
||||||
Success = FALSE;
|
Success = FALSE;
|
||||||
HttpHdr = NULL;
|
HttpHdr = NULL;
|
||||||
|
@ -1727,13 +1736,13 @@ HttpGenRequestString (
|
||||||
AsciiStrLen (HTTP_VERSION_CRLF_STR) + HttpHdrSize;
|
AsciiStrLen (HTTP_VERSION_CRLF_STR) + HttpHdrSize;
|
||||||
|
|
||||||
|
|
||||||
*Request = AllocateZeroPool (MsgSize);
|
*RequestMsg = AllocateZeroPool (MsgSize);
|
||||||
if (*Request == NULL) {
|
if (*RequestMsg == NULL) {
|
||||||
Status = EFI_OUT_OF_RESOURCES;
|
Status = EFI_OUT_OF_RESOURCES;
|
||||||
goto Exit;
|
goto Exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestPtr = *Request;
|
RequestPtr = *RequestMsg;
|
||||||
//
|
//
|
||||||
// Construct header request
|
// Construct header request
|
||||||
//
|
//
|
||||||
|
@ -1792,19 +1801,27 @@ HttpGenRequestString (
|
||||||
CopyMem (RequestPtr, HttpHdr, HttpHdrSize);
|
CopyMem (RequestPtr, HttpHdr, HttpHdrSize);
|
||||||
RequestPtr += HttpHdrSize;
|
RequestPtr += HttpHdrSize;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Construct body
|
||||||
|
//
|
||||||
|
if (Message->Body != NULL) {
|
||||||
|
CopyMem (RequestPtr, Message->Body, Message->BodyLength);
|
||||||
|
RequestPtr += Message->BodyLength;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Done
|
// Done
|
||||||
//
|
//
|
||||||
*RequestPtr = 0;
|
(*RequestMsgSize) = (UINTN)(RequestPtr) - (UINTN)(*RequestMsg);
|
||||||
Success = TRUE;
|
Success = TRUE;
|
||||||
|
|
||||||
Exit:
|
Exit:
|
||||||
|
|
||||||
if (!Success) {
|
if (!Success) {
|
||||||
if (*Request != NULL) {
|
if (*RequestMsg != NULL) {
|
||||||
FreePool (*Request);
|
FreePool (*RequestMsg);
|
||||||
}
|
}
|
||||||
*Request = NULL;
|
*RequestMsg = NULL;
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue