[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [lwip-users] Data passed to UDP receive callback
From: |
Ben Hastings |
Subject: |
RE: [lwip-users] Data passed to UDP receive callback |
Date: |
Mon, 10 Aug 2009 12:48:38 -0400 |
> It looks like you're trying to send the pbuf that you've just
received,
> and that the problem arises because the address you've been given
> points
> to the received header that then is changed by the sendto operation.
> Is
> that correct?
Yes, both the pbuf and the address pointer are passed directly to the
udp_sendto() function. I was having problems doing in-place operations
on the received pbuf, so I made the simple UDP echo server to show the
problem. It must have worked at some point in the past, because it is
almost identical to the one described in a thread in 2007.
> If that's the case, then I think your fix of copying the address out
of
> the received pbuf is the right thing to do. The only alternative
would
> be for lwIP to do this operation all the time, when usually it would
> not be necessary.
I'm okay copying the address to save overhead on more "typical" uses,
but it should probably be documented somewhere that addr is just a
pointer to the pbuf header, and could be affected if the pbuf is used
for something else.
On a side note, what happens if the pbuf is freed before the end of the
callback? Does that also free the memory that the address pointer
points to?
Ben Hastings