]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Avoid unnecessary dynamic allocation
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 24 Oct 2017 18:39:29 +0000 (19:39 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 25 Oct 2017 06:46:49 +0000 (07:46 +0100)
src/libserver/protocol.c
src/libutil/http.c
src/libutil/http_private.h
src/lua/lua_http.c

index 69427e8b50c7787bd75901e207b15b29cd1c1dd0..6180adccbf7c241f9c988bbb84b88a9358d48b66 100644 (file)
@@ -220,8 +220,8 @@ rspamd_protocol_handle_headers (struct rspamd_task *task,
 
        HASH_ITER (hh, msg->headers, header, htmp) {
                DL_FOREACH (header, h) {
-                       hn = rspamd_fstring_new_init (h->name->begin, h->name->len);
-                       hv = rspamd_fstring_new_init (h->value->begin, h->value->len);
+                       hn = rspamd_fstring_new_init (h->name.begin, h->name.len);
+                       hv = rspamd_fstring_new_init (h->value.begin, h->value.len);
                        hn_tok = rspamd_ftok_map (hn);
                        hv_tok = rspamd_ftok_map (hv);
 
index 5ad9a6d144750f24611ec94aaebc528d5395985a..5832f00076743bc11c0c64c7a21ce5394a3da69b 100644 (file)
@@ -471,17 +471,17 @@ static inline void
 rspamd_http_check_special_header (struct rspamd_http_connection *conn,
                struct rspamd_http_connection_private *priv)
 {
-       if (rspamd_ftok_casecmp (priv->header->name, &date_header) == 0) {
-               priv->msg->date = rspamd_http_parse_date (priv->header->value->begin,
-                               priv->header->value->len);
+       if (rspamd_ftok_casecmp (&priv->header->name, &date_header) == 0) {
+               priv->msg->date = rspamd_http_parse_date (priv->header->value.begin,
+                               priv->header->value.len);
        }
-       else if (rspamd_ftok_casecmp (priv->header->name, &key_header) == 0) {
-               rspamd_http_parse_key (priv->header->value, conn, priv);
+       else if (rspamd_ftok_casecmp (&priv->header->name, &key_header) == 0) {
+               rspamd_http_parse_key (&priv->header->value, conn, priv);
        }
-       else if (rspamd_ftok_casecmp (priv->header->name, &last_modified_header) == 0) {
+       else if (rspamd_ftok_casecmp (&priv->header->name, &last_modified_header) == 0) {
                priv->msg->last_modified = rspamd_http_parse_date (
-                               priv->header->value->begin,
-                               priv->header->value->len);
+                               priv->header->value.begin,
+                               priv->header->value.len);
        }
 }
 
@@ -527,18 +527,18 @@ rspamd_http_finish_header (struct rspamd_http_connection *conn,
 
        priv->header->combined = rspamd_fstring_append (priv->header->combined,
                        "\r\n", 2);
-       priv->header->value->len = priv->header->combined->len -
-                       priv->header->name->len - 4;
-       priv->header->value->begin = priv->header->combined->str +
-                       priv->header->name->len + 2;
-       priv->header->name->begin = priv->header->combined->str;
+       priv->header->value.len = priv->header->combined->len -
+                       priv->header->name.len - 4;
+       priv->header->value.begin = priv->header->combined->str +
+                       priv->header->name.len + 2;
+       priv->header->name.begin = priv->header->combined->str;
 
-       HASH_FIND (hh, priv->msg->headers, priv->header->name->begin,
-                       priv->header->name->len, hdr);
+       HASH_FIND (hh, priv->msg->headers, priv->header->name.begin,
+                       priv->header->name.len, hdr);
 
        if (hdr == NULL) {
-               HASH_ADD_KEYPTR (hh, priv->msg->headers, priv->header->name->begin,
-                               priv->header->name->len, priv->header);
+               HASH_ADD_KEYPTR (hh, priv->msg->headers, priv->header->name.begin,
+                               priv->header->name.len, priv->header);
        }
 
        DL_APPEND (hdr, priv->header);
@@ -550,8 +550,6 @@ static void
 rspamd_http_init_header (struct rspamd_http_connection_private *priv)
 {
        priv->header = g_slice_alloc0 (sizeof (struct rspamd_http_header));
-       priv->header->name = g_slice_alloc0 (sizeof (*priv->header->name));
-       priv->header->value = g_slice_alloc0 (sizeof (*priv->header->value));
        priv->header->combined = rspamd_fstring_new ();
 }
 
@@ -601,7 +599,7 @@ rspamd_http_on_header_value (http_parser * parser,
                priv->flags |= RSPAMD_HTTP_CONN_FLAG_NEW_HEADER;
                priv->header->combined = rspamd_fstring_append (priv->header->combined,
                                ": ", 2);
-               priv->header->name->len = priv->header->combined->len - 2;
+               priv->header->name.len = priv->header->combined->len - 2;
        }
 
        priv->header->combined = rspamd_fstring_append (priv->header->combined,
@@ -862,8 +860,6 @@ rspamd_http_decrypt_message (struct rspamd_http_connection *conn,
 
                DL_FOREACH_SAFE (hdr, hcur, hcurtmp) {
                        rspamd_fstring_free (hcur->combined);
-                       g_slice_free1 (sizeof (*hcur->name), hcur->name);
-                       g_slice_free1 (sizeof (*hcur->value), hcur->value);
                        g_slice_free1 (sizeof (struct rspamd_http_header), hcur);
                }
        }
@@ -1490,21 +1486,20 @@ rspamd_http_connection_copy_msg (struct rspamd_http_message *msg)
 
                DL_FOREACH (hdr, hcur) {
                        nhdr = g_slice_alloc (sizeof (struct rspamd_http_header));
-                       nhdr->name = g_slice_alloc (sizeof (*hcur->name));
-                       nhdr->value = g_slice_alloc (sizeof (*hcur->value));
+
                        nhdr->combined = rspamd_fstring_new_init (hcur->combined->str,
                                        hcur->combined->len);
-                       nhdr->name->begin = nhdr->combined->str +
-                                       (hcur->name->begin - hcur->combined->str);
-                       nhdr->name->len = hcur->name->len;
-                       nhdr->value->begin = nhdr->combined->str +
-                                       (hcur->value->begin - hcur->combined->str);
-                       nhdr->value->len = hcur->value->len;
+                       nhdr->name.begin = nhdr->combined->str +
+                                       (hcur->name.begin - hcur->combined->str);
+                       nhdr->name.len = hcur->name.len;
+                       nhdr->value.begin = nhdr->combined->str +
+                                       (hcur->value.begin - hcur->combined->str);
+                       nhdr->value.len = hcur->value.len;
                        DL_APPEND (nhdrs, nhdr);
                }
 
-               HASH_ADD_KEYPTR (hh, new_msg->headers, nhdrs->name->begin,
-                               nhdrs->name->len, nhdrs);
+               HASH_ADD_KEYPTR (hh, new_msg->headers, nhdrs->name.begin,
+                               nhdrs->name.len, nhdrs);
        }
 
        return new_msg;
@@ -2808,8 +2803,6 @@ rspamd_http_message_free (struct rspamd_http_message *msg)
 
                DL_FOREACH_SAFE (hdr, hcur, hcurtmp) {
                        rspamd_fstring_free (hcur->combined);
-                       g_slice_free1 (sizeof (*hcur->name), hcur->name);
-                       g_slice_free1 (sizeof (*hcur->value), hcur->value);
                        g_slice_free1 (sizeof (struct rspamd_http_header), hcur);
                }
        }
@@ -2865,19 +2858,17 @@ rspamd_http_message_add_header_len (struct rspamd_http_message *msg,
                hdr->combined = rspamd_fstring_sized_new (nlen + vlen + 4);
                rspamd_printf_fstring (&hdr->combined, "%s: %*s\r\n", name, (gint)vlen,
                                value);
-               hdr->value = g_slice_alloc (sizeof (*hdr->value));
-               hdr->name = g_slice_alloc (sizeof (*hdr->name));
-               hdr->name->begin = hdr->combined->str;
-               hdr->name->len = nlen;
-               hdr->value->begin = hdr->combined->str + nlen + 2;
-               hdr->value->len = vlen;
+               hdr->name.begin = hdr->combined->str;
+               hdr->name.len = nlen;
+               hdr->value.begin = hdr->combined->str + nlen + 2;
+               hdr->value.len = vlen;
 
-               HASH_FIND (hh, msg->headers, hdr->name->begin,
-                               hdr->name->len, found);
+               HASH_FIND (hh, msg->headers, hdr->name.begin,
+                               hdr->name.len, found);
 
                if (found == NULL) {
-                       HASH_ADD_KEYPTR (hh, msg->headers, hdr->name->begin,
-                                       hdr->name->len, hdr);
+                       HASH_ADD_KEYPTR (hh, msg->headers, hdr->name.begin,
+                                       hdr->name.len, hdr);
                }
 
                DL_APPEND (found, hdr);
@@ -2908,19 +2899,17 @@ rspamd_http_message_add_header_fstr (struct rspamd_http_message *msg,
                vlen = value->len;
                hdr->combined = rspamd_fstring_sized_new (nlen + vlen + 4);
                rspamd_printf_fstring (&hdr->combined, "%s: %V\r\n", name, value);
-               hdr->value = g_slice_alloc (sizeof (*hdr->value));
-               hdr->name = g_slice_alloc (sizeof (*hdr->name));
-               hdr->name->begin = hdr->combined->str;
-               hdr->name->len = nlen;
-               hdr->value->begin = hdr->combined->str + nlen + 2;
-               hdr->value->len = vlen;
+               hdr->name.begin = hdr->combined->str;
+               hdr->name.len = nlen;
+               hdr->value.begin = hdr->combined->str + nlen + 2;
+               hdr->value.len = vlen;
 
-               HASH_FIND (hh, msg->headers, hdr->name->begin,
-                               hdr->name->len, found);
+               HASH_FIND (hh, msg->headers, hdr->name.begin,
+                               hdr->name.len, found);
 
                if (found == NULL) {
-                       HASH_ADD_KEYPTR (hh, msg->headers, hdr->name->begin,
-                                       hdr->name->len, hdr);
+                       HASH_ADD_KEYPTR (hh, msg->headers, hdr->name.begin,
+                                       hdr->name.len, hdr);
                }
 
                DL_APPEND (found, hdr);
@@ -2939,7 +2928,7 @@ rspamd_http_message_find_header (struct rspamd_http_message *msg,
                HASH_FIND (hh, msg->headers, name, slen, hdr);
 
                if (hdr) {
-                       res = hdr->value;
+                       res = &hdr->value;
                }
        }
 
@@ -2963,7 +2952,7 @@ rspamd_http_message_find_header_multiple (
                        res = g_ptr_array_sized_new (4);
 
                        LL_FOREACH (hdr, cur) {
-                               g_ptr_array_add (res, cur->value);
+                               g_ptr_array_add (res, &cur->value);
                        }
                }
        }
@@ -2990,8 +2979,6 @@ rspamd_http_message_remove_header (struct rspamd_http_message *msg,
 
                        DL_FOREACH_SAFE (hdr, hcur, hcurtmp) {
                                rspamd_fstring_free (hcur->combined);
-                               g_slice_free1 (sizeof (*hcur->value), hcur->value);
-                               g_slice_free1 (sizeof (*hcur->name), hcur->name);
                                g_slice_free1 (sizeof (*hcur), hcur);
                        }
                }
index 1433e37e451b3aee13b2d303528fe020bcc94d4b..0e2658617dc8e317ddcc8c492fd1982d8dd8e54e 100644 (file)
@@ -26,9 +26,9 @@
  * HTTP header structure
  */
 struct rspamd_http_header {
-       rspamd_ftok_t *name;
-       rspamd_ftok_t *value;
        rspamd_fstring_t *combined;
+       rspamd_ftok_t name;
+       rspamd_ftok_t value;
        UT_hash_handle hh;
        struct rspamd_http_header *prev, *next;
 };
index 103a0eb1d29e99e3432178fb90c3c30f27bcab14..bf3af6c56983d43f52fcb4939575c60348e525bf 100644 (file)
@@ -208,9 +208,9 @@ lua_http_finish_handler (struct rspamd_http_connection *conn,
                /*
                 * Lowercase header name, as Lua cannot search in caseless matter
                 */
-               rspamd_str_lc (h->combined->str, h->name->len);
-               lua_pushlstring (cbd->L, h->name->begin, h->name->len);
-               lua_pushlstring (cbd->L, h->value->begin, h->value->len);
+               rspamd_str_lc (h->combined->str, h->name.len);
+               lua_pushlstring (cbd->L, h->name.begin, h->name.len);
+               lua_pushlstring (cbd->L, h->value.begin, h->value.len);
                lua_settable (cbd->L, -3);
        }