If the connection fails or the server stalls, it will lock up your code. The client.connected() call will return true until the server closes the connection and the client gets the close message. If the connection is broken or the server stalls, that close message is never received by the client. The client will then wait for packets that will never arrive, locking up your sketch.
The best way to avoid that is to incorporate a timeout feature to close and reopen the connection. I don't have a persistent connection example, but here is my client sketch in the playground.
http://playground.arduino.cc/Code/WebClient
Look through the GET example for the variable loopCount. If no packet is received from the server in 10 seconds, it closes the connection on the client end. You should do the same. If you do not receive a packet for 10 seconds, close the connection on your end and immediately reopen it.