diff -Naur orig/contrib/ports/unix/proj/minimal/echo.c patched/contrib/ports/unix/proj/minimal/echo.c --- orig/contrib/ports/unix/proj/minimal/echo.c 2006-09-27 13:00:42.000000000 +0200 +++ patched/contrib/ports/unix/proj/minimal/echo.c 2009-04-18 00:10:04.000000000 +0200 @@ -189,7 +189,7 @@ /* chain pbufs to the end of what we recv'ed previously */ ptr = es->p; - pbuf_chain(ptr,p); + pbuf_cat(ptr,p); } ret_err = ERR_OK; } @@ -311,12 +311,9 @@ pbuf_ref(es->p); } /* chop first pbuf from chain */ - do - { - /* try hard to free pbuf */ - freed = pbuf_free(ptr); - } - while(freed == 0); + /* free pbuf */ + freed = pbuf_free(ptr); + LWIP_ASSERT("freed != 0", freed != 0); /* we can read more data now */ tcp_recved(tpcb, plen); }