extern struct list sink_list;
+extern struct proxy *sink_proxies_list;
+
struct sink *sink_find(const char *name);
struct sink *sink_new_fd(const char *name, const char *desc, enum log_fmt, int fd);
ssize_t __sink_write(struct sink *sink, const struct ist msg[], size_t nmsg,
#include <haproxy/lb_map.h>
#include <haproxy/listener.h>
#include <haproxy/log.h>
+#include <haproxy/sink.h>
#include <haproxy/mailers.h>
#include <haproxy/namespace.h>
#include <haproxy/quic_sock.h>
goto init_proxies_list_stage1;
}
+ if (init_proxies_list == cfg_log_forward) {
+ init_proxies_list = sink_proxies_list;
+ /* check if list is not null to avoid infinite loop */
+ if (init_proxies_list)
+ goto init_proxies_list_stage1;
+ }
+
/***********************************************************/
/* At this point, target names have already been resolved. */
/***********************************************************/
struct list sink_list = LIST_HEAD_INIT(sink_list);
+/* sink proxies list */
+struct proxy *sink_proxies_list;
+
struct sink *cfg_sink;
struct sink *sink_find(const char *name)
void sink_setup_proxy(struct proxy *px)
{
px->last_change = now.tv_sec;
- px->cap = PR_CAP_FE | PR_CAP_BE;
+ px->cap = PR_CAP_FE | PR_CAP_BE | PR_CAP_INT;
px->maxconn = 0;
px->conn_retries = 1;
px->timeout.server = TICK_ETERNITY;
px->timeout.connect = TICK_ETERNITY;
px->accept = NULL;
px->options2 |= PR_O2_INDEPSTR | PR_O2_SMARTCON | PR_O2_SMARTACC;
+ px->next = sink_proxies_list;
+ sink_proxies_list = px;
}
/*
srv = cfg_sink->forward_px->srv;
while (srv) {
struct sink_forward_target *sft;
- /* init ssl if needed */
- if (srv->use_ssl == 1 && xprt_get(XPRT_SSL) && xprt_get(XPRT_SSL)->prepare_srv) {
- if (xprt_get(XPRT_SSL)->prepare_srv(srv)) {
- ha_alert("unable to prepare SSL for server '%s' in ring '%s'.\n", srv->id, cfg_sink->name);
- err_code |= ERR_ALERT | ERR_FATAL;
- }
- }
/* allocate sink_forward_target descriptor */
sft = calloc(1, sizeof(*sft));