gboolean afsocket_sd_deinit(LogPipe *s) { AFSocketSourceDriver *self = (AFSocketSourceDriver *) s; GlobalConfig *cfg = log_pipe_get_config(s); if ((self->flags & AFSOCKET_KEEP_ALIVE) == 0 || !cfg->persist) { afsocket_sd_kill_connection_list(self->connections); } else { GList *p; /* for AFSOCKET_STREAM source drivers this is a list, for * AFSOCKET_DGRAM this is a single connection */ for (p = self->connections; p; p = p->next) { log_pipe_deinit((LogPipe *) p->data); } cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, FALSE), self->connections, (GDestroyNotify) afsocket_sd_kill_connection_list, FALSE); } self->connections = NULL; if (self->flags & AFSOCKET_STREAM) { afsocket_sd_stop_watches(self); if ((self->flags & AFSOCKET_KEEP_ALIVE) == 0) { msg_verbose("Closing listener fd", evt_tag_int("fd", self->fd), NULL); close(self->fd); } else { /* NOTE: the fd is incremented by one when added to persistent config * as persist config cannot store NULL */ cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, TRUE), GUINT_TO_POINTER(self->fd + 1), afsocket_sd_close_fd, FALSE); } } else if (self->flags & AFSOCKET_DGRAM) { /* we don't need to close the listening fd here as we have a * single connection which will close it */ ; } if (!log_src_driver_deinit_method(s)) return FALSE; return TRUE; }
gboolean log_threaded_dest_driver_deinit_method(LogPipe *s) { LogThrDestDriver *self = (LogThrDestDriver *)s; log_queue_reset_parallel_push(self->queue); log_queue_set_counters(self->queue, NULL, NULL); cfg_persist_config_add(log_pipe_get_config(s), log_threaded_dest_driver_format_seqnum_for_persist(self), GINT_TO_POINTER(self->seq_num), NULL, FALSE); stats_lock(); stats_unregister_counter(self->stats_source | SCS_DESTINATION, self->super.super.id, self->format.stats_instance(self), SC_TYPE_STORED, &self->stored_messages); stats_unregister_counter(self->stats_source | SCS_DESTINATION, self->super.super.id, self->format.stats_instance(self), SC_TYPE_DROPPED, &self->dropped_messages); stats_unregister_counter(self->stats_source | SCS_DESTINATION, self->super.super.id, self->format.stats_instance(self), SC_TYPE_PROCESSED, &self->processed_messages); stats_unlock(); if (!log_dest_driver_deinit_method(s)) return FALSE; return TRUE; }
gboolean afsocket_dd_deinit(LogPipe *s) { AFSocketDestDriver *self = (AFSocketDestDriver *) s; GlobalConfig *cfg = log_pipe_get_config(s); if (self->reconnect_timer) g_source_remove(self->reconnect_timer); if (self->source_id && g_source_remove(self->source_id)) { msg_verbose("Closing connecting fd", evt_tag_int("fd", self->fd), NULL); close(self->fd); } if (self->writer) { log_pipe_deinit(self->writer); } if (self->flags & AFSOCKET_KEEP_ALIVE) { cfg_persist_config_add(cfg, afsocket_dd_format_persist_name(self, self->dest_name, FALSE), self->writer, -1, (GDestroyNotify) log_pipe_unref, FALSE); self->writer = NULL; } return TRUE; }
static inline void afprogram_dd_store_reload_store_item(AFProgramDestDriver *self, GlobalConfig *cfg) { AFProgramReloadStoreItem *reload_info = g_new0(AFProgramReloadStoreItem, 1); reload_info->pid = self->pid; reload_info->writer = self->writer; cfg_persist_config_add(cfg, afprogram_dd_format_persist_name(self), reload_info, afprogram_reload_store_item_destroy_notify, FALSE); }
static void afsocket_dd_save_connection(AFSocketDestDriver *self) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super.super); if (self->connections_kept_alive_accross_reloads) { cfg_persist_config_add(cfg, afsocket_dd_format_persist_name(self, FALSE), self->writer, (GDestroyNotify) log_pipe_unref, FALSE); self->writer = NULL; } }
/* consumes the reference in @q */ static void log_dest_driver_release_queue_method(LogDestDriver *self, LogQueue *q, gpointer user_data) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super); /* we only save the LogQueue instance if it contains data */ if (q->persist_name && log_queue_keep_on_reload(q) > 0) cfg_persist_config_add(cfg, q->persist_name, q, (GDestroyNotify) log_queue_unref, FALSE); else log_queue_unref(q); }
gboolean http_dd_deinit(LogPipe *s) { HTTPDestinationDriver *self = (HTTPDestinationDriver *)s; GlobalConfig *cfg = log_pipe_get_config(s); cfg_persist_config_add(cfg, _format_auth_header_name(s), self->auth_header, (GDestroyNotify) http_auth_header_free, FALSE); self->auth_header = NULL; return log_threaded_dest_driver_deinit_method(s); }
static void afsocket_dd_save_connection(AFSocketDestDriver *self) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super.super); if (self->connections_kept_alive_accross_reloads) { ReloadStoreItem *item = _reload_store_item_new(self); cfg_persist_config_add(cfg, afsocket_dd_format_persist_name(self, FALSE), item, (GDestroyNotify) _reload_store_item_free, FALSE); self->writer = NULL; } }
static gboolean log_db_parser_deinit(LogPipe *s) { LogDBParser *self = (LogDBParser *) s; GlobalConfig *cfg = log_pipe_get_config(s); if (iv_timer_registered(&self->tick)) { iv_timer_unregister(&self->tick); } cfg_persist_config_add(cfg, log_db_parser_format_persist_name(self), self->db, (GDestroyNotify) pattern_db_free, FALSE); self->db = NULL; return TRUE; }
static void log_db_parser_deinit(LogParser *s, GlobalConfig *cfg) { LogDBParser *self = (LogDBParser *) s; if (self->initialized) { if (self->timer_tick_id) { GSource *source = g_main_context_find_source_by_id(NULL, self->timer_tick_id); g_source_destroy(source); self->timer_tick_id = 0; } cfg_persist_config_add(cfg, log_db_parser_format_persist_name(self), self->db, (GDestroyNotify) pattern_db_free, FALSE); self->db = NULL; self->initialized = FALSE; } }
gboolean afsocket_dd_deinit(LogPipe *s) { AFSocketDestDriver *self = (AFSocketDestDriver *) s; GlobalConfig *cfg = log_pipe_get_config(s); afsocket_dd_stop_watches(self); if (self->writer) log_pipe_deinit(self->writer); if (self->flags & AFSOCKET_KEEP_ALIVE) { cfg_persist_config_add(cfg, afsocket_dd_format_persist_name(self, FALSE), self->writer, (GDestroyNotify) log_pipe_unref, FALSE); self->writer = NULL; } if (!log_dest_driver_deinit_method(s)) return FALSE; return TRUE; }
static void afsocket_sd_save_listener(AFSocketSourceDriver *self) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super.super); if (self->transport_mapper->sock_type == SOCK_STREAM) { afsocket_sd_stop_watches(self); if (!self->connections_kept_alive_accross_reloads) { msg_verbose("Closing listener fd", evt_tag_int("fd", self->fd), NULL); close(self->fd); } else { /* NOTE: the fd is incremented by one when added to persistent config * as persist config cannot store NULL */ cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, TRUE), GUINT_TO_POINTER(self->fd + 1), afsocket_sd_close_fd, FALSE); } } }
static void afsocket_sd_save_connections(AFSocketSourceDriver *self) { GlobalConfig *cfg = log_pipe_get_config(&self->super.super.super); if (!self->connections_kept_alive_accross_reloads || !cfg->persist) { afsocket_sd_kill_connection_list(self->connections); } else { GList *p; /* for SOCK_STREAM source drivers this is a list, for * SOCK_DGRAM this is a single connection */ for (p = self->connections; p; p = p->next) { log_pipe_deinit((LogPipe *) p->data); } cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, FALSE), self->connections, (GDestroyNotify) afsocket_sd_kill_connection_list, FALSE); } self->connections = NULL; }
gboolean afsocket_sd_deinit(LogPipe *s) { AFSocketSourceDriver *self = (AFSocketSourceDriver *) s; GlobalConfig *cfg = log_pipe_get_config(s); if ((self->flags & AFSOCKET_KEEP_ALIVE) == 0 || !cfg->persist) { GList *p, *next; /* we don't store anything across HUPs */ for (p = self->connections; p; p = next) { next = p->next; afsocket_sd_kill_connection((AFSocketSourceConnection *) p->data); } /* NOTE: we don't need to free the connection list, when a connection * is freed it is removed from the list automatically */ } else { /* for AFSOCKET_STREAM source drivers this is a list, for * AFSOCKET_DGRAM this is a single connection */ cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, FALSE), self->connections, -1, (GDestroyNotify) afsocket_sd_kill_connection_list, FALSE); } self->connections = NULL; if (self->flags & AFSOCKET_STREAM) { g_source_remove(self->source_id); self->source_id = 0; if ((self->flags & AFSOCKET_KEEP_ALIVE) == 0) { msg_verbose("Closing listener fd", evt_tag_int("fd", self->fd), NULL); close(self->fd); } else { /* NOTE: the fd is incremented by one when added to persistent config * as persist config cannot store NULL */ cfg_persist_config_add(cfg, afsocket_sd_format_persist_name(self, TRUE), GUINT_TO_POINTER(self->fd + 1), -1, afsocket_sd_close_fd, FALSE); } } else if (self->flags & AFSOCKET_DGRAM) { /* we don't need to close the listening fd here as we have a * single connection which will close it */ ; } return TRUE; }