xref: /lighttpd1.4/src/response.h (revision f2e4e83a)
1 #ifndef _RESPONSE_H_
2 #define _RESPONSE_H_
3 #include "first.h"
4 
5 #include "base_decls.h"
6 #include "buffer.h"
7 #include "array.h"
8 
9 #include <time.h>
10 
11 int http_response_parse(server *srv, request_st *r);
12 
13 typedef struct http_cgi_opts_t {
14   int authorizer;
15   int break_scriptfilename_for_php;
16   const buffer *docroot;
17   const buffer *strip_request_uri;
18 } http_cgi_opts;
19 
20 enum {
21   BACKEND_UNSET = 0,
22   BACKEND_PROXY,
23   BACKEND_CGI,
24   BACKEND_FASTCGI,
25   BACKEND_SCGI
26 };
27 
28 typedef struct http_response_opts_t {
29   int fdfmt;
30   int backend;
31   int authorizer;
32   unsigned short local_redir;
33   unsigned short xsendfile_allow;
34   const array *xsendfile_docroot;
35   void *pdata;
36   handler_t(*parse)(request_st *, struct http_response_opts_t *, buffer *, size_t);
37   handler_t(*headers)(request_st *, struct http_response_opts_t *);
38 } http_response_opts;
39 
40 typedef int (*http_cgi_header_append_cb)(void *vdata, const char *k, size_t klen, const char *v, size_t vlen);
41 int http_cgi_headers(request_st *r, http_cgi_opts *opts, http_cgi_header_append_cb cb, void *vdata);
42 
43 handler_t http_response_parse_headers(request_st *r, http_response_opts *opts, buffer *hdrs);
44 handler_t http_response_read(request_st *r, http_response_opts *opts, buffer *b, fdnode *fdn);
45 
46 __attribute_cold__
47 handler_t http_response_reqbody_read_error(request_st *r, int http_status);
48 
49 int http_response_redirect_to_directory(request_st *r, int status);
50 int http_response_handle_cachable(request_st *r, const buffer *mtime);
51 void http_response_body_clear(request_st *r, int preserve_length);
52 void http_response_reset(request_st *r);
53 void http_response_send_file (request_st *r, buffer *path);
54 void http_response_backend_done (request_st *r);
55 void http_response_backend_error (request_st *r);
56 void http_response_upgrade_read_body_unknown(request_st *r);
57 
58 __attribute_cold__
59 int http_response_omit_header(request_st *r, const data_string *ds);
60 
61 void http_response_write_header(request_st *r);
62 handler_t http_response_handler(request_st *r);
63 
64 __attribute_cold__
65 void strftime_cache_reset(void);
66 
67 const buffer * strftime_cache_get(time_t last_mod);
68 #endif
69