Possible Bug in the WiFi Library

If I open up the WifiChatServer example sketch and change the loop to this...

void loop() {
  server.write('a');
}

...and then telnet to the WifiChatServer IP/Port I get some weird behaviour. Approximately every 2 seconds I get a burst of 'a' characters in the terminal. However, if I start tapping in the terminal 'a' characters come through as soon as I tap (ie. more frequent than a burst every 2 seconds).

I traced the problem as far as this function in the WiFi library (in server_drv.cpp)...

uint8_t ServerDrv::checkDataSent(uint8_t sock)
{
	const uint16_t TIMEOUT_DATA_SENT = 25;
    uint16_t timeout = 0;
	uint8_t _data = 0;
	uint8_t _dataLen = 0;

	do {
		WAIT_FOR_SLAVE_SELECT();
		// Send Command
		SpiDrv::sendCmd(DATA_SENT_TCP_CMD, PARAM_NUMS_1);
		SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM);

		//Wait the reply elaboration
		SpiDrv::waitForSlaveReady();

		// Wait for reply
		if (!SpiDrv::waitResponseCmd(DATA_SENT_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen))
		{
			WARN("error waitResponse isDataSent");
		}
		SpiDrv::spiSlaveDeselect();

		if (_data) timeout = 0;
		else{
			++timeout;
			delay(100);
		}

	}while((_data==0)&&(timeout<TIMEOUT_DATA_SENT));
    return (timeout==TIMEOUT_DATA_SENT)?0:1;
}

The timeout counter above regularly reaches around 18 (an 1800 second delay) if I don't press in the terminal. However, if I do repeatedly press in the terminal the timeout rarely goes above 0 sometimes it gets to 2.

It seems as though if I just stream data to a client it takes a long time for the DATA_SENT_TCP_CMD to be registered. However, if the client sends a small amount of data back the DATA_SENT_TCP_CMD seems to be immediately registered. Anyone else experienced this? Or know of a fix? (other than getting the client to send back a small amount of data each time it receives a packet from the server running on the arduino)