((msg->mid.mid == ch->mid_recv.mid) &&
(GNUNET_YES == ch->reliable)) ||
((GNUNET_NO == ch->reliable) &&
+ (msg->mid.mid >= ch->mid_recv.mid) &&
((NULL == ccc->head_recv) ||
(msg->mid.mid < ccc->head_recv->mid.mid))) )
{
next_msg);
ccc->num_recv--;
/* Do not process duplicate MID */
- if (msg->mid.mid == next_msg->mid.mid)
+ if ((msg->mid.mid == next_msg->mid.mid) || /* Duplicate */
+ (msg->mid.mid < ch->mid_recv.mid)) /* Old */
{
/* Duplicate within the queue, drop */
LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Duplicate message on %s (mid %u) dropped\n",
+ "Message on %s (mid %u) dropped\n",
GCCH_2s (ch),
ntohl (msg->mid.mid));
GNUNET_free (next_msg);