aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libutil/http.c24
-rw-r--r--src/libutil/http.h2
-rw-r--r--src/rspamd_proxy.c4
3 files changed, 27 insertions, 3 deletions
diff --git a/src/libutil/http.c b/src/libutil/http.c
index 315598871..974a2b592 100644
--- a/src/libutil/http.c
+++ b/src/libutil/http.c
@@ -850,7 +850,8 @@ rspamd_http_decrypt_message (struct rspamd_http_connection *conn,
if (!rspamd_cryptobox_decrypt_nm_inplace (m, dec_len, nonce,
nm, m - rspamd_cryptobox_mac_bytes (mode), mode)) {
- msg_err ("cannot verify encrypted message");
+ msg_err ("cannot verify encrypted message, first bytes of the input: %*xs",
+ (gint)MIN(msg->body_buf.len, 64), msg->body_buf.begin);
return -1;
}
@@ -3936,3 +3937,24 @@ rspamd_http_normalize_path_inplace (gchar *path, guint len, guint *nlen)
*nlen = (o - path);
}
}
+
+void
+rspamd_http_connection_disable_encryption (struct rspamd_http_connection *conn)
+{
+ struct rspamd_http_connection_private *priv;
+
+ priv = conn->priv;
+
+ if (priv) {
+ if (priv->local_key) {
+ rspamd_keypair_unref (priv->local_key);
+ }
+ if (priv->peer_key) {
+ rspamd_pubkey_unref (priv->peer_key);
+ }
+
+ priv->local_key = NULL;
+ priv->peer_key = NULL;
+ priv->flags &= ~RSPAMD_HTTP_CONN_FLAG_ENCRYPTED;
+ }
+} \ No newline at end of file
diff --git a/src/libutil/http.h b/src/libutil/http.h
index 4ce9e0a84..c271caaa4 100644
--- a/src/libutil/http.h
+++ b/src/libutil/http.h
@@ -438,6 +438,8 @@ void rspamd_http_message_free (struct rspamd_http_message *msg);
void rspamd_http_connection_set_max_size (struct rspamd_http_connection *conn,
gsize sz);
+void rspamd_http_connection_disable_encryption (struct rspamd_http_connection *conn);
+
/**
* Increase refcount for shared file (if any) to prevent early memory unlinking
* @param msg
diff --git a/src/rspamd_proxy.c b/src/rspamd_proxy.c
index 5ec9cdce2..1d4324bdc 100644
--- a/src/rspamd_proxy.c
+++ b/src/rspamd_proxy.c
@@ -1499,10 +1499,10 @@ proxy_backend_master_error_handler (struct rspamd_http_connection *conn, GError
struct rspamd_proxy_session *session;
session = bk_conn->s;
- msg_info_session ("abnormally closing connection from backend: %s, error: %s,"
+ msg_info_session ("abnormally closing connection from backend: %s, error: %e,"
" retries left: %d",
rspamd_inet_address_to_string (rspamd_upstream_addr (session->master_conn->up)),
- err->message,
+ err,
session->ctx->max_retries - session->retries);
session->retries ++;
rspamd_upstream_fail (bk_conn->up);