Wifi Shield stops sending after sometime.

A 12V external power supply appears to have solved the majority of my stability problems for an original WiFi shield mounted on an Arduino Due.

My WiFi status still jumps around a bit, but that could be my wireless access point. I now only occasionally get the status WL_NO_SHIELD --which a buddy picked up on right away as being a power issue.

Other status changes (like jumping from WL_CONNECTED to WL_CONNECT_FAILED) don't happen nearly as often--and I can recover from those.

Just in case it helps, this code snippet shows how I monitored my problem before and after adding the external power supply. It won't compile as-is, but you can get the idea.

void loop()
{
char c;
boolean fgUpdateLoopId = false;
//I connected to wifi and a server socket before
//the looping started.
//WiFiClient botClient; //botClient is of type WiFiClient

if (botClient.available())
{
c = botClient.read();
Serial.println(c);
}
else
{
wifiStatus = WiFi.status();
connectedToControl = botClient.connected(); //boolean
if (connectedToControl != lastConnectedToControl)
{
fgUpdateLoopId = true;
if (!connectedToControl)
{
//I just use loopIDOfSorts to let me know if both the Wifi status
//and the wifi client status are changing at the same time or not
Serial.print(loopIDOfSorts);
Serial.println(": bot connection dropped");
}
else
{
//I currently don't explicitly re-connect
Serial.println("bot connection re-established some how");
}
//boolean Remember this current value for comparison next time
lastConnectedToControl = connectedToControl;
}
if (wifiStatus != lastWifiStatus)
{
Serial.print(loopIDOfSorts);
Serial.print(": wifiStatus changed to: ");
printWiFiStatusValue(wifiStatus);
Serial.println("");
lastWifiStatus = wifiStatus;
fgUpdateLoopId = true;
if (wifiStatus == WL_NO_SHIELD)
{
delay(1000);
Serial.println("1 sec delay for WL_NO_SHIELD is done");
}
}
if (fgUpdateLoopId)
{
loopIDOfSorts++;
}
}
}