1# Copyright (c) 2016 Intel Corporation
2# SPDX-License-Identifier: Apache-2.0
3
4config HTTP_PARSER
5	bool "HTTP Parser support"
6	select HTTP_PARSER_URL
7	help
8	  This option enables the http_parser library from nodejs.
9	  This parser requires some string-related routines commonly
10	  provided by a libc implementation.
11
12config HTTP_PARSER_URL
13	bool "HTTP Parser for URL support"
14	help
15	  This option enables the URI parser library based on source from nodejs.
16	  This parser requires some string-related routines commonly
17	  provided by a libc implementation.
18
19config HTTP_PARSER_STRICT
20	bool "HTTP strict parsing"
21	depends on (HTTP_PARSER || HTTP_PARSER_URL)
22	help
23	  This option enables the strict parsing option
24
25config HTTP_CLIENT
26	bool "HTTP client API"
27	select HTTP_PARSER
28	select HTTP_PARSER_URL
29	help
30	  HTTP client API
31
32config HTTP_SERVER
33	bool "HTTP Server [EXPERIMENTAL]"
34	select HTTP_PARSER
35	select HTTP_PARSER_URL
36	select EXPERIMENTAL
37	help
38	  HTTP1 and HTTP2 server support.
39
40if HTTP_SERVER
41
42config HTTP_SERVER_STACK_SIZE
43	int "HTTP server thread stack size"
44	default 3072
45	help
46	  HTTP server thread stack size for processing RX/TX events.
47
48config HTTP_SERVER_NUM_SERVICES
49	int "Number of HTTP Server Instances"
50	default 1
51	range 1 100
52	help
53	  This setting determines the number of http services that the server supports.
54
55config HTTP_SERVER_MAX_CLIENTS
56	int "Max number of HTTP/2 clients"
57	default 3
58	range 1 100
59	help
60	  This setting determines the maximum number of HTTP/2 clients that the server can handle at once.
61
62config HTTP_SERVER_MAX_STREAMS
63	int "Max number of HTTP/2 streams"
64	default 10
65	range 1 100
66	help
67	  This setting determines the maximum number of HTTP/2 streams for each client.
68
69config HTTP_SERVER_CLIENT_BUFFER_SIZE
70	int "Client Buffer Size"
71	default 256
72	range 64 $(UINT32_MAX)
73	help
74	  This setting determines the buffer size for each client.
75
76config HTTP_SERVER_HUFFMAN_DECODE_BUFFER_SIZE
77	int "Size of the buffer used for decoding Huffman-encoded strings"
78	default 256
79	range 64 $(UINT32_MAX)
80	help
81	  Size of the buffer used for decoding Huffman-encoded strings when
82	  processing HPACK compressed headers. This effectively limits the
83	  maximum length of an individual HTTP header supported.
84
85config HTTP_SERVER_MAX_URL_LENGTH
86	int "Maximum HTTP URL Length"
87	default 256
88	range 32 2048
89	help
90	  This setting determines the maximum length of the HTTP URL that the server can process.
91
92config HTTP_SERVER_MAX_CONTENT_TYPE_LENGTH
93	int "Maximum HTTP Content-Type Length"
94	default 64
95	range 1 128
96	help
97	  This setting determines the maximum length of the HTTP Content-Length field.
98
99config HTTP_SERVER_CLIENT_INACTIVITY_TIMEOUT
100	int "Client inactivity timeout (seconds)"
101	default 10
102	range 1 86400
103	help
104	  This timeout specifies maximum time the client may remain inactive
105	  (i. e. not sending or receiving any data) before the server drops the
106	  connection.
107
108config HTTP_SERVER_WEBSOCKET
109	bool "Allow upgrading to Websocket connection"
110	select WEBSOCKET_CLIENT
111	select WEBSOCKET
112	help
113	  If this is enabled, then the user can allow the HTTP connection to be
114	  upgraded to a Websocket connection. The user can then define a Websocket
115	  handler that is called after upgrading to handle the Websocket network
116	  traffic.
117
118config HTTP_SERVER_RESOURCE_WILDCARD
119	bool "Allow wildcard matching of resources"
120	select FNMATCH
121	help
122	  Allow user to specify wildcards when setting up resource strings.
123	  This means that instead of specifying multiple resources with exact
124	  string matches, one resource handler could handle multiple URLs.
125
126config HTTP_SERVER_RESTART_DELAY
127	int "Delay before re-initialization when restarting server"
128	default 1000
129	range 1 60000
130	help
131	  In case server restarts for any reason, the server re-initialization
132	  will be delayed by this value (miliseconds). The delay is needed to
133	  allow any existing connections to finalize to avoid binding errors
134	  during initialization.
135
136endif
137
138# Hidden option to avoid having multiple individual options that are ORed together
139config HTTP
140	bool
141	depends on (HTTP_PARSER_URL || HTTP_PARSER || HTTP_CLIENT || HTTP_SERVER)
142	default y
143
144module = NET_HTTP
145module-dep = NET_LOG
146module-str = Log level for HTTP client library
147module-help = Enables HTTP client code to output debug messages.
148source "subsys/net/Kconfig.template.log_config.net"
149
150module = NET_HTTP_SERVER
151module-dep = NET_LOG
152module-str = Log level for HTTP server library
153module-help = Enables HTTP server code to output debug messages.
154source "subsys/net/Kconfig.template.log_config.net"
155