summaryrefslogtreecommitdiff
path: root/src/login/parse.c
diff options
context:
space:
mode:
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;
+}