浏览代码

Merge branch 'master' of https://github.com/rathena/rathena

aleos89 9 年之前
父节点
当前提交
f04156756d
共有 2 个文件被更改,包括 23 次插入3 次删除
  1. 4 2
      conf/packet_athena.conf
  2. 19 1
      src/common/socket.c

+ 4 - 2
conf/packet_athena.conf

@@ -8,12 +8,14 @@ debug: no
 // How long can a socket stall before closing the connection (in seconds)
 stall_time: 60
 
-// Maximum allowed size for clients packets in bytes (default: 24576).
+// Maximum allowed size for clients packets in bytes (default: 65535).
 // NOTE: To reduce the size of reported packets, lower the values of defines, which
 //       have been customized, such as MAX_STORAGE, MAX_GUILD_STORAGE or MAX_CART.
 // NOTE: Do not modify this setting, unless the client has been modified to support
 //       larger packets. The client will crash, when it receives larger packets.
-socket_max_client_packet: 24576
+socket_max_client_packet: 65535
+// For clients before 2013-12-23 uncomment this
+//socket_max_client_packet: 24576
 
 //----- IP Rules Settings -----
 

+ 19 - 1
src/common/socket.c

@@ -212,7 +212,11 @@ int naddr_ = 0;   // # of ip addresses
 
 // Maximum packet size in bytes, which the client is able to handle.
 // Larger packets cause a buffer overflow and stack corruption.
+#if PACKETVER < 20131223
 static size_t socket_max_client_packet = 24576;
+#else
+static size_t socket_max_client_packet = USHRT_MAX;
+#endif
 
 #ifdef SHOW_SERVER_STATS
 // Data I/O statistics
@@ -1171,8 +1175,22 @@ int socket_config_read(const char* cfgName)
 			ddos_autoreset = atoi(w2);
 		else if (!strcmpi(w1,"debug"))
 			access_debug = config_switch(w2);
-		else if (!strcmpi(w1,"socket_max_client_packet"))
+		else if (!strcmpi(w1,"socket_max_client_packet")){
 			socket_max_client_packet = strtoul(w2, NULL, 0);
+
+#if PACKETVER < 20131223
+			if( socket_max_client_packet > 24576 ){
+				ShowWarning( "socket_max_client_packet: Value %u is to high. Defaulting to %u.\n", socket_max_client_packet, 24576 );
+				ShowWarning( "socket_max_client_packet: If you want to use this value consider upgrading your client to 2013-12-23 or newer.\n" );
+				socket_max_client_packet = 24576;
+			}
+#else
+			if( socket_max_client_packet > USHRT_MAX ){
+				ShowWarning( "socket_max_client_packet: Value %u is to high. Defaulting to %u.\n", socket_max_client_packet, USHRT_MAX );
+				socket_max_client_packet = USHRT_MAX;
+			}
+#endif
+		}
 #endif
 		else if (!strcmpi(w1, "import"))
 			socket_config_read(w2);