瀏覽代碼

Perform some rrd file check.

tags/1.0.1
Vsevolod Stakhov 8 年之前
父節點
當前提交
8b79a2907e
共有 1 個檔案被更改,包括 24 行新增14 行删除
  1. 24
    14
      src/libutil/rrd.c

+ 24
- 14
src/libutil/rrd.c 查看文件

@@ -1213,7 +1213,7 @@ struct rspamd_rrd_file *
rspamd_rrd_file_default (const gchar *path,
GError **err)
{
struct rspamd_rrd_file *rrd;
struct rspamd_rrd_file *file;
struct rrd_ds_def ds[4];
struct rrd_rra_def rra[4];
GArray ar;
@@ -1222,21 +1222,31 @@ rspamd_rrd_file_default (const gchar *path,

if (access (path, R_OK) != -1) {
/* We can open rrd file */
rrd = rspamd_rrd_open (path, err);
file = rspamd_rrd_open (path, err);

if (file == NULL) {
return NULL;
}


if (file->stat_head->ds_cnt != 4 || file->stat_head->rra_cnt != 4) {
msg_err_rrd ("rrd file is not suitable for rspamd: it has "
"%d ds and %d rra", file->stat_head->ds_cnt,
file->stat_head->rra_cnt);
g_set_error (err, rrd_error_quark (), EINVAL, "bad rrd file");
rspamd_rrd_close (file);

if (rrd == NULL) {
return NULL;
}

/* XXX: check rrd file sanity */
return rrd;
return file;
}

/* Try to create new rrd file */

rrd = rspamd_rrd_create (path, 4, 4, 1, rspamd_get_calendar_ticks (), err);
file = rspamd_rrd_create (path, 4, 4, 1, rspamd_get_calendar_ticks (), err);

if (rrd == NULL) {
if (file == NULL) {
return NULL;
}

@@ -1250,8 +1260,8 @@ rspamd_rrd_file_default (const gchar *path,
ar.data = (gchar *)ds;
ar.len = sizeof (ds);

if (!rspamd_rrd_add_ds (rrd, &ar, err)) {
rspamd_rrd_close (rrd);
if (!rspamd_rrd_add_ds (file, &ar, err)) {
rspamd_rrd_close (file);
return NULL;
}

@@ -1270,15 +1280,15 @@ rspamd_rrd_file_default (const gchar *path,
ar.data = (gchar *)rra;
ar.len = sizeof (rra);

if (!rspamd_rrd_add_rra (rrd, &ar, err)) {
rspamd_rrd_close (rrd);
if (!rspamd_rrd_add_rra (file, &ar, err)) {
rspamd_rrd_close (file);
return NULL;
}

if (!rspamd_rrd_finalize (rrd, err)) {
rspamd_rrd_close (rrd);
if (!rspamd_rrd_finalize (file, err)) {
rspamd_rrd_close (file);
return NULL;
}

return rrd;
return file;
}

Loading…
取消
儲存