diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2017-03-18 00:10:48 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2017-03-19 23:48:50 -0400 |
commit | 0a635fc8bef0d74bc661737afda0398d06d57a4e (patch) | |
tree | b57a7789035b2e1242278409f56bbc7f3816da18 /src/response.h | |
parent | 76ad82434fea78d319f5871400d3a9e52cafcf95 (diff) | |
download | lighttpd-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.h | 19 |
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); |