Browse Source

[Fix] Fix memory corruption

tags/1.3.0
Vsevolod Stakhov 8 years ago
parent
commit
9a6654fefa
1 changed files with 7 additions and 6 deletions
  1. 7
    6
      src/libutil/map.c

+ 7
- 6
src/libutil/map.c View File

@@ -215,10 +215,7 @@ free_http_cbdata_common (struct http_callback_data *cbd)
{
char fpath[PATH_MAX];
struct stat st;

/* Switch to the next backend */
cbd->periodic->cur_backend ++;
rspamd_map_periodic_callback (-1, EV_TIMEOUT, cbd->periodic);
struct map_periodic_cbdata *periodic = cbd->periodic;

if (cbd->out_fd != -1) {
close (cbd->out_fd);
@@ -257,8 +254,12 @@ free_http_cbdata_common (struct http_callback_data *cbd)
}

REF_RELEASE (cbd->bk);
REF_RELEASE (cbd->periodic);
REF_RELEASE (periodic);
g_slice_free1 (sizeof (struct http_callback_data), cbd);

/* Switch to the next backend */
periodic->cur_backend ++;
rspamd_map_periodic_callback (-1, EV_TIMEOUT, periodic);
}

static void
@@ -802,7 +803,7 @@ rspamd_map_periodic_callback (gint fd, short what, void *ud)
/* We should not check other backends if some backend has failed */
jitter_timeout_event (cbd->map, FALSE, FALSE, TRUE);
g_atomic_int_set (cbd->map->locked, 0);
g_slice_free1 (sizeof (*cbd), cbd);
REF_RELEASE (cbd);

return;
}

Loading…
Cancel
Save