summaryrefslogtreecommitdiff
path: root/src/login/parse.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-11-10 19:04:27 +0300
committerAndrei Karas <akaras@inbox.ru>2014-11-10 19:52:05 +0300
commit3d3f077e6ff51e5e9d388a16bd73a526310918ad (patch)
tree12860243c18585d5a5b704525cb9abbaec15640d /src/login/parse.c
parente046ad1c14fcfaf32e8d00617848a45220494c1e (diff)
downloadevol-hercules-3d3f077e6ff51e5e9d388a16bd73a526310918ad.tar.gz
evol-hercules-3d3f077e6ff51e5e9d388a16bd73a526310918ad.tar.bz2
evol-hercules-3d3f077e6ff51e5e9d388a16bd73a526310918ad.tar.xz
evol-hercules-3d3f077e6ff51e5e9d388a16bd73a526310918ad.zip
disconnect in login server if client version < 2.
Diffstat (limited to 'src/login/parse.c')
-rw-r--r--src/login/parse.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/login/parse.c b/src/login/parse.c
index b50f52e..7b6bb11 100644
--- a/src/login/parse.c
+++ b/src/login/parse.c
@@ -14,12 +14,22 @@
#include "login/parse.h"
+int clientVersion = 0;
+
void login_parse_version(int fd)
{
struct login_session_data* sd = (struct login_session_data*)session[fd]->session_data;
if (!sd)
return;
+ clientVersion = RFIFOL(fd, 2);
+
+ if (clientVersion < 2)
+ {
+ login->login_error(fd, 5);
+ return;
+ }
+
WFIFOHEAD(fd, 4 + 8);
WFIFOW(fd, 0) = 0x7531;
WFIFOW(fd, 2) = 4 + 8;
@@ -27,3 +37,14 @@ void login_parse_version(int fd)
WFIFOL(fd, 8) = 1; // server version
WFIFOSET(fd, WFIFOW(fd,2));
}
+
+int elogin_parse_client_login_pre(int *fd, struct login_session_data* sd, const char *const ip)
+{
+ if (clientVersion < 2)
+ {
+ login->login_error(*fd, 5);
+ hookStop();
+ return 1;
+ }
+ return 0;
+}