and when I tossed this on my Uno+Ethernet...
Unfortunately, that is a pretty lousy example of reading client data.
Still, there is the possibility that it could work, under most circumstances. The way to determine what it is doing, and where it is going wrong, is to print what is actually read from the client.
Put:
Serial.print("c = ");
Serial.println(c);
after:
c = client.read();
In addition, the array needs to be kept NULL terminated. Add:
buffer[bufindex] = '\0';
after
bufindex++;
Then, to assure that the data is collected in the array correctly, put:
Serial.print("buffer = [");
Serial.print(buffer);
Serial.println("]");
after the end of the while loop.
Let us know what that prints to the serial monitor, and we can go from there.