while(Wire.available() == 0); // slave may send less than requested
Certainly sounds like the slave is sending 0 bytes, and you are in an infinite loop waiting for more.
Some real details on what is connected to what, with URLs for those things, would certainly be in order.