diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-11-10 19:04:27 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-11-10 19:52:05 +0300 |
commit | 3d3f077e6ff51e5e9d388a16bd73a526310918ad (patch) | |
tree | 12860243c18585d5a5b704525cb9abbaec15640d /src/login/parse.c | |
parent | e046ad1c14fcfaf32e8d00617848a45220494c1e (diff) | |
download | evol-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.c | 21 |
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; +} |