There is a lot of confusion in this thread about these two issues, but I
think I understand what's happening.

The first issue, receiving an extra "sent" callback with len 1 at the
end of a transfer, is due to getting the ACK from the other side for our
FIN, which causes TCP_EVENT_SENT() to be called (src/core/tcp_in.c line
317).  This is not a big problem, but I can see that it's confusing
behaviour and not ideal, so a bug has been filed and it will get fixed
I'm sure.

The second issue, double call to close_conn(), is entirely due to the
way the application is structured, and not a bug in lwIP itself.  If you
look at the httpserver_raw example, which I'm guessing is rather similar
to the actual code Chris is using, it calls close_conn() for a number of
reasons.  This might be because the connection has been closed by the
other end (pbuf == NULL) or due to some error that it has detected
(extra sent callback - see above).

In the pbuf == NULL case you might not notice http_recv() handling this
as it should do so silently and call close_conn() for you.  The only way
to be 100% sure what events are leading to the two calls to close_conn()
are to trace it in your application - this function is not called
directly by lwIP.

However, as far as I can tell, this isn't causing any problems.  I'm
guessing that whoever wrote the example application intended
close_conn() to be possibly called multiple times, so I wouldn't worry
about it.

Kieran



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

Reply via email to