Просмотр исходного кода

[Minor] Improve errors logging on hyperscan load errors

tags/2.0
Vsevolod Stakhov 4 лет назад
Родитель
Сommit
2dc5de79ac
1 измененных файлов: 26 добавлений и 7 удалений
  1. 26
    7
      src/libserver/re_cache.c

+ 26
- 7
src/libserver/re_cache.c Просмотреть файл

@@ -2113,19 +2113,29 @@ rspamd_re_cache_is_valid_hyperscan_file (struct rspamd_re_cache *cache,

if (memcmp (hash_pos, re_class->hash, sizeof (re_class->hash) - 1) == 0) {
/* Open file and check magic */
gssize r;

fd = open (path, O_RDONLY);

if (fd == -1) {
if (!silent) {
if (errno != ENOENT || !silent) {
msg_err_re_cache ("cannot open hyperscan cache file %s: %s",
path, strerror (errno));
}
return FALSE;
}

if (read (fd, magicbuf, sizeof (magicbuf)) != sizeof (magicbuf)) {
msg_err_re_cache ("cannot read hyperscan cache file %s: %s",
path, strerror (errno));
if ((r = read (fd, magicbuf, sizeof (magicbuf))) != sizeof (magicbuf)) {
if (r == -1) {
msg_err_re_cache ("cannot read magic from hyperscan "
"cache file %s: %s",
path, strerror (errno));
}
else {
msg_err_re_cache ("truncated read magic from hyperscan "
"cache file %s: %z, %z wanted",
path, r, (gsize)sizeof (magicbuf));
}
close (fd);
return FALSE;
}
@@ -2147,9 +2157,18 @@ rspamd_re_cache_is_valid_hyperscan_file (struct rspamd_re_cache *cache,
return FALSE;
}

if (read (fd, &test_plt, sizeof (test_plt)) != sizeof (test_plt)) {
msg_err_re_cache ("cannot read hyperscan cache file %s: %s",
path, strerror (errno));
if ((r = read (fd, &test_plt, sizeof (test_plt))) != sizeof (test_plt)) {
if (r == -1) {
msg_err_re_cache ("cannot read platform data from hyperscan "
"cache file %s: %s",
path, strerror (errno));
}
else {
msg_err_re_cache ("truncated read platform data from hyperscan "
"cache file %s: %z, %z wanted",
path, r, (gsize)sizeof (magicbuf));
}

close (fd);
return FALSE;
}

Загрузка…
Отмена
Сохранить