Am 13.04.2021 um 13:31 schrieb Thompson, Jeff: > Regarding the connection timeout, I tried setting timeout values for the > socket immediately after creating it: > > struct timeval sendToVal = > { > .tv_sec = HTTPS_SOCKET_TIMEOUT, > .tv_usec = 0 > }; > > lwip_setsockopt(*(int *)sockFd, SOL_SOCKET, SO_SNDTIMEO, &sendToVal, > sizeof(sendToVal) ); > lwip_setsockopt(*(int *)sockFd, SOL_SOCKET, SO_RCVTIMEO, &sendToVal, > sizeof(sendToVal) );
For a starter, check the return value of setsockopt. Maybe you haven't enabled support for this in lwIP code... Regards, Simon > > but the call to lwIP_recv does not return after I pull the cable on the > network side of my switch and wait for much longer than the timeout value I > set. > > Jeff Thompson | Senior Electrical Engineer-Firmware > +1 704 752 6513 x1394 > www.invue.com > -----Original Message----- > From: lwip-users <lwip-users-bounces+jeffthompson=invue....@nongnu.org> On > Behalf Of goldsi...@gmx.de > Sent: Tuesday, April 13, 2021 05:17 > To: Mailing list for lwIP users <lwip-users@nongnu.org> > Subject: Re: [lwip-users] Recovering from network outage > > Am 13.04.2021 um 08:08 schrieb Rod Boyce: >> Jeff, >> >> It sounds like you are using Ethernet this being the case you can >> detect link-up and link-down from the Ethernet PHY. >> >> This means that you can poll the Ethernet PHY for link status and >> either take networking down when Phy is disconnected or bring >> networking up when Phy is connected. > > While you can check if the phy is reconnected (hint: use the link status > callback provided by lwIP), this will not be of much use, as you could well > get disconnected behind the first (or any) switch (so your own link status > always stays up). > > In this case, there's really no other option than to poll for a connection > and wait for it to succceed. Ideally, you'd combine this with a low-enough > (but not too low) connection timeout. > > Regards, > Simon > >> >> >> Hope that helps. >> >> Rod >> >> >> On 12/04/2021 21:03, Thompson, Jeff wrote: >>> >>> How can I recover from a network outage? I leave the cable from my >>> system to the network switch connected, but pull the cable from the >>> network switch to the cloud. Detecting that the server I was talking >>> to is no longer talking is easy enough, but how do I recover? I’m >>> using a plain old socket to make the connection, and >>> lwIP_send/lwIP_recv) for data transfer of an HTTPS GET request. >>> >>> >>> >>> I start up a timer that expires if there is no server response after >>> a minute; much more than enough, I’m told. But what then? Can the >>> timer callback do anything to make lwIP_send or lwIP_recv return to >>> the calling task, preferably with an error? >>> >>> >>> >>> *Jeff Thompson* | Senior Electrical Engineer-Firmware >>> +1 704 752 6513 x1394 >>> www.invue.com <www.invue.com> >>> >>> >>> >>> >>> _______________________________________________ >>> lwip-users mailing list >>> lwip-users@nongnu.org >>> https://lists.nongnu.org/mailman/listinfo/lwip-users >> >> _______________________________________________ >> lwip-users mailing list >> lwip-users@nongnu.org >> https://lists.nongnu.org/mailman/listinfo/lwip-users >> > > > _______________________________________________ > lwip-users mailing list > lwip-users@nongnu.org > https://lists.nongnu.org/mailman/listinfo/lwip-users > _______________________________________________ > lwip-users mailing list > lwip-users@nongnu.org > https://lists.nongnu.org/mailman/listinfo/lwip-users > _______________________________________________ lwip-users mailing list lwip-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/lwip-users