X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcpacket.c;h=08c2a0ac177e591a943c4da5264e09555e848f8a;hp=bea6357939731b0db4ba92ed16cda2cab5e83e9d;hb=c724c52cf360b74e42a7f2c7450a25bd1fcb220d;hpb=8b11d3c1627f1dc3c7966bb51901bcdcf1f8a9fb diff --git a/lib/silccore/silcpacket.c b/lib/silccore/silcpacket.c index bea63579..08c2a0ac 100644 --- a/lib/silccore/silcpacket.c +++ b/lib/silccore/silcpacket.c @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2007 Pekka Riikonen + Copyright (C) 1997 - 2008 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -336,7 +336,6 @@ static inline SilcBool silc_packet_stream_read(SilcPacketStream ps, silc_mutex_unlock(ps->lock); if (ret == -1) { /* Cannot read now, do it later. */ - silc_buffer_pull(inbuf, silc_buffer_len(inbuf)); return FALSE; } @@ -394,7 +393,6 @@ static inline SilcBool silc_packet_stream_read(SilcPacketStream ps, if (ret == -1) { /* Cannot read now, do it later. */ - silc_buffer_pull(inbuf, silc_buffer_len(inbuf)); return FALSE; } @@ -887,6 +885,8 @@ void silc_packet_stream_destroy(SilcPacketStream stream) return; if (silc_atomic_sub_int8(&stream->refcnt, 1) > 0) { + if (stream->destroyed) + return; stream->destroyed = TRUE; SILC_LOG_DEBUG(("Marking packet stream %p destroyed", stream));