\r
// Author: Andy Rushton\r
// Copyright: (c) Southampton University 1999-2004\r
-// (c) Andy Rushton 2004-2009\r
+// (c) Andy Rushton 2004 onwards\r
// License: BSD License, see ../docs/license.html\r
\r
// Contains all the platform-specific socket handling used by the TCP and UDP classes\r
#define IOCTL ioctlsocket\r
#define CLOSE closesocket\r
#define SHUT_RDWR SD_BOTH\r
+#define SOCKLEN_T int\r
+#define SEND_FLAGS 0\r
+#if _MSC_VER < 1600 // not defined before Visual Studio 10\r
#define EINPROGRESS WSAEINPROGRESS\r
#define EWOULDBLOCK WSAEWOULDBLOCK\r
#define ECONNRESET WSAECONNRESET\r
-#define SOCKLEN_T int\r
+#endif\r
#else\r
// Generic Unix includes\r
// fix for older versions of Darwin?\r
#define IOCTL ::ioctl\r
#define CLOSE ::close\r
#define SOCKLEN_T socklen_t\r
+#define SEND_FLAGS MSG_NOSIGNAL\r
#ifdef SOLARIS\r
// Sun put some definitions in a different place\r
#include <sys/filio.h>\r
{\r
if (!initialised()) return false;\r
// send the data - this will never block but may not send all the data\r
- int bytes = ::send(m_socket, data.c_str(), data.size(), 0);\r
+ int bytes = ::send(m_socket, data.c_str(), data.size(), SEND_FLAGS);\r
if (bytes == SOCKET_ERROR)\r
{\r
set_error(ERRNO);\r
int bytes = 0;\r
if (!address)\r
{\r
- bytes = ::send(m_socket, data.c_str(), data.size(), 0);\r
+ bytes = ::send(m_socket, data.c_str(), data.size(), SEND_FLAGS);\r
}\r
else\r
{\r
sockaddr saddress;\r
convert_address(address, port, saddress);\r
- bytes = ::sendto(m_socket, data.c_str(), data.size(), 0, &saddress, sizeof(saddress));\r
+ bytes = ::sendto(m_socket, data.c_str(), data.size(), SEND_FLAGS, &saddress, sizeof(saddress));\r
}\r
if (bytes == SOCKET_ERROR)\r
{\r