* This file is part of door_daemon.
*
* door_daemon is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
- * published by the Free Software Foundation.
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
*
* door_daemon is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
int offset = 0;
int ret;
for(;;) {
- ret = write(fd, &response[offset], strlen(response));
+ ret = write(fd, &response[offset], len - offset);
if(ret < 0) {
if(errno != EINTR)
return ret;
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
}
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);
break;
}
- lst = lst->next;
+ if(lst)
+ lst = lst->next;
}
if(cmd_q && !cmd_q->sent)