Переглянути джерело

Increased the allowed packet size for chat messages.
Changed the capacity of the message column in chatlog (see sql update).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@12725 54d463be-8e91-2dee-dedb-b68131a5f0ec

ultramage 17 роки тому
батько
коміт
6b904e34cb
4 змінених файлів з 11 додано та 6 видалено
  1. 3 0
      Changelog-Trunk.txt
  2. 1 0
      sql-files/upgrade_svn12725.sql
  3. 6 5
      src/map/clif.c
  4. 1 1
      src/map/map.h

+ 3 - 0
Changelog-Trunk.txt

@@ -3,6 +3,9 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
+2008/05/26
+	* Increased the allowed packet size for chat messages [ultramage]
+	- changed the capacity of the message column in chatlog (see sql update)
 2008/05/25
 	* Increased storage space to 600 [Playtester]
 2008/05/24

+ 1 - 0
sql-files/upgrade_svn12725.sql

@@ -0,0 +1 @@
+ALTER TABLE `chatlog` CHANGE `message` `message` VARCHAR( 255 ) NOT NULL

+ 6 - 5
src/map/clif.c

@@ -7570,12 +7570,13 @@ static bool clif_process_message(struct map_session_data* sd, int format, char**
 		ShowWarning("clif_process_message: Player '%s' sent an unterminated message string!\n", sd->status.name);
 		return false;		
 	}
-	if( messagelen > CHAT_SIZE_MAX )
+	if( messagelen > CHAT_SIZE_MAX-1 )
 	{	// messages mustn't be too long
-		// Normally you can only enter CHATBOX_SIZE-1 chars into the chat box, but Frost Joke / Dazzler's text can be longer.
-		// Neither the official client nor server place any restriction on the length of the text in the packet,
-		// but we'll only allow reasonably long strings here. This also makes sure all strings fit into the `chatlog` table.
-		ShowWarning("clif_process_message: Player '%s' sent a message too long ('%.*s')!\n", sd->status.name, CHAT_SIZE_MAX, message);
+		// Normally you can only enter CHATBOX_SIZE-1 letters into the chat box, but Frost Joke / Dazzler's text can be longer.
+		// Also, the physical size of strings that use multibyte encoding can go multiple times over the chatbox capacity.
+		// Neither the official client nor server place any restriction on the length of the data in the packet,
+		// but we'll only allow reasonably long strings here. This also makes sure that they fit into the `chatlog` table.
+		ShowWarning("clif_process_message: Player '%s' sent a message too long ('%.*s')!\n", sd->status.name, CHAT_SIZE_MAX-1, message);
 		return false;
 	}
 

+ 1 - 1
src/map/map.h

@@ -151,7 +151,7 @@ enum {
 #define CHATROOM_TITLE_SIZE (36 + 1)
 #define CHATROOM_PASS_SIZE (8 + 1)
 //Max allowed chat text length
-#define CHAT_SIZE_MAX 150
+#define CHAT_SIZE_MAX 256
 
 #define DEFAULT_AUTOSAVE_INTERVAL 5*60*1000