mail/rspamd: Backport important fixes from the upstream
This commit is contained in:
parent
835b479670
commit
7a34813aa2
@ -1,5 +1,6 @@
|
||||
PORTNAME= rspamd
|
||||
PORTVERSION= 3.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= mail
|
||||
|
||||
MAINTAINER= vsevolod@FreeBSD.org
|
||||
|
21
mail/rspamd/files/patch-src_libserver_hyperscan_tools.cxx
Normal file
21
mail/rspamd/files/patch-src_libserver_hyperscan_tools.cxx
Normal file
@ -0,0 +1,21 @@
|
||||
diff --git a/src/libserver/hyperscan_tools.cxx b/src/libserver/hyperscan_tools.cxx
|
||||
index 6187208a9..96366067d 100644
|
||||
--- src/libserver/hyperscan_tools.cxx
|
||||
+++ src/libserver/hyperscan_tools.cxx
|
||||
@@ -306,7 +306,15 @@ auto load_cached_hs_file(const char *fname, std::int64_t offset = 0) -> tl::expe
|
||||
msg_debug_hyperscan_lambda("multipattern: create new database in %s; %Hz size",
|
||||
tmpfile_pattern.data(), unserialized_size);
|
||||
void *buf;
|
||||
- posix_memalign(&buf, 16, unserialized_size);
|
||||
+#ifdef HAVE_GETPAGESIZE
|
||||
+ auto page_size = getpagesize();
|
||||
+#else
|
||||
+ auto page_size = sysconf(_SC_PAGESIZE);
|
||||
+#endif
|
||||
+ if (page_size == -1) {
|
||||
+ page_size = 4096;
|
||||
+ }
|
||||
+ posix_memalign(&buf, page_size, unserialized_size);
|
||||
if (buf == nullptr) {
|
||||
return tl::make_unexpected(error {"Cannot allocate memory", errno, error_category::CRITICAL });
|
||||
}
|
22
mail/rspamd/files/patch-src_libutil_cxx_file_util.cxx
Normal file
22
mail/rspamd/files/patch-src_libutil_cxx_file_util.cxx
Normal file
@ -0,0 +1,22 @@
|
||||
diff --git a/src/libutil/cxx/file_util.cxx b/src/libutil/cxx/file_util.cxx
|
||||
index e3b3a2605..4536fa97b 100644
|
||||
--- src/libutil/cxx/file_util.cxx
|
||||
+++ src/libutil/cxx/file_util.cxx
|
||||
@@ -198,7 +198,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file,
|
||||
}
|
||||
/* Update stat on file to ensure it is up-to-date */
|
||||
file.update_stat();
|
||||
- map = mmap(nullptr, file.get_size() - offset, flags, MAP_SHARED, file.get_fd(), offset);
|
||||
+ map = mmap(nullptr, (std::size_t)(file.get_size() - offset), flags, MAP_SHARED, file.get_fd(), offset);
|
||||
|
||||
if (map == MAP_FAILED) {
|
||||
return tl::make_unexpected(error { fmt::format("cannot mmap file {}: {}",
|
||||
@@ -206,7 +206,7 @@ auto raii_mmaped_file::mmap_shared(raii_file &&file,
|
||||
|
||||
}
|
||||
|
||||
- return raii_mmaped_file{std::move(file), map, file.get_size() - offset};
|
||||
+ return raii_mmaped_file{std::move(file), map, (std::size_t)(file.get_size() - offset)};
|
||||
}
|
||||
|
||||
auto raii_mmaped_file::mmap_shared(const char *fname, int open_flags,
|
@ -13,5 +13,15 @@
|
||||
You can edit %%ETCDIR%%/rspamd.newsyslog.conf
|
||||
to change log file rotation configuration.
|
||||
EOM
|
||||
},
|
||||
{ type: upgrade
|
||||
maximum_version: 3.4
|
||||
minimum_version: 3.3
|
||||
message: <<EOM
|
||||
Due to the issues with Hyperscan alignment, it is recommended to remove the
|
||||
existing cached files that might cause troubles from /var/db/rspamd by using the
|
||||
following command: "find /var/db/rspamd/ -type f -name '*.unser' -delete"
|
||||
This action is needed merely for this particular upgrade.
|
||||
EOM
|
||||
}
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user