summaryrefslogtreecommitdiff
path: root/src/login_sql/login.c
diff options
context:
space:
mode:
authorFlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-09-21 05:22:13 +0000
committerFlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-09-21 05:22:13 +0000
commit8e2d7056fb461b04d20c868ffeed73468c6e1f3e (patch)
treef58c7d8b32d4ba5fcaa38f08fd5e7b03e88f499b /src/login_sql/login.c
parent1285deb746735dd189c859b2090b580fddc2672e (diff)
downloadhercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.gz
hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.bz2
hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.tar.xz
hercules-8e2d7056fb461b04d20c868ffeed73468c6e1f3e.zip
* 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://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11253 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/login_sql/login.c')
-rw-r--r--src/login_sql/login.c25
1 files changed, 16 insertions, 9 deletions
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].
}