From 978c68dcf8196c8e4282753910543a2cfa3beb61 Mon Sep 17 00:00:00 2001 From: goldsimon Date: Thu, 14 Jun 2007 07:22:43 +0000 Subject: [PATCH] pbuf_copy: chained pbufs were not copied correctly because of wrong packet-queue-check --- src/core/pbuf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/pbuf.c b/src/core/pbuf.c index d60b6149..a5d59a65 100644 --- a/src/core/pbuf.c +++ b/src/core/pbuf.c @@ -727,15 +727,19 @@ pbuf_copy(struct pbuf *p_to, struct pbuf *p_from) if((p_from != NULL) && (p_from->len == p_from->tot_len)) { /* don't copy more than one packet! */ - LWIP_ASSERT("pbuf_copy() does not allow packet queues!\n", + if (p_from->next != NULL) { + LWIP_ASSERT("pbuf_copy() does not allow packet queues!\n", p_from->next == NULL); - return ERR_VAL; + return ERR_VAL; + } } if((p_to != NULL) && (p_to->len == p_to->tot_len)) { /* don't copy more than one packet! */ - LWIP_ASSERT("pbuf_copy() does not allow packet queues!\n", + if (p_from->next != NULL) { + LWIP_ASSERT("pbuf_copy() does not allow packet queues!\n", p_to->next == NULL); - return ERR_VAL; + return ERR_VAL; + } } } while (p_from); LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE | 1, ("pbuf_copy: end of chain reached.\n"));