// cached
if (resolvedHosts.get(host) != null) return;
- if (Log.on) Log.log(this, " resolveAndCheckIfFirewalled: resolving " + host);
-
// if all scripts are trustworthy (local FS), continue
if (Main.originAddr == null) return;
PrintWriter pw = new PrintWriter(new OutputStreamWriter(sock.getOutputStream()));
if (content != null) {
pw.print("POST " + path + " HTTP/1.1\r\n");
- pw.print("Content-Length: " + content.length() + "\r\n");
+ int contentLength = content.substring(0, 2).equals("\r\n") ?
+ content.length() - 2 :
+ (content.length() - content.indexOf("\r\n\r\n") - 4);
+ pw.print("Content-Length: " + contentLength + "\r\n");
if (contentType != null) pw.print("Content-Type: " + contentType + "\r\n");
} else {
pw.print("GET " + path + " HTTP/1.1\r\n");
public int read(byte[] b, int off, int len) throws IOException {
boolean good = false;
try {
- if (length == 0 && contentLength == -1) readChunk();
+ if (length == 0 && contentLength == -1) {
+ readChunk();
+ if (chunkedDone) return -1;
+ } else {
+ if (length == 0) return -1;
+ }
if (len > length) len = length;
int ret = super.read(b, off, len);
length -= ret;
}
skip(2);
} else {
- skip(length);
+ if (length != 0) skip(length);
}
if (releaseMe != null) releaseMe.release();
}