Hi everybody, -- First a short explanation in wich case I encounter a problem: I am using lwip with uc/os ii in an embedded system runing on a nios 2 cpu. A simple tftp server was implemented with the socket API. After receiving the last package of a file, I am waiting for the system to store the file in flash memory before sending the ACK. Sending large files it might happen that I run out of pbufs waiting for the file to be stored, because the client resends the last block. So far this is not a big deal, because I am only handling one connection at a time and do not send any data while waiting. Before sending the last ACK I use lwip_ioctl() to check for pending data in the pbufs and recvfrom() in non blocking mode to read the data and release the buffer.
-- Here it comes: When I ran out of pbufs and read/release them, recvfrom() (in non blocking mode) will block on the tenth package. Both lwip_select() and lwip_ioctl() indicate that there is more data left, what is absolutely understandable, because more than ten pbufs are specified. When recvfrom() blocks and I send another datapackage to the server this package will be received. The problem will not occur if I set the number of pbufs to 9 or less. It seems to me, that rcvevent and recv_avail are incremented but no pbuf is allocated after the ninth one. I am not that familiar with the structure of lwip, but I am sure there is some kind of error checking that would prevent this from happening. I will appreciate any hint that could bring some light to this issue! Thanks in advance, --Wolfgang _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
