lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] LWIP 1.3.2 and PPP


From: Sirjee Rooplall
Subject: [lwip-users] LWIP 1.3.2 and PPP
Date: Thu, 11 Feb 2010 12:02:37 +0200

Hi as stated above I am using LWIP 1.3.2 and the PPP stack.
 
I use the follwoing API's.
netconn_new
netconn_connect
netconn_delete
netconn_recv - This is called from a freeRTOS task every 10ms, to check if any data has arrived.
netbuf_data
 
I have LWIP_SO_RCVTIMEO defined as 1.
 
I am using PPP over serial through modem to sever.
 
Before I call nettcon_recv to check for data I set a receive timeout:
pxSeverConnectionHandle->recv_timeout = 10000;   // wait for incoming message 10seconds max.
 
Now here is the problem.
 
Everything works fine provided the server replies within the 10 seconds.
If netconn_recv timeout, it sets the conn->err to conn->err = ERR_TIMEOUT; //  which is -13 and referred to FATAL error.
 
The next time netconn_recev is called it encounter this piece of code which says:
if (ERR_IS_FATAL(conn->err)) {
    return NULL;
  }
 
because the conn->err is set to -13 which is fatal error, netconn_recv always returns without checking the mailbox for a message which may take more than 10 seconds to come.
 
Now the reason I am using the receive timeout in netconn_recv is because previously it wait forever for a message and if the message does not come, after 20 seconds I close the socket in another Task, and that caused my system to crash because netconn_recv was pending on that socket handle.
 
In this system using PPP and modem + GPRS it is possible that a message may not arrive, and retries are implemented etc to cater for this.
 
My question is How do I work around this ERR_IS_FATAL condition, without breaking any LWIP rules?
 
 
Kind Regards,
 
Sirjee Rooplall
Figment Design laboratories (Pty) Ltd
mailto:
address@hidden
Mobile: +27 (0)83 230 8466

reply via email to

[Prev in Thread] Current Thread [Next in Thread]