609 lines
23 KiB
C
609 lines
23 KiB
C
/*
|
|
*********************************************************************************************************
|
|
* uC/HTTP
|
|
* Hypertext Transfer Protocol
|
|
*
|
|
* Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com
|
|
*
|
|
* SPDX-License-Identifier: APACHE-2.0
|
|
*
|
|
* This software is subject to an open source license and is distributed by
|
|
* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
|
|
* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
|
|
*
|
|
*********************************************************************************************************
|
|
*/
|
|
/*
|
|
*********************************************************************************************************
|
|
*
|
|
* HTTP
|
|
*
|
|
* Filename : http.h
|
|
* Version : V3.01.00
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* MODULE
|
|
*
|
|
* Note(s) : (1) This main network protocol suite header file is protected from multiple pre-processor
|
|
* inclusion through use of the HTTP module present pre-processor macro definition.
|
|
*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#ifndef HTTP_MODULE_PRESENT /* See Note #1. */
|
|
#define HTTP_MODULE_PRESENT
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* HTTP INCLUDE FILES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#include <cpu.h>
|
|
|
|
#include "include/lib_def.h"
|
|
#include "include/lib_str.h"
|
|
#include "include/lib_ascii.h"
|
|
|
|
#include "include/net_fs.h"
|
|
#ifdef HTTPs_MODULE
|
|
#include "http-s_cfg.h"
|
|
#endif
|
|
#include "include/net.h"
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* EXTERNS
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#if ((defined(HTTP_MODULE)) && \
|
|
(defined(HTTP_GLOBALS_EXT)))
|
|
#define HTTP_EXT
|
|
#else
|
|
#define HTTP_EXT extern
|
|
#endif
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* DEFINES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTP DEFAUT PORT DEFINES
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#define HTTP_DFLT_PORT_NBR 80
|
|
#define HTTP_DFLT_PORT_NBR_SECURE 443
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* URL ENCODING DEFINES
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#define HTTP_URL_ENCODING_LEN 3
|
|
#define HTTP_URL_ENCODING_JUMP 2
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HEXADECIMAL STRING DEFINE
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#define HTTP_INT_16U_HEX_STR_LEN_MAX 4u
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* DATA TYPES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* TASK CONFIGURATION DATA TYPE
|
|
*
|
|
* Note(s): (1) When the Stack pointer is defined as null pointer (DEF_NULL), the task's stack should be
|
|
* automatically allowed on the heap of uC/LIB.
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef struct http_task_cfg {
|
|
CPU_INT32U Prio; /* Task priority. */
|
|
CPU_INT32U StkSizeBytes; /* Size of the stack. */
|
|
void *StkPtr; /* Pointer to base of the stack (see Note #1). */
|
|
} HTTP_TASK_CFG;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* METHODS ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_method {
|
|
HTTP_METHOD_GET,
|
|
HTTP_METHOD_POST,
|
|
HTTP_METHOD_HEAD,
|
|
HTTP_METHOD_PUT,
|
|
HTTP_METHOD_DELETE,
|
|
HTTP_METHOD_OPTIONS,
|
|
HTTP_METHOD_TRACE,
|
|
HTTP_METHOD_CONNECT,
|
|
HTTP_METHOD_UNKNOWN
|
|
} HTTP_METHOD;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* STATUS CODES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_status_code {
|
|
HTTP_STATUS_CONTINUE,
|
|
HTTP_STATUS_SWITCHING_PROTOCOLS,
|
|
HTTP_STATUS_PROCESSING,
|
|
HTTP_STATUS_EARLY_HINTS,
|
|
HTTP_STATUS_OK,
|
|
HTTP_STATUS_CREATED,
|
|
HTTP_STATUS_ACCEPTED,
|
|
HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION,
|
|
HTTP_STATUS_NO_CONTENT,
|
|
HTTP_STATUS_RESET_CONTENT,
|
|
HTTP_STATUS_PARTIAL_CONTENT,
|
|
HTTP_STATUS_MULTI_STATUS,
|
|
HTTP_STATUS_ALREADY_REPORTED,
|
|
HTTP_STATUS_IM_USED,
|
|
HTTP_STATUS_MULTIPLE_CHOICES,
|
|
HTTP_STATUS_MOVED_PERMANENTLY,
|
|
HTTP_STATUS_FOUND,
|
|
HTTP_STATUS_SEE_OTHER,
|
|
HTTP_STATUS_NOT_MODIFIED,
|
|
HTTP_STATUS_USE_PROXY,
|
|
HTTP_STATUS_SWITCH_PROXY,
|
|
HTTP_STATUS_TEMPORARY_REDIRECT,
|
|
HTTP_STATUS_PERMANENT_REDIRECT,
|
|
HTTP_STATUS_BAD_REQUEST,
|
|
HTTP_STATUS_UNAUTHORIZED,
|
|
HTTP_STATUS_FORBIDDEN,
|
|
HTTP_STATUS_NOT_FOUND,
|
|
HTTP_STATUS_METHOD_NOT_ALLOWED,
|
|
HTTP_STATUS_NOT_ACCEPTABLE, /* With the Accept Req Hdr */
|
|
HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED,
|
|
HTTP_STATUS_REQUEST_TIMEOUT,
|
|
HTTP_STATUS_CONFLICT,
|
|
HTTP_STATUS_GONE,
|
|
HTTP_STATUS_LENGTH_REQUIRED,
|
|
HTTP_STATUS_PRECONDITION_FAILED,
|
|
HTTP_STATUS_REQUEST_ENTITY_TOO_LARGE,
|
|
HTTP_STATUS_REQUEST_URI_TOO_LONG,
|
|
HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,
|
|
HTTP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE,
|
|
HTTP_STATUS_EXPECTATION_FAILED,
|
|
HTTP_STATUS_MISDIRECTED_REQUEST,
|
|
HTTP_STATUS_UNPROCESSABLE_ENTITY,
|
|
HTTP_STATUS_LOCKED,
|
|
HTTP_STATUS_FAILED_DEPENDENCY,
|
|
HTTP_STATUS_UPGRADE_REQUIRED,
|
|
HTTP_STATUS_PRECONDITION_REQUIRED,
|
|
HTTP_STATUS_TOO_MANY_REQUESTS,
|
|
HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE,
|
|
HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS,
|
|
HTTP_STATUS_INTERNAL_SERVER_ERR,
|
|
HTTP_STATUS_NOT_IMPLEMENTED,
|
|
HTTP_STATUS_BAD_GATEWAY,
|
|
HTTP_STATUS_SERVICE_UNAVAILABLE,
|
|
HTTP_STATUS_GATEWAY_TIMEOUT,
|
|
HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED,
|
|
HTTP_STATUS_VARIANT_ALSO_NEGOTIATES,
|
|
HTTP_STATUS_INSUFFICIENT_STORAGE,
|
|
HTTP_STATUS_LOOP_DETECTED,
|
|
HTTP_STATUS_NOT_EXTENDED,
|
|
HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED,
|
|
HTTP_STATUS_UNKNOWN
|
|
} HTTP_STATUS_CODE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTPS HEADER ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_hdr_field {
|
|
HTTP_HDR_FIELD_UNKNOWN,
|
|
HTTP_HDR_FIELD_CONTENT_TYPE,
|
|
HTTP_HDR_FIELD_CONTENT_LEN,
|
|
HTTP_HDR_FIELD_CONTENT_DISPOSITION,
|
|
HTTP_HDR_FIELD_HOST,
|
|
HTTP_HDR_FIELD_LOCATION,
|
|
HTTP_HDR_FIELD_CONN,
|
|
HTTP_HDR_FIELD_TRANSFER_ENCODING,
|
|
HTTP_HDR_FIELD_ACCEPT,
|
|
HTTP_HDR_FIELD_ACCEPT_CHARSET,
|
|
HTTP_HDR_FIELD_ACCEPT_ENCODING,
|
|
HTTP_HDR_FIELD_ACCEPT_LANGUAGE,
|
|
HTTP_HDR_FIELD_ACCEPT_RANGES,
|
|
HTTP_HDR_FIELD_AGE,
|
|
HTTP_HDR_FIELD_ALLOW,
|
|
HTTP_HDR_FIELD_AUTHORIZATION,
|
|
HTTP_HDR_FIELD_CONTENT_ENCODING,
|
|
HTTP_HDR_FIELD_CONTENT_LANGUAGE,
|
|
HTTP_HDR_FIELD_CONTENT_LOCATION,
|
|
HTTP_HDR_FIELD_CONTENT_MD5,
|
|
HTTP_HDR_FIELD_CONTENT_RANGE,
|
|
HTTP_HDR_FIELD_COOKIE,
|
|
HTTP_HDR_FIELD_COOKIE2,
|
|
HTTP_HDR_FIELD_DATE,
|
|
HTTP_HDR_FIELD_ETAG,
|
|
HTTP_HDR_FIELD_EXPECT,
|
|
HTTP_HDR_FIELD_EXPIRES,
|
|
HTTP_HDR_FIELD_FROM,
|
|
HTTP_HDR_FIELD_IF_MODIFIED_SINCE,
|
|
HTTP_HDR_FIELD_IF_MATCH,
|
|
HTTP_HDR_FIELD_IF_NONE_MATCH,
|
|
HTTP_HDR_FIELD_IF_RANGE,
|
|
HTTP_HDR_FIELD_IF_UNMODIFIED_SINCE,
|
|
HTTP_HDR_FIELD_LAST_MODIFIED,
|
|
HTTP_HDR_FIELD_RANGE,
|
|
HTTP_HDR_FIELD_REFERER,
|
|
HTTP_HDR_FIELD_RETRY_AFTER,
|
|
HTTP_HDR_FIELD_SERVER,
|
|
HTTP_HDR_FIELD_SET_COOKIE,
|
|
HTTP_HDR_FIELD_SET_COOKIE2,
|
|
HTTP_HDR_FIELD_TE,
|
|
HTTP_HDR_FIELD_TRAILER,
|
|
HTTP_HDR_FIELD_UPGRADE,
|
|
HTTP_HDR_FIELD_USER_AGENT,
|
|
HTTP_HDR_FIELD_VARY,
|
|
HTTP_HDR_FIELD_VIA,
|
|
HTTP_HDR_FIELD_WARNING,
|
|
HTTP_HDR_FIELD_WWW_AUTHENTICATE,
|
|
HTTP_HDR_FIELD_WEBSOCKET_KEY,
|
|
HTTP_HDR_FIELD_WEBSOCKET_ACCEPT,
|
|
HTTP_HDR_FIELD_WEBSOCKET_VERSION,
|
|
HTTP_HDR_FIELD_WEBSOCKET_PROTOCOL,
|
|
HTTP_HDR_FIELD_WEBSOCKET_EXTENSIONS
|
|
} HTTP_HDR_FIELD;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTPS VERSIONS ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_protocol_ver {
|
|
HTTP_PROTOCOL_VER_0_9,
|
|
HTTP_PROTOCOL_VER_1_0,
|
|
HTTP_PROTOCOL_VER_1_1,
|
|
HTTP_PROTOCOL_VER_UNKNOWN
|
|
} HTTP_PROTOCOL_VER;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* CONTENT TYPES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_content_type {
|
|
HTTP_CONTENT_TYPE_UNKNOWN,
|
|
HTTP_CONTENT_TYPE_NONE,
|
|
HTTP_CONTENT_TYPE_HTML,
|
|
HTTP_CONTENT_TYPE_OCTET_STREAM,
|
|
HTTP_CONTENT_TYPE_PDF,
|
|
HTTP_CONTENT_TYPE_ZIP,
|
|
HTTP_CONTENT_TYPE_GIF,
|
|
HTTP_CONTENT_TYPE_JPEG,
|
|
HTTP_CONTENT_TYPE_PNG,
|
|
HTTP_CONTENT_TYPE_JS,
|
|
HTTP_CONTENT_TYPE_PLAIN,
|
|
HTTP_CONTENT_TYPE_CSS,
|
|
HTTP_CONTENT_TYPE_JSON,
|
|
HTTP_CONTENT_TYPE_APP_FORM,
|
|
HTTP_CONTENT_TYPE_MULTIPART_FORM,
|
|
HTTP_CONTENT_TYPE_WEBSOCK_TXT_DATA,
|
|
HTTP_CONTENT_TYPE_WEBSOCK_BIN_DATA
|
|
} HTTP_CONTENT_TYPE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* CONTENT DISPOSITION TYPE VALUES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_content_disposition {
|
|
HTTP_CONTENT_DISPOSITION_FORM_DATA
|
|
} HTTP_CONTENT_DISPOSITION;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HEADER FIELD CONNECTION VALUES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_hdr_field_conn_val {
|
|
HTTP_HDR_FIELD_CONN_CLOSE,
|
|
HTTP_HDR_FIELD_CONN_PERSISTENT,
|
|
HTTP_HDR_FIELD_CONN_UPGRADE,
|
|
HTTP_HDR_FIELD_CONN_UNKNOWN
|
|
} HTTP_HDR_FIELD_CONN_VAL;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HEADER FIELD TRANSFER ENCODING VALUES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_hdr_field_transfer_type {
|
|
HTTP_HDR_FIELD_TRANSFER_TYPE_NONE,
|
|
HTTP_HDR_FIELD_TRANSFER_TYPE_CHUNKED
|
|
} HTTP_HDR_FIELD_TRANSFER_TYPE;
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HEADER FIELD UPGRADE VALUES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_hdr_field_upgrade_val {
|
|
HTTP_HDR_FIELD_UPGRADE_WEBSOCKET
|
|
} HTTP_HDR_FIELD_UPGRADE_VAL;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* FILE TYPES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_file_type {
|
|
HTTP_FILE_TYPE_FS,
|
|
HTTP_FILE_TYPE_STATIC_DATA
|
|
} HTTP_FILE_TYPE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* BODY TYPES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_body_type {
|
|
HTTP_BODY_TYPE_FS,
|
|
HTTP_BODY_TYPE_DATA,
|
|
HTTP_BODY_TYPE_BUF
|
|
} HTTP_BODY_TYPE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* FORM DATA TYPES ENUMARATION
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_form_data_type {
|
|
HTTP_FORM_DATA_TYPE_CTRL_VAL_QUERY,
|
|
HTTP_FORM_DATA_TYPE_CTRL_VAL_FORM,
|
|
HTTP_FORM_DATA_TYPE_FILE
|
|
} HTTP_FORM_DATA_TYPE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* FORM DATA TYPE
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef struct http_form_data HTTP_FORM_DATA;
|
|
|
|
struct http_form_data {
|
|
HTTP_FORM_DATA_TYPE DataType;
|
|
CPU_CHAR *CtrlNamePtr;
|
|
CPU_INT16U CtrlNameLen;
|
|
CPU_CHAR *ValPtr;
|
|
CPU_INT16U ValLen;
|
|
HTTP_FORM_DATA *DataNextPtr;
|
|
};
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTP HDR FIELD VALUE TYPE DATA TYPE
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_hdr_val_type {
|
|
HTTP_HDR_VAL_TYPE_NONE,
|
|
HTTP_HDR_VAL_TYPE_STR_CONST,
|
|
HTTP_HDR_VAL_TYPE_STR_DYN
|
|
} HTTP_HDR_VAL_TYPE;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTP HDR FIELD BLK DATA TYPE
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef struct http_hdr_blk HTTP_HDR_BLK;
|
|
|
|
struct http_hdr_blk {
|
|
HTTP_HDR_FIELD HdrField;
|
|
HTTP_HDR_VAL_TYPE ValType;
|
|
void *ValPtr;
|
|
CPU_INT32U ValLen;
|
|
HTTP_HDR_BLK *NextPtr;
|
|
HTTP_HDR_BLK *PrevPtr;
|
|
};
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTP FORM MULTIPART CONTENT FIELD DATA TYPE
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
typedef enum http_multipart_field {
|
|
HTTP_MULTIPART_FIELD_NAME,
|
|
HTTP_MULTIPART_FIELD_FILE_NAME,
|
|
HTTP_MULTIPART_FIELD_UNKNOWN
|
|
} HTTP_MULTIPART_FIELD;
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* MACROS
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
* HTTP COUNTER MACRO'S
|
|
*
|
|
* Description : Functionality to set and increment statistic and error counter
|
|
*
|
|
* Argument(s) : Various HTTP counter variable(s) & values.
|
|
*
|
|
* Return(s) : none.
|
|
*
|
|
* Caller(s) : various.
|
|
*
|
|
* These macro's are INTERNAL HTTP suite macro's & SHOULD NOT be called by
|
|
* application function(s).
|
|
*
|
|
* Note(s) : none.
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#if ((HTTPs_CFG_CTR_STAT_EN == DEF_ENABLED) || \
|
|
(HTTPc_CFG_CTR_STAT_EN == DEF_ENABLED))
|
|
#define HTTP_SET_PTR_STATS(p_ctr_stats, p_instance) { \
|
|
p_ctr_stats = &p_instance->StatsCtr; \
|
|
}
|
|
|
|
#define HTTP_STATS_INC(p_ctr) { \
|
|
p_ctr++; \
|
|
}
|
|
|
|
#define HTTP_STATS_OCTET_INC(p_ctr, octet) { \
|
|
p_ctr += octet; \
|
|
}
|
|
|
|
#else
|
|
/* Prevent 'variable unused' compiler warning. */
|
|
#define HTTP_SET_PTR_STATS(p_ctr_stats, p_instance) { \
|
|
(void)p_ctr_stats; \
|
|
}
|
|
|
|
#define HTTP_STATS_INC(p_ctr)
|
|
|
|
#define HTTP_STATS_OCTET_INC(p_ctr, octet)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if ((HTTPs_CFG_CTR_ERR_EN == DEF_ENABLED) || \
|
|
(HTTPc_CFG_CTR_ERR_EN == DEF_ENABLED))
|
|
|
|
#define HTTP_SET_PTR_ERRS(p_ctr_err, p_instance) { \
|
|
p_ctr_err = &p_instance->ErrsCtr; \
|
|
}
|
|
|
|
#define HTTP_ERR_INC(p_ctr) { \
|
|
p_ctr++; \
|
|
}
|
|
|
|
#else
|
|
/* Prevent 'variable unused' compiler warning. */
|
|
#define HTTP_SET_PTR_ERRS(p_ctr_err, p_instance) { \
|
|
(void)p_ctr_err; \
|
|
}
|
|
|
|
#define HTTP_ERR_INC(p_ctr)
|
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* FUNCTION PROTOTYPES
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
CPU_CHAR *HTTP_HdrParseFieldValueGet(CPU_CHAR *p_field,
|
|
CPU_INT16U field_len,
|
|
CPU_CHAR *p_field_end,
|
|
CPU_INT16U *p_len_rem);
|
|
|
|
CPU_CHAR *HTTP_StrGraphSrchFirst(CPU_CHAR *p_str,
|
|
CPU_INT32U str_len);
|
|
|
|
CPU_BOOLEAN HTTP_URL_EncodeStr(const CPU_CHAR *p_str_src,
|
|
CPU_CHAR *p_str_dest,
|
|
CPU_SIZE_T *p_str_len,
|
|
CPU_SIZE_T str_len_max);
|
|
|
|
CPU_BOOLEAN HTTP_URL_DecodeStr(const CPU_CHAR *p_str_src,
|
|
CPU_CHAR *p_str_dest,
|
|
CPU_SIZE_T *p_str_lenn);
|
|
|
|
CPU_BOOLEAN HTTP_URL_DecodeReplaceStr(CPU_CHAR *p_str,
|
|
CPU_INT16U *p_str_len);
|
|
|
|
CPU_INT16U HTTP_URL_CharEncodeNbr(const CPU_CHAR *p_str_src,
|
|
CPU_SIZE_T str_len);
|
|
|
|
CPU_CHAR *HTTP_ChunkTransferWrSize(CPU_CHAR *p_buf_wr,
|
|
CPU_SIZE_T buf_len,
|
|
CPU_SIZE_T nbr_dig_max,
|
|
CPU_INT16U size);
|
|
|
|
CPU_INT08U HTTP_StrSizeHexDigReq(CPU_INT32U nbr);
|
|
|
|
HTTP_CONTENT_TYPE HTTP_GetContentTypeFromFileExt(CPU_CHAR *p_file_path,
|
|
CPU_SIZE_T path_len_max);
|
|
|
|
|
|
/*
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
* MODULE END
|
|
*********************************************************************************************************
|
|
*********************************************************************************************************
|
|
*/
|
|
|
|
#endif /* HTTP_MODULE_PRESENT */
|