From cf2c0de6972ac08d6e84f1e19301ee9e4c910651 Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Thu, 6 May 2021 20:55:44 +0200
Subject: [PATCH] Added Vary header

---
 src/client.c       | 19 +++++++++++++------
 src/lib/compress.h |  1 +
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/client.c b/src/client.c
index d7fbded..cf62b20 100644
--- a/src/client.c
+++ b/src/client.c
@@ -286,6 +286,9 @@ int client_request_handler(sock *client, unsigned long client_num, unsigned int
                         enc = COMPRESS_GZ;
                     }
                 }
+                if (enc != 0) {
+                    http_add_header_field(&res.hdr, "Vary", "Accept-Encoding");
+                }
             }
 
             if (uri.meta->etag[0] != 0) {
@@ -421,12 +424,16 @@ int client_request_handler(sock *client, unsigned long client_num, unsigned int
             use_fastcgi = 1;
 
             int http_comp = http_get_compression(&req, &res);
-            if (http_comp & COMPRESS_BR) {
-                use_fastcgi |= FASTCGI_COMPRESS_BR;
-                http_add_header_field(&res.hdr, "Content-Encoding", "br");
-            } else if (http_comp & COMPRESS_GZ) {
-                use_fastcgi |= FASTCGI_COMPRESS_GZ;
-                http_add_header_field(&res.hdr, "Content-Encoding", "gzip");
+            if (http_comp & COMPRESS) {
+                if (http_comp & COMPRESS_BR) {
+                    use_fastcgi |= FASTCGI_COMPRESS_BR;
+                    sprintf(buf0, "br");
+                } else if (http_comp & COMPRESS_GZ) {
+                    use_fastcgi |= FASTCGI_COMPRESS_GZ;
+                    sprintf(buf0, "gzip");
+                }
+                http_add_header_field(&res.hdr, "Vary", "Accept-Encoding");
+                http_add_header_field(&res.hdr, "Content-Encoding", buf0);
             }
 
             if (http_get_header_field(&res.hdr, "Content-Length") == NULL) {
diff --git a/src/lib/compress.h b/src/lib/compress.h
index ebc9abd..3ddcb17 100644
--- a/src/lib/compress.h
+++ b/src/lib/compress.h
@@ -16,6 +16,7 @@
 
 #define COMPRESS_GZ 1
 #define COMPRESS_BR 2
+#define COMPRESS 3
 
 typedef struct {
     int mode;