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);
}
}
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);
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 ();
}
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,
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);
}
}
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;
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);
}
}
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);
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);
HASH_FIND (hh, msg->headers, name, slen, hdr);
if (hdr) {
- res = hdr->value;
+ res = &hdr->value;
}
}
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);
}
}
}
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);
}
}