X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=door_daemon%2Fdoor_daemon.c;h=ee936573bb0287a0f870f5eb6a216853165feada;hb=7ae9abdec405d0a95dae9bcbddc1a64c6b7f4d29;hp=f7bb2f834e4f7d8eb44952c71393a689e7fe3e36;hpb=273898a7a155895de69cde048b96f6ffb5f1fc47;p=svn42.git diff --git a/door_daemon/door_daemon.c b/door_daemon/door_daemon.c index f7bb2f8..ee93657 100644 --- a/door_daemon/door_daemon.c +++ b/door_daemon/door_daemon.c @@ -38,7 +38,6 @@ #include "client_list.h" #include "daemon.h" -#include "sysexec.h" int init_command_socket(const char* path) { @@ -171,10 +170,14 @@ int process_cmd(const char* cmd, int fd, cmd_t **cmd_q, client_t* client_lst) char* linefeed = strchr(resp, '\n'); if(linefeed) linefeed[0] = 0; client_t* client; + int listener_cnt = 0; for(client = client_lst; client; client = client->next) - if(client->request_listener && client->fd != fd) + if(client->request_listener && client->fd != fd) { send_response(client->fd, resp); + listener_cnt++; + } free(resp); + log_printf(DEBUG, "sent request to %d additional listeners", listener_cnt); } // else silently ignore memory alloc error } @@ -289,6 +292,9 @@ int process_door(read_buffer_t* buffer, int door_fd, cmd_t **cmd_q, client_t* cl if(buffer->buf[buffer->offset] == '\n') { buffer->buf[buffer->offset] = 0; + if(buffer->offset > 0 && buffer->buf[buffer->offset-1] == '\r') + buffer->buf[buffer->offset-1] = 0; + log_printf(NOTICE, "door-firmware: %s", buffer->buf); int cmd_fd = -1; @@ -299,16 +305,24 @@ int process_door(read_buffer_t* buffer, int door_fd, cmd_t **cmd_q, client_t* cl if(!strncmp(buffer->buf, "Status:", 7)) { client_t* client; + int listener_cnt = 0; for(client = client_lst; client; client = client->next) - if(client->status_listener && client->fd != cmd_fd) + if(client->status_listener && client->fd != cmd_fd) { send_response(client->fd, buffer->buf); + listener_cnt++; + } + log_printf(DEBUG, "sent status to %d additional listeners", listener_cnt); } if(!strncmp(buffer->buf, "Error:", 6)) { client_t* client; + int listener_cnt = 0; for(client = client_lst; client; client = client->next) - if(client->error_listener && client->fd != cmd_fd) + if(client->error_listener && client->fd != cmd_fd) { send_response(client->fd, buffer->buf); + listener_cnt++; + } + log_printf(DEBUG, "sent error to %d additional listeners", listener_cnt); } cmd_pop(cmd_q);