--- a/src/server/daemon/srvctrl.c Sun Jan 29 09:04:06 2017 +0100 +++ b/src/server/daemon/srvctrl.c Sun Jan 29 09:40:04 2017 +0100 @@ -29,6 +29,7 @@ #include <stdio.h> #include <stdlib.h> +#include "log.h" #include "webserver.h" #include "../util/systhr.h" @@ -140,6 +141,11 @@ } void* srvctrl_thread(SrvCtrlClient *client) { + LogDup log; + log.write = (log_writefunc)srvctrl_log; + log.cookie = client; + log_add_logdup(&log); + char buf[64]; UcxBuffer *line = ucx_buffer_new(NULL, 32, UCX_BUFFER_AUTOEXTEND); @@ -163,6 +169,8 @@ } } + log_remove_logdup(&log); + ucx_buffer_free(line); close(client->fd); free(client); @@ -172,8 +180,7 @@ int srvctrl_handle_cmd(SrvCtrlClient *client, sstr_t cmd) { if(!sstrcmp(cmd, S("reconfig"))) { - write(client->fd, "reconfig\n", 9); - + log_ereport(LOG_INFORM, "reconfigure server"); if(webserver_reconfig()) { log_ereport(LOG_FAILURE, "cannot reload config"); } else { @@ -190,3 +197,15 @@ } return 1; } + +void srvctrl_log(SrvCtrlClient *client, char *msg, size_t len) { + size_t pos = 0; + ssize_t w = 0; + while(pos < len) { + w = write(client->fd, msg + pos, len - pos); + if(w <= 0) { + break; + } + pos += w; + } +}