Francesco Sacchi<address@hidden> wrote:
Il 22/07/2011 12:36, Simon Goldschmidt ha scritto:
Francesco Sacchi<address@hidden> wrote:
We see that non-blocking sending has been implemented in lwip-1.4, and
here is our question: if we upgrade will this issue be solved?
In other words, if I open a socket in non-blocking mode, I suppose that
the lwip_send() will return an error in case it would block
(EWOULDBLOCK), but then, if I close the socket, will the memory
allocated be freed correctly?
Yes, 1.4.0 should work for you: if no buffers are available, a non-blocking
send returns EWOULDBLOCK (which a blocking send waits indefinitly for memory to
become available).
Ok, but if I close a blocked socket, will the memory allocated by the socket
itself be freed?
No, you can't close a blocked socket: lwIP's socket implementation does not
allow a socket to be used from more than one thread at once, so calling close()
from one thread while another thread is blocked in send() wont work.
However, you might want to control the amount of data buffered on the listening
connection so that the out-of-memory condition doesn't happen at all?
Could you be more specific? What listenig connection do you refer to? If you
are talking about the server side connection, that is not accessible to us
because resides on a PC and the software is not editable by us.
Ok, in that case I misunderstood you. I thought the server that blocks would
run on the same lwIP device. Being like that, non-blocking send is the way to
go.