On Fri, 2008-03-07 at 10:33 -0500, Bill Auerbach wrote:
> It is being called.  If I view the data to be freed, it's intact.  The data
> received on the PC is the same data with the first word trashed because
> free() overwrites the first word of the data block.

This sounds like something is wrong.  Either a bug in lwIP or you're
using the API incorrectly.

> In my case, tcp_write
> is being called repeatedly with < tcp_sndbuf amount of data so the first
> call to tcp_sent has no data since the preceding tcp_write took all of it.

I don't understand what you're getting at here.  The size of the call to
tcp_write should make no difference.  By "the call to tcp_sent has no
data" do you mean tcp_sent callback gets called with a length of zero? 

> Would turning on TCP_OUTPUT_DEBUG and adding a printf in my tcp_sent be
> useful for you to see the transaction?

Could you double check that when tcp_sent is called you're freeing the
correct buffer?  Note that you may get multiple tcp_sent callbacks for
one tcp_write, each specifying that only a part of the buffer can be
freed.  Alternatively you may get only one tcp_sent callback for
multiple tcp_writes, and you may then be able to free multiple buffers.

Kieran



_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to