BaseXClient.receive ignores EOF if the connection is severed:
/**
* Receives a string and writes it to the specified output stream.
* @param o output stream
* @throws IOException I/O exception
*/
private void receive(final OutputStream o) throws IOException {
while(true) {
final int b = in.read();
if(b == 0) break;
o.write(b);
}
}
The result is an out of memory error because you're trying to stuff infinitely many -1 values into the ByteArrayOutputStream backing o.
- Godmar