I understand what the code means. It either reads contentLength bytes of data, or, if it's -1, reads until EOF.
However, I guess it would look simpler if you use only one while(read): if (contentLength == -1) { resp = new byte[contentLength]; } else { resp = new byte[2048]; contentLength = Integer.MAX_VALUE; } while (total < contentLength) { count = in.read(resp, total, resp.len-total) if (count < 0) break; total += count; if (total almost exceeds resp len) { resp = Arrays.copyOf(resp, resp.len*2); } } Also, I guess the response should be truncated back to total after the reading is complete. response = Arrays.copyOf(response, total); Thanks Max Xuelei Fan wrote: > Hi, > > bug desc: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6853793 > webrv: http://cr.openjdk.java.net/~xuelei/6853793/webrev/ > > no new regression test, trivial changes, hard to write a new test. > > Thanks, > Xuelei