From 9cab7b2074311788644ef155f316d1356f819eba Mon Sep 17 00:00:00 2001
From: "Dmitry E. Oboukhov" <unera@debian.org>
Date: Mon, 19 May 2014 18:49:35 +0400
Subject: [PATCH] ifdefs over all constants (for Centos 5.6 environment)

---
 src/lua/bsdsocket.cc | 56 ++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 54 insertions(+), 2 deletions(-)

diff --git a/src/lua/bsdsocket.cc b/src/lua/bsdsocket.cc
index 54e1bdc759..bdfb958a0e 100644
--- a/src/lua/bsdsocket.cc
+++ b/src/lua/bsdsocket.cc
@@ -141,32 +141,81 @@ static const struct { char name[32]; int value; } send_flags[] = {
 };
 
 static const struct { char name[32]; int value, type, rw; } so_opts[] = {
+#ifdef SO_ACCEPTCONN
 	{"SO_ACCEPTCONN",	SO_ACCEPTCONN,		1,	0, },
+#endif
+#ifdef SO_BINDTODEVICE
 	{"SO_BINDTODEVICE",	SO_BINDTODEVICE,	2,	1, },
+#endif
+#ifdef SO_BROADCAST
 	{"SO_BROADCAST",	SO_BROADCAST,		1,	1, },
+#endif
+#ifdef SO_BSDCOMPAT
 	{"SO_BSDCOMPAT",	SO_BSDCOMPAT,		1,	1, },
+#endif
+#ifdef SO_DEBUG
 	{"SO_DEBUG",		SO_DEBUG,		1,	1, },
+#endif
+#ifdef SO_DOMAIN
 	{"SO_DOMAIN",		SO_DOMAIN,		1,	0, },
+#endif
+#ifdef SO_ERROR
 	{"SO_ERROR",		SO_ERROR,		1,	0, },
+#endif
+#ifdef SO_DONTROUTE
 	{"SO_DONTROUTE",	SO_DONTROUTE,		1,	1, },
+#endif
+#ifdef SO_KEEPALIVE
 	{"SO_KEEPALIVE",	SO_KEEPALIVE,		1,	1, },
+#endif
+#ifdef SO_LINGER
 	{"SO_LINGER",		SO_LINGER,		0,	0, },
+#endif
+#ifdef SO_MARK
 	{"SO_MARK",		SO_MARK,		1,	1, },
+#endif
+#ifdef SO_OOBINLINE
 	{"SO_OOBINLINE",	SO_OOBINLINE,		1,	1, },
+#endif
+#ifdef SO_PASSCRED
 	{"SO_PASSCRED",		SO_PASSCRED,		1,	1, },
+#endif
+#ifdef SO_PEERCRED
 	{"SO_PEERCRED",		SO_PEERCRED,		1,	0, },
+#endif
+#ifdef SO_PRIORITY
 	{"SO_PRIORITY",		SO_PRIORITY,		1,	1, },
+#endif
+#ifdef SO_RCVBUF
 	{"SO_RCVBUF",		SO_RCVBUF,		1,	1, },
+#endif
+#ifdef SO_RCVBUFFORCE
 	{"SO_RCVBUFFORCE",	SO_RCVBUFFORCE,		1,	1, },
+#endif
+#ifdef SO_RCVLOWAT
 	{"SO_RCVLOWAT",		SO_RCVLOWAT,		1,	1, },
+#endif
+#ifdef SO_SNDLOWAT
 	{"SO_SNDLOWAT",		SO_SNDLOWAT,		1,	1, },
+#endif
+#ifdef SO_RCVTIMEO
 	{"SO_RCVTIMEO",		SO_RCVTIMEO,		1,	1, },
+#endif
+#ifdef SO_SNDTIMEO
 	{"SO_SNDTIMEO",		SO_SNDTIMEO,		1,	1, },
+#endif
+#ifdef SO_REUSEADDR
 	{"SO_REUSEADDR",	SO_REUSEADDR,		1,	1, },
+#endif
+#ifdef SO_SNDBUF
 	{"SO_SNDBUF",		SO_SNDBUF,		1,	1, },
+#endif
+#ifdef SO_SNDBUFFORCE
 	{"SO_SNDBUFFORCE",	SO_SNDBUFFORCE,		1,	1, },
+#endif
+#ifdef SO_TIMESTAMP
 	{"SO_TIMESTAMP",	SO_TIMESTAMP,		1,	1, },
-
+#endif
 #ifdef SO_PROTOCOL
 	{"SO_PROTOCOL",		SO_PROTOCOL,		1,	0, },
 #else
@@ -429,7 +478,10 @@ lbox_bsdsocket_push_protocol(struct lua_State *L, int protonumber)
 static int
 lbox_bsdsocket_push_sotype(struct lua_State *L, int sotype)
 {
-	sotype &= ~(SOCK_NONBLOCK | SOCK_CLOEXEC);
+	/* man 7 socket says that sotype can contain some flags */
+	#if defined(SOCK_NONBLOCK) && defined(SOCK_CLOEXEC)
+		sotype &= ~(SOCK_NONBLOCK | SOCK_CLOEXEC);
+	#endif
 	switch(sotype) {
 		case SOCK_STREAM:
 			lua_pushliteral(L, "SOCK_STREAM");
-- 
GitLab