Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 1997 - 2008 Pekka Riikonen
+ Copyright (C) 1997 - 2009 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
/* Initialize packet procesors list */
ps->process = silc_dlist_init();
if (!ps->process) {
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
ps->sc = silc_calloc(1, sizeof(*ps->sc));
if (!ps->sc) {
silc_mutex_unlock(engine->lock);
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
silc_free(ps->sc);
ps->sc = NULL;
silc_mutex_unlock(engine->lock);
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
silc_free(ps->sc);
ps->sc = NULL;
silc_mutex_unlock(engine->lock);
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
silc_free(ps->sc);
ps->sc = NULL;
silc_mutex_unlock(engine->lock);
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
if (!silc_stream_set_notifier(ps->stream, schedule,
silc_packet_stream_io, ps)) {
SILC_LOG_DEBUG(("Cannot set stream notifier for packet stream"));
+ ps->stream = NULL;
silc_packet_stream_destroy(ps);
return NULL;
}
/* Padding sanity checks */
if (cipher && silc_cipher_get_mode(cipher) != SILC_CIPHER_MODE_CTR &&
- ((normal && paddedlen % block_len != 0) ||
- (!normal && silc_packet_special_len(header) % block_len != 0))) {
+ ((normal && block_len && paddedlen % block_len != 0) ||
+ (!normal && block_len &&
+ silc_packet_special_len(header) % block_len != 0))) {
SILC_LOG_DEBUG(("Packet length %d not multiple by cipher block length",
paddedlen));
silc_mutex_unlock(stream->lock);