summaryrefslogtreecommitdiff
path: root/src/response.h
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2017-03-18 00:10:48 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2017-03-19 23:48:50 -0400
commit0a635fc8bef0d74bc661737afda0398d06d57a4e (patch)
treeb57a7789035b2e1242278409f56bbc7f3816da18 /src/response.h
parent76ad82434fea78d319f5871400d3a9e52cafcf95 (diff)
downloadlighttpd-git-0a635fc8bef0d74bc661737afda0398d06d57a4e.tar.gz
[core] consolidate dynamic handler response parse
- consolidate dynamic handler HTTP response parsing code - reduce string copies for CGI, FastCGI, SCGI, proxy response headers - let read() signal EOF or EAGAIN instead of ioctl FIONREAD 0-data-ready
Diffstat (limited to 'src/response.h')
-rw-r--r--src/response.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/response.h b/src/response.h
index 0fc8bfcd..3d20eb1e 100644
--- a/src/response.h
+++ b/src/response.h
@@ -20,14 +20,31 @@ typedef struct http_cgi_opts_t {
buffer *strip_request_uri;
} http_cgi_opts;
+enum {
+ BACKEND_UNSET = 0,
+ BACKEND_PROXY,
+ BACKEND_CGI,
+ BACKEND_FASTCGI,
+ BACKEND_SCGI
+};
+
+typedef struct http_response_opts_t {
+ int backend;
+ int authorizer;
+ unsigned short local_redir;
+ unsigned short xsendfile_allow;
+ array *xsendfile_docroot;
+} http_response_opts;
+
typedef int (*http_cgi_header_append_cb)(void *vdata, const char *k, size_t klen, const char *v, size_t vlen);
int http_cgi_headers(server *srv, connection *con, http_cgi_opts *opts, http_cgi_header_append_cb cb, void *vdata);
+handler_t http_response_parse_headers(server *srv, connection *con, http_response_opts *opts, buffer *hdrs);
+handler_t http_response_read(server *srv, connection *con, http_response_opts *opts, buffer *b, int fd, int *fde_ndx);
handler_t http_response_prepare(server *srv, connection *con);
int http_response_redirect_to_directory(server *srv, connection *con);
int http_response_handle_cachable(server *srv, connection *con, buffer * mtime);
void http_response_send_file (server *srv, connection *con, buffer *path);
-void http_response_xsendfile (server *srv, connection *con, buffer *path, const array *xdocroot);
void http_response_backend_done (server *srv, connection *con);
void http_response_backend_error (server *srv, connection *con);