I'm using lwIP, raw mode, in a project which plays Internet streaming audio.  
When my audio ring buffer becomes full, I must momentarily halt incoming 
packets.  Previously I was using uIP, and I could simply call uip_stop and 
uip_restart.  That worked great but uIP had other problems with the data stream 
which I'm hoping lwIP can solve.

As I understand, in the recieve callback I would call tcp_recved() and 
pbuf_free() to tell lwIP that I have the data and it can clear it from its 
buffer.  How do I tell lwIP that I can't accept more data now, and it should 
send ZeroWindows?  I have tried not calling these functions in different 
combinations, and the host (what lwIP is connecting to) keeps retransmitting 
because lwIP apparently didn't ACK.  

However, I noticed if I set tcp_recv(pcb, 0) rather than the correct callback 
function, it will send ZeroWindows.  

Do I have to keep track of the pointer to the pbuf in my code to use later (if 
my buffer is full), and when should I call tcp_recved() when I can't currently 
accept more data?  What is the correct usage to ensure lwIP sends ZeroWindows 
rather than not ACKing?






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

Reply via email to