- Updated to most of jA's 1067
git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@351 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
3a769716f1
commit
d4e301d9d0
@ -1976,6 +1976,7 @@ int lan_ip_check(unsigned char *p){
|
|||||||
int parse_char(int fd) {
|
int parse_char(int fd) {
|
||||||
int i, ch = 0;
|
int i, ch = 0;
|
||||||
char email[40];
|
char email[40];
|
||||||
|
unsigned short cmd;
|
||||||
struct char_session_data *sd;
|
struct char_session_data *sd;
|
||||||
unsigned char *p = (unsigned char *) &session[fd]->client_addr.sin_addr;
|
unsigned char *p = (unsigned char *) &session[fd]->client_addr.sin_addr;
|
||||||
|
|
||||||
@ -1992,10 +1993,29 @@ int parse_char(int fd) {
|
|||||||
sd = session[fd]->session_data;
|
sd = session[fd]->session_data;
|
||||||
|
|
||||||
while(RFIFOREST(fd) >= 2) {
|
while(RFIFOREST(fd) >= 2) {
|
||||||
// if (RFIFOW(fd, 0) < 30000)
|
cmd = RFIFOW(fd,0);
|
||||||
// printf("parse_char : %d %d %x\n", fd, RFIFOREST(fd), RFIFOW(fd, 0));
|
// crc32のスキップ用
|
||||||
|
if( sd==NULL && // 未ログインor管理パケット
|
||||||
|
RFIFOREST(fd)>=4 && // 最低バイト数制限 & 0x7530,0x7532管理パケ除去
|
||||||
|
RFIFOREST(fd)<=21 && // 最大バイト数制限 & サーバーログイン除去
|
||||||
|
cmd!=0x20b && // md5通知パケット除去
|
||||||
|
(RFIFOREST(fd)<6 || RFIFOW(fd,4)==0x65) ){ // 次に何かパケットが来てるなら、接続でないとだめ
|
||||||
|
RFIFOSKIP(fd,4);
|
||||||
|
cmd = RFIFOW(fd,0);
|
||||||
|
printf("parse_char : %d crc32 skipped\n",fd);
|
||||||
|
if(RFIFOREST(fd)==0)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
switch(RFIFOW(fd, 0)) {
|
// if(cmd<30000 && cmd!=0x187)
|
||||||
|
// printf("parse_char : %d %d %d\n",fd,RFIFOREST(fd),cmd);
|
||||||
|
|
||||||
|
// 不正パケットの処理
|
||||||
|
// if (sd == NULL && cmd != 0x65 && cmd != 0x20b && cmd != 0x187 &&
|
||||||
|
// cmd != 0x2af8 && cmd != 0x7530 && cmd != 0x7532)
|
||||||
|
// cmd = 0xffff; // パケットダンプを表示させる
|
||||||
|
|
||||||
|
switch(cmd){
|
||||||
case 0x20b: //20040622 encryption ragexe correspondence
|
case 0x20b: //20040622 encryption ragexe correspondence
|
||||||
if (RFIFOREST(fd) < 19)
|
if (RFIFOREST(fd) < 19)
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user