From 74f183d739f9a5df2f6c7f596363cf7bec99918e Mon Sep 17 00:00:00 2001 From: Freeyorp Date: Tue, 5 Jul 2016 12:29:55 -0400 Subject: fix emote spam crash --- src/map/clif.cpp | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) (limited to 'src/map/clif.cpp') diff --git a/src/map/clif.cpp b/src/map/clif.cpp index 94a6dd1..0bc6b8a 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -5796,37 +5796,36 @@ void clif_parse(Session *s) // dispatches to actual function // if error, close socket - dumb_ptr sd = dumb_ptr(static_cast(s->session_data.get())); + uint16_t packet_id; + RecvResult rv = RecvResult::Complete; + dumb_ptr sd; - if (!sd || (sd && !sd->state.auth)) + while (rv == RecvResult::Complete && packet_peek_id(s, &packet_id)) { - uint16_t packet_id; - if (!packet_peek_id(s, &packet_id)) - return; + sd = dumb_ptr(static_cast(s->session_data.get())); + + if (!sd || (sd && !sd->state.auth)) + { + if (packet_id != 0x0072 && packet_id != 0x7530) + { + // first packet must be auth or finger + s->set_eof(); + return; + } + } - if (packet_id != 0x0072 && packet_id != 0x7530) + if (!chrif_isconnect()) { - // first packet must be auth or finger s->set_eof(); return; } - } - if (!chrif_isconnect()) - { - s->set_eof(); - return; - } - if (sd && sd->state.auth == 1 && sd->state.waitingdisconnect == 1) - { - packet_discard(s, packet_avail(s)); - return; - } + if (sd && sd->state.auth == 1 && sd->state.waitingdisconnect == 1) + { + packet_discard(s, packet_avail(s)); + return; + } - uint16_t packet_id; - RecvResult rv = RecvResult::Complete; - while (rv == RecvResult::Complete && packet_peek_id(s, &packet_id)) - { switch (packet_id) { case 0x7530: -- cgit v1.2.3-70-g09d2