- openlog("postlicyd", LOG_PID, LOG_MAIL);
- signal(SIGPIPE, SIG_IGN);
- signal(SIGINT, &common_sighandler);
- signal(SIGTERM, &common_sighandler);
- signal(SIGSEGV, &common_sighandler);
- syslog(LOG_INFO, "Starting...");
+ ssize_t search_offs = MAX(0, pcy->ibuf.len - 1);
+ int nb = buffer_read(&pcy->ibuf, pcy->fd, -1);
+ const char *eoq;
+ query_t* query = pcy->data;
+
+ if (nb < 0) {
+ if (errno == EAGAIN || errno == EINTR)
+ return 0;
+ UNIXERR("read");
+ return -1;
+ }
+ if (nb == 0) {
+ if (pcy->ibuf.len)
+ syslog(LOG_ERR, "unexpected end of data");
+ return -1;
+ }
+
+ if (!(eoq = strstr(pcy->ibuf.data + search_offs, "\n\n")))
+ return 0;
+
+ if (postfix_parsejob(pcy->data, pcy->ibuf.data) < 0)
+ return -1;
+ query->eoq = eoq + strlen("\n\n");
+ epoll_modify(pcy->fd, 0, pcy);
+ policy_process(pcy);