msg = rspamd_http_new_message (HTTP_RESPONSE);
- if (task->peer_key) {
- msg->peer_key = rspamd_http_connection_key_ref (task->peer_key);
+ if (rspamd_http_connection_is_encrypted (task->http_conn)) {
msg_info ("<%s> writing encrypted reply", task->message_id);
}
+
if (!RSPAMD_TASK_IS_JSON (task)) {
/* Turn compatibility on */
msg->method = HTTP_SYMBOLS;
if (task->settings != NULL) {
ucl_object_unref (task->settings);
}
- if (task->peer_key != NULL) {
- rspamd_http_connection_key_unref (task->peer_key);
- }
if (task->client_addr) {
rspamd_inet_address_destroy (task->client_addr);
}
} pre_result; /**< Result of pre-filters */
ucl_object_t *settings; /**< Settings applied to task */
- gpointer peer_key; /**< Peer's pubkey */
};
/**
priv->local_key = kp;
}
+gboolean
+rspamd_http_connection_is_encrypted (struct rspamd_http_connection *conn)
+{
+ struct rspamd_http_connection_private *priv = conn->priv;
+
+ if (priv->peer_key != NULL) {
+ return TRUE;
+ }
+ else if (priv->msg) {
+ return priv->msg->peer_key != NULL;
+ }
+
+ return FALSE;
+}
+
void
rspamd_http_connection_key_unref (gpointer key)
{
void rspamd_http_connection_set_key (struct rspamd_http_connection *conn,
gpointer key);
+/**
+ * Returns TRUE if a connection is encrypted
+ * @param conn
+ * @return
+ */
+gboolean rspamd_http_connection_is_encrypted (struct rspamd_http_connection *conn);
+
/** Print pubkey */
#define RSPAMD_KEYPAIR_PUBKEY 0x1
/** Print secret key */
case RDNS_REQUEST_A:
addr = rspamd_inet_address_new (AF_INET, &elt->content.a.addr);
rspamd_lua_ip_push (cd->L, addr);
+ rspamd_inet_address_destroy (addr);
lua_rawseti (cd->L, -2, ++i);
break;
case RDNS_REQUEST_AAAA:
addr = rspamd_inet_address_new (AF_INET6, &elt->content.aaa.addr);
rspamd_lua_ip_push (cd->L, addr);
+ rspamd_inet_address_destroy (addr);
lua_rawseti (cd->L, -2, ++i);
break;
case RDNS_REQUEST_PTR:
return 0;
}
- if (msg->peer_key) {
- task->peer_key = rspamd_http_connection_key_ref (msg->peer_key);
- }
if (!rspamd_task_process (task, msg, chunk, len, ctx->classify_pool, TRUE)) {
task->state = WRITE_REPLY;