#define SHUT_WR 1
#endif
+/* only Linux defines it */
+#ifndef MSG_NOSIGNAL
+#define MSG_NOSIGNAL 0
+#endif
+
/* AIX does not define MSG_DONTWAIT. We'll define it to zero, and test it
* wherever appropriate.
*/
memcpy(s->proxy->check_req + 11, &gmt_time, 4);
}
-#ifndef MSG_NOSIGNAL
- ret = send(fd, s->proxy->check_req, s->proxy->check_len, MSG_DONTWAIT);
-#else
ret = send(fd, s->proxy->check_req, s->proxy->check_len, MSG_DONTWAIT | MSG_NOSIGNAL);
-#endif
if (ret == s->proxy->check_len) {
/* we allow up to <timeout.check> if nonzero for a responce */
if (s->proxy->timeout.check)
goto out_wakeup;
}
-#ifndef MSG_NOSIGNAL
- len = recv(fd, trash, sizeof(trash), 0);
-#else
/* Warning! Linux returns EAGAIN on SO_ERROR if data are still available
* but the connection was closed on the remote end. Fortunately, recv still
* works correctly and we don't need to do the getsockopt() on linux.
*/
len = recv(fd, trash, sizeof(trash), MSG_NOSIGNAL);
-#endif
if (unlikely(len < 0 && errno == EAGAIN)) {
/* we want some polling to happen first */
fdtab[fd].ev &= ~FD_POLL_IN;
/* on very high loads, a sigpipe sometimes happen just between the
* getsockopt() which tells "it's OK to write", and the following write :-(
*/
-#if !defined(MSG_NOSIGNAL) || defined(CONFIG_HAP_LINUX_SPLICE)
+#if !MSG_NOSIGNAL || defined(CONFIG_HAP_LINUX_SPLICE)
signal(SIGPIPE, SIG_IGN);
#endif
#include <sys/time.h>
#include <common/config.h>
+#include <common/compat.h>
#include <common/standard.h>
#include <common/time.h>
#include <proto/log.h>
-#ifndef MSG_NOSIGNAL
-#define MSG_NOSIGNAL (0)
-#endif /* !MSG_NOSIGNAL */
-
const char *log_facilities[NB_LOG_FACILITIES] = {
"kern", "user", "mail", "daemon",
"auth", "syslog", "lpr", "news",
/*
* 2. read the largest possible block
*/
-#ifndef MSG_NOSIGNAL
- {
+ if (MSG_NOSIGNAL) {
+ ret = recv(fd, b->r, max, MSG_NOSIGNAL);
+ } else {
int skerr;
socklen_t lskerr = sizeof(skerr);
else
ret = recv(fd, b->r, max, 0);
}
-#else
- ret = recv(fd, b->r, max, MSG_NOSIGNAL);
-#endif
+
if (ret > 0) {
b->r += ret;
b->l += ret;
}
#endif
-#ifndef MSG_NOSIGNAL
- {
+ if (MSG_NOSIGNAL) {
+ ret = send(si->fd, b->w, max, MSG_DONTWAIT | MSG_NOSIGNAL);
+ } else {
int skerr;
socklen_t lskerr = sizeof(skerr);
else
ret = send(si->fd, b->w, max, MSG_DONTWAIT);
}
-#else
- ret = send(si->fd, b->w, max, MSG_DONTWAIT | MSG_NOSIGNAL);
-#endif
if (ret > 0) {
if (fdtab[si->fd].state == FD_STCONN)