static void afsocket_sc_set_owner(AFSocketSourceConnection *self, AFSocketSourceDriver *owner) { if (self->reader) log_reader_set_options(self->reader, &self->super, &owner->reader_options, 1, afsocket_sc_stats_source(self), owner->super.id, afsocket_sc_stats_instance(self)); log_drv_unref(&self->owner->super); log_drv_ref(&owner->super); self->owner = owner; log_pipe_append(&self->super, &owner->super.super); }
static gboolean afsocket_sc_init(LogPipe *s) { AFSocketSourceConnection *self = (AFSocketSourceConnection *) s; gint read_flags; LogTransport *transport; LogProto *proto; read_flags = ((self->owner->flags & AFSOCKET_DGRAM) ? LTF_RECV : 0); if (!self->reader) { #if ENABLE_SSL if (self->owner->tls_context) { TLSSession *tls_session = tls_context_setup_session(self->owner->tls_context); if (!tls_session) return FALSE; transport = log_transport_tls_new(tls_session, self->sock, read_flags); } else #endif transport = log_transport_plain_new(self->sock, read_flags); if ((self->owner->flags & AFSOCKET_SYSLOG_PROTOCOL) == 0) { /* plain protocol */ if (self->owner->flags & AFSOCKET_DGRAM) proto = log_proto_dgram_server_new(transport, self->owner->reader_options.msg_size, 0); else if (self->owner->reader_options.padding) proto = log_proto_record_server_new(transport, self->owner->reader_options.padding, 0); else proto = log_proto_text_server_new(transport, self->owner->reader_options.msg_size, 0); } else { if (self->owner->flags & AFSOCKET_DGRAM) { /* plain protocol */ proto = log_proto_dgram_server_new(transport, self->owner->reader_options.msg_size, 0); } else { /* framed protocol */ proto = log_proto_framed_server_new(transport, self->owner->reader_options.msg_size); } } self->reader = log_reader_new(proto); } log_reader_set_options(self->reader, s, &self->owner->reader_options, 1, afsocket_sc_stats_source(self), self->owner->super.super.id, afsocket_sc_stats_instance(self)); log_reader_set_peer_addr(self->reader, self->peer_addr); log_pipe_append(self->reader, s); if (log_pipe_init(self->reader, NULL)) { return TRUE; } else { log_pipe_unref(self->reader); self->reader = NULL; } return FALSE; }
static gboolean afsocket_sc_init(LogPipe *s) { AFSocketSourceConnection *self = (AFSocketSourceConnection *) s; gint read_flags; LogTransport *transport; LogProto *proto; read_flags = ((self->owner->flags & AFSOCKET_DGRAM) ? LTF_RECV : 0); #if ENABLE_SSL if (self->owner->tls_context) { TLSSession *tls_session = tls_context_setup_session(self->owner->tls_context); if (!tls_session) return FALSE; transport = log_transport_tls_new(tls_session, self->sock, read_flags); } else #endif transport = log_transport_plain_new(self->sock, read_flags); if ((self->owner->flags & AFSOCKET_SYSLOG_PROTOCOL) == 0) { /* plain protocol */ proto = log_proto_plain_new_server(transport, self->owner->reader_options.padding, self->owner->reader_options.msg_size, (self->owner->flags & AFSOCKET_DGRAM) ? (LPPF_PKTTERM + LPPF_IGNORE_EOF) : 0); } else { if (self->owner->flags & AFSOCKET_DGRAM) { /* plain protocol */ proto = log_proto_plain_new_server(transport, self->owner->reader_options.padding, self->owner->reader_options.msg_size, (self->owner->flags & AFSOCKET_DGRAM) ? (LPPF_PKTTERM + LPPF_IGNORE_EOF) : 0); } else { /* framed protocol */ proto = log_proto_framed_new_server(transport, self->owner->reader_options.msg_size); } } self->reader = log_reader_new(proto, ((self->owner->flags & AFSOCKET_LOCAL) ? LR_LOCAL : 0) | ((self->owner->flags & AFSOCKET_SYSLOG_PROTOCOL) ? LR_SYSLOG_PROTOCOL : 0)); log_reader_set_options(self->reader, s, &self->owner->reader_options, 1, afsocket_sc_stats_source(self), self->owner->super.id, afsocket_sc_stats_instance(self)); log_reader_set_peer_addr(self->reader, self->peer_addr); log_pipe_append(self->reader, s); if (log_pipe_init(self->reader, NULL)) { self->owner->connections = g_list_prepend(self->owner->connections, self); return TRUE; } else { log_pipe_unref(self->reader); self->reader = NULL; } return FALSE; }