X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_nethandler.pas;h=67b50dd928a87af7ac0e0ac768a39f61e64da93c;hb=refs%2Fheads%2Fbuffers;hp=f505d62ecc848f9d4812fb6fbfcebea405a38149;hpb=94c8854f0ba3a87de3928f587e66d5d0e43d8f9b;p=d2df-sdl.git diff --git a/src/game/g_nethandler.pas b/src/game/g_nethandler.pas index f505d62..67b50dd 100644 --- a/src/game/g_nethandler.pas +++ b/src/game/g_nethandler.pas @@ -42,6 +42,8 @@ begin while RawPos < P^.dataLength do begin Len := e_Raw_Read_Word(B); + if Len = 0 then break; + MID := e_Raw_Read_Byte(B); case MID of NET_MSG_CHAT: MC_RECV_Chat(B); @@ -103,15 +105,21 @@ begin while RawPos < P^.dataLength do begin Len := e_Raw_Read_Word(B); + if Len = 0 then break; + MID := e_Raw_Read_Byte(B); case MID of NET_MSG_GEVENT: MC_RECV_GameEvent(B); NET_MSG_GSET: MC_RECV_GameSettings(B); - NET_MSG_PLR: if NetState <> NET_STATE_AUTH then MC_RECV_PlayerCreate(B); - NET_MSG_PLRDEL: if NetState <> NET_STATE_AUTH then MC_RECV_PlayerDelete(B); + NET_MSG_PLR: + if NetState <> NET_STATE_AUTH then MC_RECV_PlayerCreate(B) + else RawPos := RawPos + Len-1; + NET_MSG_PLRDEL: + if NetState <> NET_STATE_AUTH then MC_RECV_PlayerDelete(B) + else RawPos := RawPos + Len-1; - else RawPos := RawPos + Len; + else RawPos := RawPos + Len-1; end; end; @@ -132,6 +140,8 @@ begin while RawPos < P^.dataLength do begin Len := e_Raw_Read_Word(B); + if Len = 0 then break; + MID := e_Raw_Read_Byte(B); case MID of NET_MSG_INFO: MH_RECV_Info(S, B);