summaryrefslogtreecommitdiffstats
path: root/polyp/socket-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'polyp/socket-util.c')
-rw-r--r--polyp/socket-util.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/polyp/socket-util.c b/polyp/socket-util.c
index 499739bd..4e1eb6ab 100644
--- a/polyp/socket-util.c
+++ b/polyp/socket-util.c
@@ -30,13 +30,16 @@
#include <assert.h>
#include <string.h>
#include <stdio.h>
+#include <sys/types.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <unistd.h>
-#include <sys/types.h>
+#include <netinet/in_systm.h>
#include <netinet/tcp.h>
#include <netinet/ip.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
#include <netdb.h>
#include "socket-util.h"
@@ -94,9 +97,11 @@ int pa_socket_low_delay(int fd) {
int priority;
assert(fd >= 0);
+#ifdef SO_PRIORITY
priority = 7;
if (setsockopt(fd, SOL_SOCKET, SO_PRIORITY, &priority, sizeof(priority)) < 0)
return -1;
+#endif
return 0;
}
@@ -109,12 +114,25 @@ int pa_socket_tcp_low_delay(int fd) {
ret = pa_socket_low_delay(fd);
on = 1;
+#if defined(SOL_TCP) || defined(IPPROTO_TCP)
+#if defined(SOL_TCP)
if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &on, sizeof(on)) < 0)
+#else
+ if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on)) < 0)
+#endif
ret = -1;
+#endif
+#if defined(IPTOS_LOWDELAY) && defined(IP_TOS) && (defined(SOL_IP) || \
+ defined(IPPROTO_IP))
tos = IPTOS_LOWDELAY;
+#ifdef SOL_IP
if (setsockopt(fd, SOL_IP, IP_TOS, &tos, sizeof(tos)) < 0)
+#else
+ if (setsockopt(fd, IPPROTO_IP, IP_TOS, &tos, sizeof(tos)) < 0)
+#endif
ret = -1;
+#endif
return ret;