瀏覽代碼

Merge pull request #4802 from rspamd/vstakhov-proxy-host-fixes

Deal with `Connection` and `Host` headers on proxying
tags/3.8.2
Vsevolod Stakhov 3 月之前
父節點
當前提交
9259503f04
No account linked to committer's email address
共有 1 個文件被更改,包括 23 次插入1 次删除
  1. 23
    1
      src/rspamd_proxy.c

+ 23
- 1
src/rspamd_proxy.c 查看文件

@@ -1,5 +1,5 @@
/*
* Copyright 2023 Vsevolod Stakhov
* Copyright 2024 Vsevolod Stakhov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1443,6 +1443,14 @@ proxy_open_mirror_connections(struct rspamd_proxy_session *session)
continue;
}

const char *up_name = rspamd_upstream_name(bk_conn->up);

if (up_name) {
rspamd_http_message_remove_header(msg, "Host");
rspamd_http_message_add_header(msg, "Host", up_name);
}
rspamd_http_message_add_header(msg, "Connection", "close");

if (msg->url->len == 0) {
msg->url = rspamd_fstring_append(msg->url, "/check", strlen("/check"));
}
@@ -1927,8 +1935,14 @@ proxy_send_master_message(struct rspamd_proxy_session *session)
if (backend == NULL) {
backend = session->ctx->default_upstream;
}

/* Remove the original Host header */
rspamd_http_message_remove_header(session->client_message, "Host");
}

/* Remove the original `Connection` header */
rspamd_http_message_remove_header(session->client_message, "Connection");

if (backend == NULL) {
/* No backend */
msg_err_session("cannot find upstream for %s", host ? hostbuf : "default");
@@ -2004,6 +2018,14 @@ proxy_send_master_message(struct rspamd_proxy_session *session)
goto err; /* No fallback here */
}

/* Add new Host header */
const char *up_name = rspamd_upstream_name(session->master_conn->up);

if (up_name) {
rspamd_http_message_add_header(msg, "Host", up_name);
}
rspamd_http_message_add_header(msg, "Connection", "close");

session->master_conn->backend_conn = rspamd_http_connection_new_client_socket(
session->ctx->http_ctx,
NULL,

Loading…
取消
儲存