diff options
-rw-r--r-- | Changelog-Trunk.txt | 4 | ||||
-rw-r--r-- | Makefile.in | 4 | ||||
-rw-r--r-- | configure | 2 | ||||
-rw-r--r-- | src/login_sql/login.c | 25 | ||||
-rw-r--r-- | src/map/clif.c | 6 |
5 files changed, 29 insertions, 12 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index c98951b1c..db6ef9435 100644 --- a/Changelog-Trunk.txt +++ b/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 diff --git a/Makefile.in b/Makefile.in index a1075c85a..c2c5efc2d 100644 --- a/Makefile.in +++ b/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,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. # diff --git a/src/login_sql/login.c b/src/login_sql/login.c index d3200893b..d1b06547d 100644 --- a/src/login_sql/login.c +++ b/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]. } diff --git a/src/map/clif.c b/src/map/clif.c index ff6ccb9cf..fab1e00ad 100644 --- a/src/map/clif.c +++ b/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; |