I have the same issue of the W5100 + Arduino hanging after a few hours to a few days. I have tried:
Uno+Ethernet shield, this hangs after a few hours
Arduino Ethernet board, this hangs after 1-3 days
The use of the timeout after no packet has been received for 10 seconds is clever. However, I cannot use a delay() as I am processing interrupts and don't want to lose one. If I knew where the code was hanging, perhaps I can use a counter and a timer. So that when the timer popped (say every 5 minutes), I can check the counter and if the counter showed there was a hang then I can perform the reset. Would this work ? Are any of these calls blocking:
client.available(), client.connect() or client.connected() ?
My code is very similar to the WebClientRepeating code, except that I am POSTing instead of GETing.
Many Thanks,
Netnut