aboutsummaryrefslogtreecommitdiffstats
path: root/src/http_proxy.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-12 15:11:42 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-05-12 15:11:42 +0100
commit03bcabb80535bb9a3bc29d92c8eb26ed43262a98 (patch)
tree60a1b26444f31681e8001b2ebd25244012000345 /src/http_proxy.c
parent28f3a3e173bf5e34e0d95cf0e19d57f0a9fa70f3 (diff)
downloadrspamd-03bcabb80535bb9a3bc29d92c8eb26ed43262a98.tar.gz
rspamd-03bcabb80535bb9a3bc29d92c8eb26ed43262a98.zip
Fix finding headers in HTTP messages.
Diffstat (limited to 'src/http_proxy.c')
-rw-r--r--src/http_proxy.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/http_proxy.c b/src/http_proxy.c
index 5bae04029..b24057cc8 100644
--- a/src/http_proxy.c
+++ b/src/http_proxy.c
@@ -294,7 +294,8 @@ proxy_client_finish_handler (struct rspamd_http_connection *conn,
{
struct http_proxy_session *session = conn->ud;
struct rspamd_http_upstream *backend = NULL;
- const gchar *host;
+ const GString *host;
+ gchar hostbuf[512];
if (!session->replied) {
host = rspamd_http_message_find_header (msg, "Host");
@@ -303,7 +304,8 @@ proxy_client_finish_handler (struct rspamd_http_connection *conn,
backend = session->ctx->default_upstream;
}
else {
- backend = g_hash_table_lookup (session->ctx->upstreams, host);
+ rspamd_strlcpy (hostbuf, host->str, sizeof (hostbuf));
+ backend = g_hash_table_lookup (session->ctx->upstreams, hostbuf);
if (backend == NULL) {
backend = session->ctx->default_upstream;
@@ -312,14 +314,14 @@ proxy_client_finish_handler (struct rspamd_http_connection *conn,
if (backend == NULL) {
/* No backend */
- msg_err ("cannot find upstream for %s", host ? host : "default");
+ msg_err ("cannot find upstream for %s", host ? hostbuf : "default");
goto err;
}
else {
session->up = rspamd_upstream_get (backend->u, RSPAMD_UPSTREAM_ROUND_ROBIN);
if (session->up == NULL) {
- msg_err ("cannot select upstream for %s", host ? host : "default");
+ msg_err ("cannot select upstream for %s", host ? hostbuf : "default");
goto err;
}
@@ -327,7 +329,7 @@ proxy_client_finish_handler (struct rspamd_http_connection *conn,
rspamd_upstream_addr (session->up), SOCK_STREAM, TRUE);
if (session->backend_sock == -1) {
- msg_err ("cannot connect upstream for %s", host ? host : "default");
+ msg_err ("cannot connect upstream for %s", host ? hostbuf : "default");
rspamd_upstream_fail (session->up);
goto err;
}