1.2.1.13.2 HyperText Transfer Protocol (HTTP) Net Configurations

HTTP_NET Specific User Configurations

  • HTTP NET Socket TX Buffer Size:

    • Define the size of the TX buffer for the HTTP socket
    • Use 0 for default TCP socket value
    • The default recommended value for high throughput is > 2MSS (3 KB).
    • The performance of a socket is highly dependent on the size of its buffers so it is a good idea to use as large as possible buffers for the sockets that need high throughput.
    • Default value: 1024
    • Symbol TCPIP_HTTP_NET_SKT_TX_BUFF_SIZE
  • HTTP NET Socket RX Buffer Size:

    • Define the size of the RX buffer for the HTTP socket
    • Use 0 for default TCP socket value
    • The default recommended value for high throughput is > 2MSS (3 KB).
    • The performance of a socket is highly dependent on the size of its buffers so it is a good idea to use as large as possible buffers for the sockets that need high throughput.
    • Default value: 1024
    • Symbol TCPIP_HTTP_NET_SKT_RX_BUFF_SIZE
  • Maximum Number of Simultaneous Connections:

    • Maximum numbers of simultaneous supported HTTP connections.
    • Default value: 4
    • Symbol TCPIP_HTTP_NET_MAX_CONNECTIONS
  • HTTP NET Listening Port:

    • HTTP listening port: 80, 443, etc.
    • Default value: 80
    • Symbol TCPIP_HTTP_NET_LISTEN_PORT
  • Web Pages Directory:

    • Web pages directory
    • The HTTP server will serve pages located under this top directory.
    • No access is possible above this directory.
    • As a good practice to follow, use something like: "/mnt_point/webpages/" to limit an external user access to this only directory in the file system when using the Web server
    • NOTE: to allow access to the whole file system use the root directory: "/mnt_point/" or "/" depending on your SYS_FS settings/mounting
    • But this usage should be discouraged because it gives HTTP access to all system files.
    • Default value: "/mnt/mchpSite1/"
    • Symbol TCPIP_HTTP_NET_WEB_DIR
  • Enable Console Commands:

    • Enable the HTTP_NET TCP/IP Console Commands
    • Default value: false
    • Symbol: TCPIP_HTTP_NET_CONSOLE_CMD
  • Include HTTP NET Custom Template:

    • Add the HTTP_NET template to the project
    • This is a model of web pages and processing
    • Default value: true
    • Symbol TCPIP_HTTP_NET_CUSTOM_TEMPLATE
  • Web pages source directory path:

    • Location of the web pages source
    • Default value: web_pages_directory + '\web_pages'
    • Symbol TCPIP_HTTP_NET_WEBPAGE_DIRECTORY_PATH
  • Web pages destination directory path:

    • Destination of the web pages in the project
    • Default value: "<project_path>/firmware/src/web_pages"
    • Symbol TCPIP_HTTP_NET_DEST_WEBPAGE_DIRECTORY_PATH
  • HTTP_NET Task Rate (in msec):

    • HTTP_NET task processing rate, in milliseconds.
    • The HTTP_NET module will process a timer event with this rate for maintaining its own queues, processing timeouts, etc.
    • The lower the rate (higher the frequency) the higher the module priority and higher module performance can be obtained
    • The value cannot be lower than the TCPIP_STACK_TICK_RATE.
    • Default value: 33
    • Symbol TCPIP_HTTP_NET_TASK_RATE
  • :Maximum Data Length (bytes) for Reading Cookie and GET/POST Arguments

    • Define the maximum size of the buffer for reading cookie and GET/POST arguments (bytes)
    • Default value: 100
    • Symbol TCPIP_HTTP_NET_MAX_DATA_LEN
  • Buffer Size for Sending Response Messages to the Client:

    • Size of the buffer used for sending the response messages to the client.
    • Should be able to accommodate the longest server response
    • Default setting should be 300 bytes
    • Default value: 300
    • Symbol TCPIP_HTTP_NET_RESPONSE_BUFFER_SIZE
  • Buffer Size for Sending Cookies to the Client:

    • Size of the buffer used for sending the cookies to the client.
    • Should be able to accommodate the longest cookie response. Otherwise the cookies will be truncated.
    • Default value: 200
    • Symbol TCPIP_HTTP_NET_COOKIE_BUFFER_SIZE
  • Peek Buffer Size for Performing Searches:

    • Size of the peek buffer to perform searches into.
    • If the underlying transport layer supports peak operation with a offset, the value could be smaller (80 characters, for example);
    • Otherwise, a one time peek is required and the buffer should be larger:
      • recommended to be close to the size of the socket RX buffer.
    • Note - if upload is enabled (TCPIP_HTTP_NET_FILE_UPLOAD_ENABLE) then it is recommended for the peek buffer size to match the size of the socket RX buffer: TCPIP_HTTP_NET_SKT_RX_BUFF_SIZE
    • Note that this is an automatic buffer (created on the stack) and enough stack space should be provided for the application.
    • If left to 0 it will use the size of the socket RX buffer - this should be the default
    • Default value: 0
    • Symbol TCPIP_HTTP_NET_FIND_PEEK_BUFF_SIZE
  • File Processing Buffer Size:

    • Size of the buffer used for processing HTML, dynamic variable and binary files.
    • For dynamic variable files it should be able to accommodate the longest HTML line size, including CRLF!
    • Default value: 512
    • Symbol TCPIP_HTTP_NET_FILE_PROCESS_BUFFER_SIZE
  • Number of File Buffers to be Created:

    • Number of file buffers to be created;
    • These buffers are used to store data while file processing is done
    • They are organized in a pool
    • Each file being processed needs a file buffer and tries to get it from the pool
    • If a buffer is not available, the HTTP conenction will wait for one to become available.
    • Once the file is done the file buffer is released and could be used by a different file
    • The number depends on the number of files that are processed in parallel
    • To avoid deadlock the number should be >= than the number of maximum files that can be open simultaneously:
    • i.e. for file1 ->include file2 -> include file3 you will need >= 3 file process buffers
    • Default value: 4
    • Symbol TCPIP_HTTP_NET_FILE_PROCESS_BUFFERS_NUMBER
  • Retry Limit for Allocating a File Buffer from the Pool:

    • Retry limit for allocating a file buffer from the pool.
    • If more retries are not successful the operation will be aborted.
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_FILE_PROCESS_BUFFER_RETRIES
  • Number of Chunks to be Created:

    • Number of chunks that are created
    • It depends on the TCPIP_HTTP_NET_MAX_RECURSE_LEVEL and on the number of connections
    • Maximum number should be TCPIP_HTTP_NET_MAX_CONNECTIONS * TCPIP_HTTP_NET_MAX_RECURSE_LEVEL
      • i.e. TCPIP_HTTP_NET_MODULE_CONFIG::nConnections * TCPIP_HTTP_NET_MODULE_CONFIG::nChunks
    • All the chunks are in a pool and are used by all connections
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_CHUNKS_NUMBER
  • Retry Limit for Allocating a Chunk from the Pool:

    • Retry limit for allocating a chunk from the pool
    • If retries are not successful the operation will be aborted
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_CHUNK_RETRIES
  • Maximum Depth of Recursive Calls for Serving a Web Page:

    • The maximum depth of recursive calls for serving a web page:
      • no dynvars files: 1
      • file including a file: 2
      • if the include file includes another file: +1
      • if a dyn variable: +1
    • Default value: 3
    • Symbol TCPIP_HTTP_NET_MAX_RECURSE_LEVEL
  • Maximum Header Length:

    • The length of longest header string that can be parsed
    • Default value: 15
    • Symbol TCPIP_HTTP_NET_MAX_HEADER_LEN
  • Maximum Lifetime of Static Responses (in sec):

    • Max lifetime (sec) of static responses as string
    • Value is in seconds (string)
    • Default value: "600"
    • Symbol TCPIP_HTTP_NET_CACHE_LEN
  • Socket Disconnect Timeout (in sec):

    • Max time (sec) to await for more HTTP client data in an active connection state before timing out and disconnecting the socket
    • Value is in seconds
    • Default value: 45
    • Symbol TCPIP_HTTP_NET_TIMEOUT
  • Default HTTP NET File:

    • Indicate what HTTP file to serve when no specific one is requested
    • Default value: "index.htm"
    • Symbol TCPIP_HTTP_NET_DEFAULT_FILE
  • Maximum Size of a HTTP File Name:

    • Maximum size of a HTTP file name with the path removed from the file name
    • One extra char added for the string terminator
    • Default value: 25
    • Symbol TCPIP_HTTP_NET_FILENAME_MAX_LEN
  • Enable MPFS Update via HTTP NET:

    • Configure MPFS over HTTP updating
    • Enable/disable updating via HTTP
    • Default value: false
    • Symbol TCPIP_HTTP_NET_FILE_UPLOAD_ENABLE
  • MPFS Upload Page Name:

    • The default MPFS upload page name
    • Default value: "mpfsupload"
    • Symbol TCPIP_HTTP_NET_FILE_UPLOAD_NAME
  • MPFS NVM Mount Path:

    • NVM mount path for a file upload
    • Default value: "/mnt/mchpSite1"
    • Symbol TCPIP_HTTP_NET_MPFS_NVM_PATH
  • MPFS NVM Disk Path:

    • NVM disk path for a file upload
    • Default value: "/dev/nvma1"
    • Symbol TCPIP_HTTP_NET_MPFS_NVM_VOL
  • MPFS NVM Disk Number:

    • NVM disk number for a file upload
    • Default value: 0
    • Symbol TCPIP_HTTP_NET_MPFS_NVM_NUM
  • Enable POST Support:

    • Enable POST support
    • Default value: true
    • Symbol TCPIP_HTTP_NET_USE_POST
  • Enable Cookie Support:

    • Enable cookie processing and support
    • Default value: true
    • Symbol TCPIP_HTTP_NET_USE_COOKIES
  • Use Base 64 Decode:

    • Enable the usage of Bas64 encode/decode
    • Default value: false
    • Symbol TCPIP_HTTP_NET_USE_BASE64_DECODE
  • Enable Basic Authentication Support:

    • Enable HTTP basic authentication support
    • Parses the "Authorization:" header for a request and verifies the credentials.
    • Default value: true
    • Symbol TCPIP_HTTP_NET_USE_AUTHENTICATION
  • Use non-persistent connections:

    • Use non-persistent connections
    • This flag will cause the HTTP connections to be non-persistent and closed after serving each request to the client
    • By default the HTTP connections are persistent
    • Default value: false
    • Symbol TCPIP_HTTP_NET_CONFIG_FLAG_NON_PERSISTENT, TCPIP_HTTP_NET_CONFIG_FLAGS
  • HTTP sockets created with NO-DELAY option:

    • Create the HTTP sockets with NO-DELAY option.
    • The socket will flush data as soon as possible.
    • Default value: false
    • Symbol TCPIP_HTTP_NET_CONFIG_FLAG_NO_DELAY, TCPIP_HTTP_NET_CONFIG_FLAGS
  • All HTTP connections have to be secure:

    • All HTTP connections have to be secure (supposing the network presentation layer supports encryption)
    • Cannot be used together with TCPIP_HTTP_NET_MODULE_FLAG_SECURE_OFF
    • Default value: false
    • Symbol TCPIP_HTTP_NET_CONFIG_FLAG_SECURE_ON, TCPIP_HTTP_NET_CONFIG_FLAGS
  • All HTTP connections have to be non-secure:

    • HTTP connections will be non-secure
    • Cannot be used together with TCPIP_HTTP_NET_MODULE_FLAG_SECURE_ON
    • Default value: false
    • Symbol TCPIP_HTTP_NET_CONFIG_FLAG_SECURE_OFF, TCPIP_HTTP_NET_CONFIG_FLAGS
  • HTTP security is based on the port numbers:

    • HTTP security setting is dictated by the port numbers
    • Default value: true
    • Symbol TCPIP_HTTP_NET_CONFIG_FLAG_SECURE_DEFAULT, TCPIP_HTTP_NET_CONFIG_FLAGS
  • Enable the Processing of Dynamic Variables:

    • This symbol enables the processing of dynamic variables
    • Make it evaluate to false (0) if dynamic variables are not needed
    • All the following symbols referring to dynamic variables are relevant only when TCPIP_HTTP_NET_DYNVAR_PROCESS != 0
    • Default value: true
    • Symbol TCPIP_HTTP_NET_DYNVAR_PROCESS
  • Number of the Descriptors for Dynamic Variables Processing:

    • How many buffers descriptors for dynamic variable processing
    • They are independent of the HTTP connection number
    • All the HTTP connections use from the dynamic descriptors pool
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_DYNVAR_DESCRIPTORS_NUMBER
  • Maximum Size for a Complete Dynamic Variable: Name + Args:

    • Maximum size for a complete dynamic variable: name + args
    • Must be <= TCPIP_HTTP_NET_FILE_PROCESS_BUFFER_SIZE!
    • If it is much larger than needed then inefficiency occurs when reading data from the file and then discarding it because a much larger than needed data buffer was read
    • Default value: 50
    • Symbol TCPIP_HTTP_NET_DYNVAR_MAX_LEN
  • Maximum Number of Arguments for a Dynamic Variable:

    • Maximum number of arguments for a dynamic variable
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_DYNVAR_ARG_MAX_NUMBER
  • Retry Limit for a Dynamic Variable Processing:

    • Retry limit for a dynamic variable processing
    • This puts a limit on the number of times a dynamic variable "dynamicPrint" function can return TCPIP_HTTP_DYN_PRINT_RES_AGAIN/TCPIP_HTTP_DYN_PRINT_RES_PROCESS_AGAIN and avoids having the HTTP code locked up forever.
    • If more retries are attempted the processing will be considered done and dynamicPrint function will not be called again
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_DYNVAR_PROCESS_RETRIES
  • Enable the Processing of SSI Commands:

    • This symbol enables the processing of SSI commands
    • Make it evaluate to false (0) if SSI commands are not needed
    • All the following symbols referring to SSI commands are relevant only when TCPIP_HTTP_NET_SSI_PROCESS != 0
    • Default value: true
    • Symbol TCPIP_HTTP_NET_SSI_PROCESS
  • Maximum Number of Attributes for a SSI Command:

    • Maximum number of attributes for a SSI command
    • Most SSI commands take just one attribute/value pair per line but multiple attribute/value pairs on the same line are allowed where it makes sense
    • Default value: 4
    • Symbol TCPIP_HTTP_NET_SSI_ATTRIBUTES_MAX_NUMBER
  • Number of Static Attributes Associated to a SSI Command:

    • Number of static attributes associated to a SSI command
    • If the command has more attributes than this number the excess will be allocated dynamically
    • Default value: 2
    • Symbol TCPIP_HTTP_NET_SSI_STATIC_ATTTRIB_NUMBER
  • Maximum Size for a SSI Command Line: Command + Attribute/Value Pairs:

    • Maximum size for a SSI command line: command + attribute/value pairs
    • Must be <= TCPIP_HTTP_NET_FILE_PROCESS_BUFFER_SIZE!
    • If it is much larger than needed then inefficiency occurs when reading data from the file and then discarding it because a much larger than needed data buffer was read
    • Default value: 100
    • Symbol TCPIP_HTTP_NET_SSI_CMD_MAX_LEN
  • Maximum Number of SSI Variables that Can Be Created at Runtime:

    • Maximum number of SSI variables that can be created at run time
    • These variables are stored in an internal hash.
    • For max. efficiency this number should be a prime.
    • Default value: 13
    • Symbol TCPIP_HTTP_NET_SSI_VARIABLES_NUMBER
  • Maximum Length of a SSI Variable Name:

    • Maximum length of a SSI variable name
    • Any excess characters will be truncated
    • Note that this can result in multiple variables being represented as one SSI variable
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_SSI_VARIABLE_NAME_MAX_LENGTH
  • Maximum Size of a SSI String Variable Value:

    • Maximum size of a SSI string variable value
    • Any excess characters will be truncated
    • Note that the variable value requires SSI storage that is allocated dynamically
    • Also, this value determines the size of an automatic (stack) buffer when the variable is echoed.
    • If this value is large, make sure you have enough stack space.
    • Default value: 10
    • Symbol TCPIP_HTTP_NET_SSI_VARIABLE_STRING_MAX_LENGTH
  • Message to Echo when Echoing a Not Found Variable:

    • Message to echo when echoing a not found variable
    • Default value: "SSI Echo - Not Found: "
    • Symbol TCPIP_HTTP_NET_SSI_ECHO_NOT_FOUND_MESSAGE
  • Persistent Connection Idle Timeout (in sec):

    • Persistent connection idle timeout, in seconds
    • If a persistent connection is idle for more that this timeout the server will close it.
    • Usually the client closes the connection.
    • Using this timeout value the server can close the its side of the connection to avoid all connections to remain indefinitely open if the client misbehaves.
    • Use 0 to never timeout.
    • The timeout value has to be <= 32767 seconds.
    • Value is in seconds
    • Default value: 0
    • Symbol TCPIP_HTTP_NET_CONNECTION_TIMEOUT
  • HTTP NET allocation function, malloc style:

    • HTTP allocation function, malloc style
    • This is the function the HTTP will call to allocate memory needed for: dynamic variables, SSI or file uploads.
    • Use standard C library 'malloc' or 0 as a default
    • If it is 0, HTTP will use the allocation functions passed in at the stack initialization
    • Note: the used function should be multi-thread safe in an RTOS environment!
    • Default value: "malloc"
    • Symbol TCPIP_HTTP_NET_MALLOC_FUNC
  • HTTP NET deallocation function, free style:

    • HTTP corresponding deallocation function, free style
    • This is the function the HTTP will call for freeing the allocated memory
    • Use standard C library 'free' or 0 as a default
    • If it is 0, HTTP will use the allocation functions passed in at the stack initialization
    • Note: the used function should be multi-thread safe in an RTOS environment!
    • Default value: "free"
    • Symbol TCPIP_HTTP_NET_FREE_FUNC