summaryrefslogtreecommitdiff
path: root/src/request.h
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2020-07-28 07:32:29 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2020-08-02 07:47:42 -0400
commit7420526ddb107d527cb9598f20cfbdc4f981840d (patch)
treee56fd73b4f4dbe183cbfbe6e33438da4fc9fe27c /src/request.h
parentdbd438cca037ca651fc444d8e89df2c48532a1e0 (diff)
downloadlighttpd-git-7420526ddb107d527cb9598f20cfbdc4f981840d.tar.gz
[core] decode Transfer-Encoding: chunked from gw
decode Transfer-Encoding: chunked from gw (gateway backends) Transfer-Encoding: chunked is a hop-by-hop header. Handling chunked encoding remove a hurdle for mod_proxy to send HTTP/1.1 requests to backends and be able to handle HTTP/1.1 responses. Other backends ought not to send Transfer-Encoding: chunked, but in practice, some implementations do.
Diffstat (limited to 'src/request.h')
-rw-r--r--src/request.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/request.h b/src/request.h
index 996a6c5a..aa5f1df1 100644
--- a/src/request.h
+++ b/src/request.h
@@ -95,6 +95,12 @@ typedef struct {
buffer etag;
} physical;
+typedef struct {
+ off_t gw_chunked;
+ buffer b;
+ int done;
+} response_dechunk;
+
/* the order of the items should be the same as they are processed
* read before write as we use this later e.g. <= CON_STATE_REQUEST_END */
typedef enum {
@@ -159,6 +165,7 @@ struct request_st {
char resp_body_finished;
char resp_body_started;
char resp_send_chunked;
+ char resp_decode_chunked;
char loops_per_request; /* catch endless loops in a single request */
char keep_alive; /* only request.c can enable it, all other just disable */
@@ -167,6 +174,7 @@ struct request_st {
struct chunkqueue *write_queue; /* HTTP response queue [ file, mem ] */
struct chunkqueue *read_queue; /* HTTP request queue [ mem ] */
buffer *tmp_buf; /* shared; same as srv->tmp_buf */
+ response_dechunk *gw_dechunk;
struct timespec start_hp;
time_t start_ts;