}
break;
case received_part_type::RSPAMD_RECEIVED_PART_FOR:
- rh.for_addr = rspamd_email_address_from_smtp(part.data.data(),
- part.data.size());
-
- if (rh.for_addr) {
- if (rh.for_addr->addr_len > 0) {
- rh.for_mbox = std::string_view{rh.for_addr->addr,
- rh.for_addr->addr_len};
- }
- }
+ rh.for_mbox.assign_copy(part.data);
+ rh.for_addr = rspamd_email_address_from_smtp(rh.for_mbox.data(),
+ rh.for_mbox.size());
break;
default:
/* Do nothing */
mime_string real_hostname;
mime_string real_ip;
mime_string by_hostname;
- std::string_view for_mbox;
+ mime_string for_mbox;
struct rspamd_email_address *for_addr = nullptr;
rspamd_inet_addr_t *addr = nullptr;
struct rspamd_mime_header *hdr = nullptr;
real_hostname = std::move(other.real_hostname);
real_ip = std::move(other.real_ip);
by_hostname = std::move(other.by_hostname);
- for_mbox = other.for_mbox;
+ for_mbox = std::move(other.for_mbox);
timestamp = other.timestamp;
flags = other.flags;
std::swap(for_addr, other.for_addr);
rh.from_ip = map.at("from_ip"sv);
}
if (map.contains("for_mbox")) {
- rh.for_mbox = map.at("for_mbox"sv);
+ rh.for_mbox.assign_copy(map.at("for_mbox"sv));
}
return rh;
map["from_ip"] = from_ip;
}
if (!for_mbox.empty()) {
- map["for_mbox"] = for_mbox;
+ map["for_mbox"] = for_mbox.as_view();
}
return map;