aboutsummaryrefslogtreecommitdiff
path: root/src/pies.h
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2020-12-04 22:58:28 +0200
committerSergey Poznyakoff <gray@gnu.org>2020-12-04 23:11:27 +0200
commit1f75cee8eefea039697affb0ab43e3ccb5357861 (patch)
tree57bc463575ac0bcec06ac27ebde2f72d9938b95a /src/pies.h
parent5196a3a826938c08dc890db63c06ee6a6bc61953 (diff)
downloadpies-1f75cee8eefea039697affb0ab43e3ccb5357861.tar.gz
pies-1f75cee8eefea039697affb0ab43e3ccb5357861.tar.bz2
Rewrite stdout/stderr redirection
Instead of spawning a subprocess for each redirection, read the output directly from pipe and send it to syslog using an asynchronous syslog implementation. * src/syslog.c: New file. * src/pies_syslog.h: New file. * src/Makefile.am: Add syslog.c and pies_syslog.h * src/comp.c (component_create): Use pies_log_facility. * src/ctl.c (auth_prog) (prog_serialize): Remove TYPE_REDIRECTOR case * src/diag.c (syslog_printer): Use pies_vsyslog. (syslog_open): Use pies_syslog_open. (syslog_close): Use pies_syslog_close. (diag_setup): Use pies_syslog_open. * src/pies.c (log_facility, log_tag): Remove globals. Use pies_log_facility and pies_log_tag instead. New configuration statement syslog.dev * src/pies.h: Include pies_syslog.h (register_socket,register_program_socket): Additional argument: free_data. * src/prog.h (TYPE_REDIRECTOR): Remove. (prog.v.p.redir): Change data type. (prog.v.r): Remove. * src/progman.c (prog_tag) (destroy_prog) (progman_cleanup): Remove TYPE_REDIRECTOR case (prog_stop_redirectors): Deregister fds (redir_tag,register_redir) (update_redir): Remove. (open_redirector): Rewrite. Set up direct reader from the stream, instead of spawning a subprocess. (prog_start): Change open_redirector actual arguments. * src/socket.c (sockinst): New member: free_data. (register_socket): Initialize the free_data member. (register_program_socket): Likewise.
Diffstat (limited to 'src/pies.h')
-rw-r--r--src/pies.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/pies.h b/src/pies.h
index f2aa5ef..99169db 100644
--- a/src/pies.h
+++ b/src/pies.h
@@ -58,6 +58,7 @@
#include "libpies.h"
#include "envop.h"
#include "grecs/json.h"
+#include "pies_syslog.h"
#define ARRAY_SIZE(a) (sizeof(a)/sizeof((a)[0]))
@@ -296,8 +297,6 @@ enum pies_action {
};
extern char *instance;
-extern char *log_tag;
-extern int log_facility;
extern unsigned long shutdown_timeout;
extern struct component default_component;
extern pies_acl_t pies_acl;
@@ -473,11 +472,13 @@ void *register_socket (int fd,
socket_handler_t rd,
socket_handler_t wr,
socket_handler_t ex,
- void *data);
+ void *data,
+ void (*free_data)(void*));
void deregister_socket (int fd);
void update_socket (int fd, int evt, socket_handler_t f);
-int register_program_socket (int socktype, int fd, void *data);
+int register_program_socket (int socktype, int fd, void *data,
+ void (*free_data)(void*));
int pass_fd (const char *socket, int fd, unsigned time_out);
int create_socket (struct pies_url *url, int socket_type,
const char *user, mode_t umask);

Return to:

Send suggestions and report system problems to the System administrator.