--- deliantra/server/socket/lowlevel.C 2006/12/21 06:12:37 1.28 +++ deliantra/server/socket/lowlevel.C 2007/01/06 14:42:31 1.30 @@ -1,6 +1,7 @@ /* CrossFire, A Multiplayer game for X-windows + Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team Copyright (C) 1992 Frank Tore Johansen This program is free software; you can redistribute it and/or modify @@ -53,6 +54,9 @@ void client::flush () { + if (destroyed ()) + return; + #ifdef __linux__ // check time of last ack, and, if too old, kill connection struct tcp_info tcpi; @@ -215,7 +219,7 @@ client::may_execute (const packet_type *pkt) const { return (!(pkt->flags & PF_PLAYER) || pl) - && (!(pkt->flags & PF_PLAYING) || (pl && pl->state == ST_PLAYING)); + && (!(pkt->flags & PF_PLAYING) || state == ST_PLAYING); } void @@ -296,7 +300,7 @@ client::socket_cb (iow &w, int got) { //TODO remove when we have better socket cleanup logic - if (destroyed) + if (destroyed ()) { socket_ev.poll (0); return; @@ -382,7 +386,7 @@ char *pos = buf; int amt = 0; - if (destroyed || !buf) + if (destroyed () || !buf) return; if ((len + outputbuffer.len) > SOCKETBUFSIZE) @@ -423,7 +427,7 @@ void client::send_packet (packet &sl) { - if (destroyed) + if (destroyed ()) return; if (sl.length () >= MAXSOCKBUF)