فهرست منبع

core: enable TCP_NODELAY by default

Daniele Bartolini 1 سال پیش
والد
کامیت
ab79ea9da3
1فایلهای تغییر یافته به همراه11 افزوده شده و 4 حذف شده
  1. 11 4
      src/core/network/socket.cpp

+ 11 - 4
src/core/network/socket.cpp

@@ -15,11 +15,12 @@
 	#define MSG_NOSIGNAL 0
 	#define MSG_NOSIGNAL 0
 #else
 #else
 	#include <errno.h>
 	#include <errno.h>
-	#include <fcntl.h>      // fcntl
-	#include <netinet/in.h> // htons, htonl, ...
+	#include <fcntl.h>       // fcntl
+	#include <netinet/in.h>  // htons, htonl, ...
+	#include <netinet/tcp.h> // TCP_NODELAY
 	#include <sys/socket.h>
 	#include <sys/socket.h>
-	#include <sys/time.h>   // timeval
-	#include <unistd.h>     // close
+	#include <sys/time.h>    // timeval
+	#include <unistd.h>      // close
 	#define SOCKET int
 	#define SOCKET int
 	#define INVALID_SOCKET (-1)
 	#define INVALID_SOCKET (-1)
 	#define SOCKET_ERROR (-1)
 	#define SOCKET_ERROR (-1)
@@ -56,6 +57,12 @@ namespace socket_internal
 	{
 	{
 		SOCKET socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		SOCKET socket = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		CE_ASSERT(socket >= 0, "socket: last_error() = %d", last_error());
 		CE_ASSERT(socket >= 0, "socket: last_error() = %d", last_error());
+#if !CROWN_PLATFORM_EMSCRIPTEN
+		int optval = 1;
+		int err = setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, (const char *)&optval, sizeof(optval));
+		CE_ASSERT(err == 0, "setsockopt: last_error() = %d", last_error());
+		CE_UNUSED(err);
+#endif
 		return socket;
 		return socket;
 	}
 	}