]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] More cleanups for compression stuff
authorVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 4 Aug 2025 19:46:33 +0000 (20:46 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 4 Aug 2025 19:46:33 +0000 (20:46 +0100)
src/rspamd_proxy.c

index d38594eff30efec3c43b32f6866ca418e2cc138f..be5e162c70f59101639c101b8e34a111906d2f74 100644 (file)
@@ -1335,6 +1335,7 @@ proxy_request_compress(struct rspamd_http_message *msg)
                ZSTD_freeCCtx(zctx);
                rspamd_http_message_set_body_from_fstring_steal(msg, body);
                rspamd_http_message_add_header(msg, COMPRESSION_HEADER, "zstd");
+               rspamd_http_message_add_header(msg, CONTENT_ENCODING_HEADER, "zstd");
        }
 }
 
@@ -2146,6 +2147,12 @@ proxy_backend_master_finish_handler(struct rspamd_http_connection *conn,
                        rspamd_http_message_remove_header(msg, "Content-Type");
                }
 
+               /* Check if client supports compression and compress response if needed */
+               const rspamd_ftok_t *accept_encoding = rspamd_http_message_find_header(session->client_message, "Accept-Encoding");
+               if (accept_encoding && rspamd_substring_search_caseless(accept_encoding->begin, accept_encoding->len, "zstd", 4) != -1) {
+                       proxy_request_compress(msg);
+               }
+
                rspamd_http_connection_write_message(session->client_conn,
                                                                                         msg, NULL, passed_ct, session,
                                                                                         bk_conn->timeout);