]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Improve encryption requirement error code
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 20 Nov 2018 16:59:21 +0000 (16:59 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 20 Nov 2018 20:45:22 +0000 (20:45 +0000)
src/libutil/http.c

index bc4fc52837089186f861edf1c4165b3577578827..a82fc24f7a3360701f765aa0348f30951fee7c5a 100644 (file)
@@ -45,6 +45,7 @@ enum rspamd_http_priv_flags {
        RSPAMD_HTTP_CONN_FLAG_NEW_HEADER = 1 << 1,
        RSPAMD_HTTP_CONN_FLAG_RESETED = 1 << 2,
        RSPAMD_HTTP_CONN_FLAG_TOO_LARGE = 1 << 3,
+       RSPAMD_HTTP_CONN_FLAG_ENCRYPTION_NEEDED = 1 << 4,
 };
 
 #define IS_CONN_ENCRYPTED(c) ((c)->flags & RSPAMD_HTTP_CONN_FLAG_ENCRYPTED)
@@ -915,6 +916,7 @@ rspamd_http_on_message_complete (http_parser * parser)
        priv = conn->priv;
 
        if ((conn->opts & RSPAMD_HTTP_REQUIRE_ENCRYPTION) && !IS_CONN_ENCRYPTED (priv)) {
+               priv->flags |= RSPAMD_HTTP_CONN_FLAG_ENCRYPTION_NEEDED;
                msg_err ("unencrypted connection when encryption has been requested");
                return -1;
        }
@@ -1185,8 +1187,12 @@ rspamd_http_event_handler (int fd, short what, gpointer ud)
                                                        "Request entity too large: %zu",
                                                        (size_t)priv->parser.content_length);
                                }
+                               else if (priv->flags & RSPAMD_HTTP_CONN_FLAG_ENCRYPTION_NEEDED) {
+                                       err = g_error_new (HTTP_ERROR, 400,
+                                                       "Encryption required");
+                               }
                                else {
-                                       err = g_error_new (HTTP_ERROR, priv->parser.http_errno,
+                                       err = g_error_new (HTTP_ERROR, 500 + priv->parser.http_errno,
                                                        "HTTP parser error: %s",
                                                        http_errno_description (priv->parser.http_errno));
                                }