Przeglądaj źródła

* Makefile deleting .svn in save folder.
* Limited the number of packets parsed per cycle to 3. (packet spammers create less lag)
* Fixed sql login throwing an out-of-place debug message and escaping too much of the name string when creating a new login with _M/F.

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

FlavioJS 17 lat temu
rodzic
commit
2365e833a4
5 zmienionych plików z 29 dodań i 12 usunięć
  1. 4 0
      Changelog-Trunk.txt
  2. 3 1
      Makefile.in
  3. 1 1
      configure
  4. 16 9
      src/login_sql/login.c
  5. 5 1
      src/map/clif.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 2007/09/21
+	* Makefile deleting .svn in save folder.
+	* Limited the number of packets parsed per cycle to 3.
+	* Fixed sql login throwing an out-of-place debug message and escaping too 
+	  much of the name string when creating a new login with _M/F.
 	* Configure script detects 64bit distributions of MySQL.
 	* Generated the configure script with cygwin's autoconf. [FlavioJS]
 2007/09/20

+ 3 - 1
Makefile.in

@@ -78,11 +78,13 @@ conf:
 	@for f in $$(ls conf-tmpl) ; do if test "$$f" != "import" ; then cp -rf conf-tmpl/$$f conf ; fi ; done
 	@rm -rf conf/*/.svn
 # save:
-# 1)  create save folder
+# 1) create save folder
 # 2) add missing files
+# 3) remove remaining .svn folder
 	@echo "building save folder..."
 	@if test ! -d save ; then mkdir save ; fi
 	@for f in $$(ls save-tmpl) ; do if test ! -e save/$$f ; then cp save-tmpl/$$f save ; fi ; done
+	@rm -rf save/.svn
 
 clean:
 	@$(MAKE) -C src/common $@

+ 1 - 1
configure

@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 11245 .
+# From configure.in Revision: 11252 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61.
 #

+ 16 - 9
src/login_sql/login.c

@@ -411,6 +411,7 @@ int mmo_auth_new(struct mmo_account* account, char sex)
 	unsigned int tick = gettick();
 	char md5buf[32+1];
 	SqlStmt* stmt;
+	int result = 0;
 
 	//Account Registration Flood Protection by [Kevin]
 	if( DIFF_TICK(tick, new_reg_tick) < 0 && num_regs >= allowed_regs )
@@ -421,17 +422,19 @@ int mmo_auth_new(struct mmo_account* account, char sex)
 
 	// check if the account doesn't exist already
 	stmt = SqlStmt_Malloc(sql_handle);
-	if ( SQL_SUCCESS != SqlStmt_Prepare(stmt, "SELECT `%s` FROM `%s` WHERE `userid` = ?", login_db_userid, login_db)
-	  || SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, account->userid, strnlen(account->userid, NAME_LENGTH))
-	  || SQL_SUCCESS != SqlStmt_Execute(stmt)
-	  || SqlStmt_NumRows(stmt) > 0 )
+	if( SQL_SUCCESS != SqlStmt_Prepare(stmt, "SELECT `%s` FROM `%s` WHERE `userid` = ?", login_db_userid, login_db)
+	||  SQL_SUCCESS != SqlStmt_BindParam(stmt, 0, SQLDT_STRING, account->userid, strnlen(account->userid, NAME_LENGTH))
+	||  SQL_SUCCESS != SqlStmt_Execute(stmt) )
 	{
 		SqlStmt_ShowDebug(stmt);
-		SqlStmt_Free(stmt);
-		return 1; // incorrect user/pass
+		result = 1;// error
 	}
+	else if( SqlStmt_NumRows(stmt) > 0 )
+		result = 1;// incorrect user/pass
 	SqlStmt_Free(stmt);
-	
+	if( result )
+		return result;// error or incorrect user/pass
+
 	// insert new entry into db
 	//TODO: error checking
 	stmt = SqlStmt_Malloc(sql_handle);
@@ -515,8 +518,12 @@ int mmo_auth(struct mmo_account* account, int fd)
 			account->userid[len-2] == '_' && memchr("FfMm", (unsigned char)account->userid[len-1], 4) ) // _M/_F suffix
 		{
 			int result;
-			account->userid[len-2] = '\0';// terminate the name.
-			result = mmo_auth_new(account, account->userid[len-1]);
+			char sex;
+
+			len -= 2;
+			account->userid[len] = '\0';// nul-terminate the name.
+			sex = account->userid[len+1];
+			result = mmo_auth_new(account, sex);
 			if( result )
 				return result;// Failed to make account. [Skotlex].
 		}

+ 5 - 1
src/map/clif.c

@@ -11521,8 +11521,12 @@ int clif_parse(int fd)
 {
 	int cmd, packet_ver, packet_len, err;
 	TBL_PC* sd;
+	int pnum;
 
-	while(1)
+	//TODO apply deplays or disconnect based on packet throughput [FlavioJS]
+	// Note: "click masters" can do 80+ clicks in 10 seconds
+
+	for( pnum = 0; pnum < 3; ++pnum )// Limit max packets per cycle to 3 (delay packet spammers) [FlavioJS]
 	{ // begin main client packet processing loop
 
 	sd = (TBL_PC *)session[fd]->session_data;