xref: /minix3/minix/lib/liblwip/dist/src/include/lwip/apps/httpd_opts.h (revision 5d5fbe79c1b60734f34c69330aec5496644e8651)
1*5d5fbe79SDavid van Moolenbroek /**
2*5d5fbe79SDavid van Moolenbroek  * @file
3*5d5fbe79SDavid van Moolenbroek  * HTTP server options list
4*5d5fbe79SDavid van Moolenbroek  */
5*5d5fbe79SDavid van Moolenbroek 
6*5d5fbe79SDavid van Moolenbroek /*
7*5d5fbe79SDavid van Moolenbroek  * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
8*5d5fbe79SDavid van Moolenbroek  * All rights reserved.
9*5d5fbe79SDavid van Moolenbroek  *
10*5d5fbe79SDavid van Moolenbroek  * Redistribution and use in source and binary forms, with or without modification,
11*5d5fbe79SDavid van Moolenbroek  * are permitted provided that the following conditions are met:
12*5d5fbe79SDavid van Moolenbroek  *
13*5d5fbe79SDavid van Moolenbroek  * 1. Redistributions of source code must retain the above copyright notice,
14*5d5fbe79SDavid van Moolenbroek  *    this list of conditions and the following disclaimer.
15*5d5fbe79SDavid van Moolenbroek  * 2. Redistributions in binary form must reproduce the above copyright notice,
16*5d5fbe79SDavid van Moolenbroek  *    this list of conditions and the following disclaimer in the documentation
17*5d5fbe79SDavid van Moolenbroek  *    and/or other materials provided with the distribution.
18*5d5fbe79SDavid van Moolenbroek  * 3. The name of the author may not be used to endorse or promote products
19*5d5fbe79SDavid van Moolenbroek  *    derived from this software without specific prior written permission.
20*5d5fbe79SDavid van Moolenbroek  *
21*5d5fbe79SDavid van Moolenbroek  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
22*5d5fbe79SDavid van Moolenbroek  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
23*5d5fbe79SDavid van Moolenbroek  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
24*5d5fbe79SDavid van Moolenbroek  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25*5d5fbe79SDavid van Moolenbroek  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26*5d5fbe79SDavid van Moolenbroek  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27*5d5fbe79SDavid van Moolenbroek  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28*5d5fbe79SDavid van Moolenbroek  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
29*5d5fbe79SDavid van Moolenbroek  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
30*5d5fbe79SDavid van Moolenbroek  * OF SUCH DAMAGE.
31*5d5fbe79SDavid van Moolenbroek  *
32*5d5fbe79SDavid van Moolenbroek  * This file is part of the lwIP TCP/IP stack.
33*5d5fbe79SDavid van Moolenbroek  *
34*5d5fbe79SDavid van Moolenbroek  * Author: Adam Dunkels <adam@sics.se>
35*5d5fbe79SDavid van Moolenbroek  *
36*5d5fbe79SDavid van Moolenbroek  * This version of the file has been modified by Texas Instruments to offer
37*5d5fbe79SDavid van Moolenbroek  * simple server-side-include (SSI) and Common Gateway Interface (CGI)
38*5d5fbe79SDavid van Moolenbroek  * capability.
39*5d5fbe79SDavid van Moolenbroek  */
40*5d5fbe79SDavid van Moolenbroek 
41*5d5fbe79SDavid van Moolenbroek #ifndef LWIP_HDR_APPS_HTTPD_OPTS_H
42*5d5fbe79SDavid van Moolenbroek #define LWIP_HDR_APPS_HTTPD_OPTS_H
43*5d5fbe79SDavid van Moolenbroek 
44*5d5fbe79SDavid van Moolenbroek #include "lwip/opt.h"
45*5d5fbe79SDavid van Moolenbroek 
46*5d5fbe79SDavid van Moolenbroek /**
47*5d5fbe79SDavid van Moolenbroek  * @defgroup httpd_opts Options
48*5d5fbe79SDavid van Moolenbroek  * @ingroup httpd
49*5d5fbe79SDavid van Moolenbroek  * @{
50*5d5fbe79SDavid van Moolenbroek  */
51*5d5fbe79SDavid van Moolenbroek 
52*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support CGI (old style) */
53*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_CGI || defined __DOXYGEN__
54*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_CGI            0
55*5d5fbe79SDavid van Moolenbroek #endif
56*5d5fbe79SDavid van Moolenbroek 
57*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support CGI (new style) */
58*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_CGI_SSI || defined __DOXYGEN__
59*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_CGI_SSI        0
60*5d5fbe79SDavid van Moolenbroek #endif
61*5d5fbe79SDavid van Moolenbroek 
62*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support SSI (Server-Side-Includes) */
63*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SSI || defined __DOXYGEN__
64*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SSI            0
65*5d5fbe79SDavid van Moolenbroek #endif
66*5d5fbe79SDavid van Moolenbroek 
67*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to implement an SSI tag handler callback that gets a const char*
68*5d5fbe79SDavid van Moolenbroek  * to the tag (instead of an index into a pre-registered array of known tags) */
69*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SSI_RAW || defined __DOXYGEN__
70*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SSI_RAW        0
71*5d5fbe79SDavid van Moolenbroek #endif
72*5d5fbe79SDavid van Moolenbroek 
73*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support HTTP POST */
74*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SUPPORT_POST || defined __DOXYGEN__
75*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SUPPORT_POST   0
76*5d5fbe79SDavid van Moolenbroek #endif
77*5d5fbe79SDavid van Moolenbroek 
78*5d5fbe79SDavid van Moolenbroek /* The maximum number of parameters that the CGI handler can be sent. */
79*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_MAX_CGI_PARAMETERS || defined __DOXYGEN__
80*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_MAX_CGI_PARAMETERS 16
81*5d5fbe79SDavid van Moolenbroek #endif
82*5d5fbe79SDavid van Moolenbroek 
83*5d5fbe79SDavid van Moolenbroek /** LWIP_HTTPD_SSI_MULTIPART==1: SSI handler function is called with 2 more
84*5d5fbe79SDavid van Moolenbroek  * arguments indicating a counter for insert string that are too long to be
85*5d5fbe79SDavid van Moolenbroek  * inserted at once: the SSI handler function must then set 'next_tag_part'
86*5d5fbe79SDavid van Moolenbroek  * which will be passed back to it in the next call. */
87*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SSI_MULTIPART || defined __DOXYGEN__
88*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SSI_MULTIPART    0
89*5d5fbe79SDavid van Moolenbroek #endif
90*5d5fbe79SDavid van Moolenbroek 
91*5d5fbe79SDavid van Moolenbroek /* The maximum length of the string comprising the tag name */
92*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_MAX_TAG_NAME_LEN || defined __DOXYGEN__
93*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_MAX_TAG_NAME_LEN 8
94*5d5fbe79SDavid van Moolenbroek #endif
95*5d5fbe79SDavid van Moolenbroek 
96*5d5fbe79SDavid van Moolenbroek /* The maximum length of string that can be returned to replace any given tag */
97*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_MAX_TAG_INSERT_LEN || defined __DOXYGEN__
98*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_MAX_TAG_INSERT_LEN 192
99*5d5fbe79SDavid van Moolenbroek #endif
100*5d5fbe79SDavid van Moolenbroek 
101*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_POST_MANUAL_WND || defined __DOXYGEN__
102*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_POST_MANUAL_WND  0
103*5d5fbe79SDavid van Moolenbroek #endif
104*5d5fbe79SDavid van Moolenbroek 
105*5d5fbe79SDavid van Moolenbroek /** This string is passed in the HTTP header as "Server: " */
106*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_SERVER_AGENT || defined __DOXYGEN__
107*5d5fbe79SDavid van Moolenbroek #define HTTPD_SERVER_AGENT "lwIP/" LWIP_VERSION_STRING " (http://savannah.nongnu.org/projects/lwip)"
108*5d5fbe79SDavid van Moolenbroek #endif
109*5d5fbe79SDavid van Moolenbroek 
110*5d5fbe79SDavid van Moolenbroek /** Set this to 1 if you want to include code that creates HTTP headers
111*5d5fbe79SDavid van Moolenbroek  * at runtime. Default is off: HTTP headers are then created statically
112*5d5fbe79SDavid van Moolenbroek  * by the makefsdata tool. Static headers mean smaller code size, but
113*5d5fbe79SDavid van Moolenbroek  * the (readonly) fsdata will grow a bit as every file includes the HTTP
114*5d5fbe79SDavid van Moolenbroek  * header. */
115*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_DYNAMIC_HEADERS || defined __DOXYGEN__
116*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_DYNAMIC_HEADERS 0
117*5d5fbe79SDavid van Moolenbroek #endif
118*5d5fbe79SDavid van Moolenbroek 
119*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_DEBUG || defined __DOXYGEN__
120*5d5fbe79SDavid van Moolenbroek #define HTTPD_DEBUG         LWIP_DBG_OFF
121*5d5fbe79SDavid van Moolenbroek #endif
122*5d5fbe79SDavid van Moolenbroek 
123*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to use a memp pool for allocating
124*5d5fbe79SDavid van Moolenbroek  * struct http_state instead of the heap.
125*5d5fbe79SDavid van Moolenbroek  */
126*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_USE_MEM_POOL || defined __DOXYGEN__
127*5d5fbe79SDavid van Moolenbroek #define HTTPD_USE_MEM_POOL  0
128*5d5fbe79SDavid van Moolenbroek #endif
129*5d5fbe79SDavid van Moolenbroek 
130*5d5fbe79SDavid van Moolenbroek /** The server port for HTTPD to use */
131*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_SERVER_PORT || defined __DOXYGEN__
132*5d5fbe79SDavid van Moolenbroek #define HTTPD_SERVER_PORT                   80
133*5d5fbe79SDavid van Moolenbroek #endif
134*5d5fbe79SDavid van Moolenbroek 
135*5d5fbe79SDavid van Moolenbroek /** Maximum retries before the connection is aborted/closed.
136*5d5fbe79SDavid van Moolenbroek  * - number of times pcb->poll is called -> default is 4*500ms = 2s;
137*5d5fbe79SDavid van Moolenbroek  * - reset when pcb->sent is called
138*5d5fbe79SDavid van Moolenbroek  */
139*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_MAX_RETRIES || defined __DOXYGEN__
140*5d5fbe79SDavid van Moolenbroek #define HTTPD_MAX_RETRIES                   4
141*5d5fbe79SDavid van Moolenbroek #endif
142*5d5fbe79SDavid van Moolenbroek 
143*5d5fbe79SDavid van Moolenbroek /** The poll delay is X*500ms */
144*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_POLL_INTERVAL || defined __DOXYGEN__
145*5d5fbe79SDavid van Moolenbroek #define HTTPD_POLL_INTERVAL                 4
146*5d5fbe79SDavid van Moolenbroek #endif
147*5d5fbe79SDavid van Moolenbroek 
148*5d5fbe79SDavid van Moolenbroek /** Priority for tcp pcbs created by HTTPD (very low by default).
149*5d5fbe79SDavid van Moolenbroek  *  Lower priorities get killed first when running out of memory.
150*5d5fbe79SDavid van Moolenbroek  */
151*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_TCP_PRIO || defined __DOXYGEN__
152*5d5fbe79SDavid van Moolenbroek #define HTTPD_TCP_PRIO                      TCP_PRIO_MIN
153*5d5fbe79SDavid van Moolenbroek #endif
154*5d5fbe79SDavid van Moolenbroek 
155*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to enable timing each file sent */
156*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_TIMING || defined __DOXYGEN__
157*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_TIMING                   0
158*5d5fbe79SDavid van Moolenbroek #endif
159*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to enable timing each file sent */
160*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_DEBUG_TIMING || defined __DOXYGEN__
161*5d5fbe79SDavid van Moolenbroek #define HTTPD_DEBUG_TIMING                  LWIP_DBG_OFF
162*5d5fbe79SDavid van Moolenbroek #endif
163*5d5fbe79SDavid van Moolenbroek 
164*5d5fbe79SDavid van Moolenbroek /** Set this to one to show error pages when parsing a request fails instead
165*5d5fbe79SDavid van Moolenbroek     of simply closing the connection. */
166*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SUPPORT_EXTSTATUS || defined __DOXYGEN__
167*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SUPPORT_EXTSTATUS        0
168*5d5fbe79SDavid van Moolenbroek #endif
169*5d5fbe79SDavid van Moolenbroek 
170*5d5fbe79SDavid van Moolenbroek /** Set this to 0 to drop support for HTTP/0.9 clients (to save some bytes) */
171*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SUPPORT_V09 || defined __DOXYGEN__
172*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SUPPORT_V09              1
173*5d5fbe79SDavid van Moolenbroek #endif
174*5d5fbe79SDavid van Moolenbroek 
175*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to enable HTTP/1.1 persistent connections.
176*5d5fbe79SDavid van Moolenbroek  * ATTENTION: If the generated file system includes HTTP headers, these must
177*5d5fbe79SDavid van Moolenbroek  * include the "Connection: keep-alive" header (pass argument "-11" to makefsdata).
178*5d5fbe79SDavid van Moolenbroek  */
179*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SUPPORT_11_KEEPALIVE || defined __DOXYGEN__
180*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SUPPORT_11_KEEPALIVE     0
181*5d5fbe79SDavid van Moolenbroek #endif
182*5d5fbe79SDavid van Moolenbroek 
183*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support HTTP request coming in in multiple packets/pbufs */
184*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SUPPORT_REQUESTLIST || defined __DOXYGEN__
185*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SUPPORT_REQUESTLIST      1
186*5d5fbe79SDavid van Moolenbroek #endif
187*5d5fbe79SDavid van Moolenbroek 
188*5d5fbe79SDavid van Moolenbroek #if LWIP_HTTPD_SUPPORT_REQUESTLIST
189*5d5fbe79SDavid van Moolenbroek /** Number of rx pbufs to enqueue to parse an incoming request (up to the first
190*5d5fbe79SDavid van Moolenbroek     newline) */
191*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_REQ_QUEUELEN || defined __DOXYGEN__
192*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_REQ_QUEUELEN             5
193*5d5fbe79SDavid van Moolenbroek #endif
194*5d5fbe79SDavid van Moolenbroek 
195*5d5fbe79SDavid van Moolenbroek /** Number of (TCP payload-) bytes (in pbufs) to enqueue to parse and incoming
196*5d5fbe79SDavid van Moolenbroek     request (up to the first double-newline) */
197*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_REQ_BUFSIZE || defined __DOXYGEN__
198*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_REQ_BUFSIZE              LWIP_HTTPD_MAX_REQ_LENGTH
199*5d5fbe79SDavid van Moolenbroek #endif
200*5d5fbe79SDavid van Moolenbroek 
201*5d5fbe79SDavid van Moolenbroek /** Defines the maximum length of a HTTP request line (up to the first CRLF,
202*5d5fbe79SDavid van Moolenbroek     copied from pbuf into this a global buffer when pbuf- or packet-queues
203*5d5fbe79SDavid van Moolenbroek     are received - otherwise the input pbuf is used directly) */
204*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_MAX_REQ_LENGTH || defined __DOXYGEN__
205*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_MAX_REQ_LENGTH           LWIP_MIN(1023, (LWIP_HTTPD_REQ_QUEUELEN * PBUF_POOL_BUFSIZE))
206*5d5fbe79SDavid van Moolenbroek #endif
207*5d5fbe79SDavid van Moolenbroek #endif /* LWIP_HTTPD_SUPPORT_REQUESTLIST */
208*5d5fbe79SDavid van Moolenbroek 
209*5d5fbe79SDavid van Moolenbroek /** This is the size of a static buffer used when URIs end with '/'.
210*5d5fbe79SDavid van Moolenbroek  * In this buffer, the directory requested is concatenated with all the
211*5d5fbe79SDavid van Moolenbroek  * configured default file names.
212*5d5fbe79SDavid van Moolenbroek  * Set to 0 to disable checking default filenames on non-root directories.
213*5d5fbe79SDavid van Moolenbroek  */
214*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_MAX_REQUEST_URI_LEN || defined __DOXYGEN__
215*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_MAX_REQUEST_URI_LEN      63
216*5d5fbe79SDavid van Moolenbroek #endif
217*5d5fbe79SDavid van Moolenbroek 
218*5d5fbe79SDavid van Moolenbroek /** Maximum length of the filename to send as response to a POST request,
219*5d5fbe79SDavid van Moolenbroek  * filled in by the application when a POST is finished.
220*5d5fbe79SDavid van Moolenbroek  */
221*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN || defined __DOXYGEN__
222*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_POST_MAX_RESPONSE_URI_LEN 63
223*5d5fbe79SDavid van Moolenbroek #endif
224*5d5fbe79SDavid van Moolenbroek 
225*5d5fbe79SDavid van Moolenbroek /** Set this to 0 to not send the SSI tag (default is on, so the tag will
226*5d5fbe79SDavid van Moolenbroek  * be sent in the HTML page */
227*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_SSI_INCLUDE_TAG || defined __DOXYGEN__
228*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_SSI_INCLUDE_TAG           1
229*5d5fbe79SDavid van Moolenbroek #endif
230*5d5fbe79SDavid van Moolenbroek 
231*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to call tcp_abort when tcp_close fails with memory error.
232*5d5fbe79SDavid van Moolenbroek  * This can be used to prevent consuming all memory in situations where the
233*5d5fbe79SDavid van Moolenbroek  * HTTP server has low priority compared to other communication. */
234*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR || defined __DOXYGEN__
235*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_ABORT_ON_CLOSE_MEM_ERROR  0
236*5d5fbe79SDavid van Moolenbroek #endif
237*5d5fbe79SDavid van Moolenbroek 
238*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to kill the oldest connection when running out of
239*5d5fbe79SDavid van Moolenbroek  * memory for 'struct http_state' or 'struct http_ssi_state'.
240*5d5fbe79SDavid van Moolenbroek  * ATTENTION: This puts all connections on a linked list, so may be kind of slow.
241*5d5fbe79SDavid van Moolenbroek  */
242*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_KILL_OLD_ON_CONNECTIONS_EXCEEDED || defined __DOXYGEN__
243*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_KILL_OLD_ON_CONNECTIONS_EXCEEDED 0
244*5d5fbe79SDavid van Moolenbroek #endif
245*5d5fbe79SDavid van Moolenbroek 
246*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to send URIs without extension without headers
247*5d5fbe79SDavid van Moolenbroek  * (who uses this at all??) */
248*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_OMIT_HEADER_FOR_EXTENSIONLESS_URI || defined __DOXYGEN__
249*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_OMIT_HEADER_FOR_EXTENSIONLESS_URI 0
250*5d5fbe79SDavid van Moolenbroek #endif
251*5d5fbe79SDavid van Moolenbroek 
252*5d5fbe79SDavid van Moolenbroek /** Default: Tags are sent from struct http_state and are therefore volatile */
253*5d5fbe79SDavid van Moolenbroek #if !defined HTTP_IS_TAG_VOLATILE || defined __DOXYGEN__
254*5d5fbe79SDavid van Moolenbroek #define HTTP_IS_TAG_VOLATILE(ptr) TCP_WRITE_FLAG_COPY
255*5d5fbe79SDavid van Moolenbroek #endif
256*5d5fbe79SDavid van Moolenbroek 
257*5d5fbe79SDavid van Moolenbroek /* By default, the httpd is limited to send 2*pcb->mss to keep resource usage low
258*5d5fbe79SDavid van Moolenbroek    when http is not an important protocol in the device. */
259*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_LIMIT_SENDING_TO_2MSS || defined __DOXYGEN__
260*5d5fbe79SDavid van Moolenbroek #define HTTPD_LIMIT_SENDING_TO_2MSS 1
261*5d5fbe79SDavid van Moolenbroek #endif
262*5d5fbe79SDavid van Moolenbroek 
263*5d5fbe79SDavid van Moolenbroek /* Define this to a function that returns the maximum amount of data to enqueue.
264*5d5fbe79SDavid van Moolenbroek    The function have this signature: u16_t fn(struct tcp_pcb* pcb); */
265*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_MAX_WRITE_LEN || defined __DOXYGEN__
266*5d5fbe79SDavid van Moolenbroek #if HTTPD_LIMIT_SENDING_TO_2MSS
267*5d5fbe79SDavid van Moolenbroek #define HTTPD_MAX_WRITE_LEN(pcb)    (2 * tcp_mss(pcb))
268*5d5fbe79SDavid van Moolenbroek #endif
269*5d5fbe79SDavid van Moolenbroek #endif
270*5d5fbe79SDavid van Moolenbroek 
271*5d5fbe79SDavid van Moolenbroek /*------------------- FS OPTIONS -------------------*/
272*5d5fbe79SDavid van Moolenbroek 
273*5d5fbe79SDavid van Moolenbroek /** Set this to 1 and provide the functions:
274*5d5fbe79SDavid van Moolenbroek  * - "int fs_open_custom(struct fs_file *file, const char *name)"
275*5d5fbe79SDavid van Moolenbroek  *    Called first for every opened file to allow opening files
276*5d5fbe79SDavid van Moolenbroek  *    that are not included in fsdata(_custom).c
277*5d5fbe79SDavid van Moolenbroek  * - "void fs_close_custom(struct fs_file *file)"
278*5d5fbe79SDavid van Moolenbroek  *    Called to free resources allocated by fs_open_custom().
279*5d5fbe79SDavid van Moolenbroek  */
280*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_CUSTOM_FILES || defined __DOXYGEN__
281*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_CUSTOM_FILES       0
282*5d5fbe79SDavid van Moolenbroek #endif
283*5d5fbe79SDavid van Moolenbroek 
284*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to support fs_read() to dynamically read file data.
285*5d5fbe79SDavid van Moolenbroek  * Without this (default=off), only one-block files are supported,
286*5d5fbe79SDavid van Moolenbroek  * and the contents must be ready after fs_open().
287*5d5fbe79SDavid van Moolenbroek  */
288*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_DYNAMIC_FILE_READ || defined __DOXYGEN__
289*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_DYNAMIC_FILE_READ  0
290*5d5fbe79SDavid van Moolenbroek #endif
291*5d5fbe79SDavid van Moolenbroek 
292*5d5fbe79SDavid van Moolenbroek /** Set this to 1 to include an application state argument per file
293*5d5fbe79SDavid van Moolenbroek  * that is opened. This allows to keep a state per connection/file.
294*5d5fbe79SDavid van Moolenbroek  */
295*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_FILE_STATE || defined __DOXYGEN__
296*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_FILE_STATE         0
297*5d5fbe79SDavid van Moolenbroek #endif
298*5d5fbe79SDavid van Moolenbroek 
299*5d5fbe79SDavid van Moolenbroek /** HTTPD_PRECALCULATED_CHECKSUM==1: include precompiled checksums for
300*5d5fbe79SDavid van Moolenbroek  * predefined (MSS-sized) chunks of the files to prevent having to calculate
301*5d5fbe79SDavid van Moolenbroek  * the checksums at runtime. */
302*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_PRECALCULATED_CHECKSUM || defined __DOXYGEN__
303*5d5fbe79SDavid van Moolenbroek #define HTTPD_PRECALCULATED_CHECKSUM  0
304*5d5fbe79SDavid van Moolenbroek #endif
305*5d5fbe79SDavid van Moolenbroek 
306*5d5fbe79SDavid van Moolenbroek /** LWIP_HTTPD_FS_ASYNC_READ==1: support asynchronous read operations
307*5d5fbe79SDavid van Moolenbroek  * (fs_read_async returns FS_READ_DELAYED and calls a callback when finished).
308*5d5fbe79SDavid van Moolenbroek  */
309*5d5fbe79SDavid van Moolenbroek #if !defined LWIP_HTTPD_FS_ASYNC_READ || defined __DOXYGEN__
310*5d5fbe79SDavid van Moolenbroek #define LWIP_HTTPD_FS_ASYNC_READ      0
311*5d5fbe79SDavid van Moolenbroek #endif
312*5d5fbe79SDavid van Moolenbroek 
313*5d5fbe79SDavid van Moolenbroek /** Filename (including path) to use as FS data file */
314*5d5fbe79SDavid van Moolenbroek #if !defined HTTPD_FSDATA_FILE || defined __DOXYGEN__
315*5d5fbe79SDavid van Moolenbroek /* HTTPD_USE_CUSTOM_FSDATA: Compatibility with deprecated lwIP option */
316*5d5fbe79SDavid van Moolenbroek #if defined(HTTPD_USE_CUSTOM_FSDATA) && (HTTPD_USE_CUSTOM_FSDATA != 0)
317*5d5fbe79SDavid van Moolenbroek #define HTTPD_FSDATA_FILE "fsdata_custom.c"
318*5d5fbe79SDavid van Moolenbroek #else
319*5d5fbe79SDavid van Moolenbroek #define HTTPD_FSDATA_FILE "fsdata.c"
320*5d5fbe79SDavid van Moolenbroek #endif
321*5d5fbe79SDavid van Moolenbroek #endif
322*5d5fbe79SDavid van Moolenbroek 
323*5d5fbe79SDavid van Moolenbroek /**
324*5d5fbe79SDavid van Moolenbroek  * @}
325*5d5fbe79SDavid van Moolenbroek  */
326*5d5fbe79SDavid van Moolenbroek 
327*5d5fbe79SDavid van Moolenbroek #endif /* LWIP_HDR_APPS_HTTPD_OPTS_H */
328