diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-11-22 19:39:29 +0100 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-11-22 19:39:29 +0100 |
commit | 944f922aebac63e0a668b4d9abae418a57a6720d (patch) | |
tree | f27bf9fd339a840201e286369818ceb3cbe877c4 /src/ctl.c | |
parent | e7e3df9a6c4599f982a62bb8d7cd973ccd8cee72 (diff) | |
download | pies-944f922aebac63e0a668b4d9abae418a57a6720d.tar.gz pies-944f922aebac63e0a668b4d9abae418a57a6720d.tar.bz2 |
Bugfixes
* src/ctl.c (cmd_reboot, ctl_shutdown): Use code 221 to indicate that
we are going to close clonnection
(ctlwr): Check return from write.
* src/pies.c: Handle SIGPIPE
Diffstat (limited to 'src/ctl.c')
-rw-r--r-- | src/ctl.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -895,3 +895,3 @@ cmd_reboot (struct ctlio *io, size_t argc, char **argv) io->state = CTL_ACTION_STATE; - ctlio_reply (io, "250", "Rebooting, closing connection"); + ctlio_reply (io, "221", "Rebooting, closing connection"); } @@ -903,3 +903,3 @@ cmd_shutdown (struct ctlio *io, size_t argc, char **argv) io->state = CTL_ACTION_STATE; - ctlio_reply (io, "250", "Shuttign down, connection will be closed"); + ctlio_reply (io, "221", "Shutting down, connection will be closed"); } @@ -953,3 +953,13 @@ ctlwr (int fd, void *data) if (ctlbuf_read (&io->obuf, &c, 1)) - write (fd, &c, 1); + { + ssize_t rc = write (fd, &c, 1); + if (rc != 1) { + if (rc == 0) + logmsg (LOG_ERR, "error writing to control socket"); + else + logmsg (LOG_ERR, "error writing to control socket: %s", + strerror (errno)); + return ctlio_end (fd, io); + } + } else if (io->state == CTL_END_STATE) |