public static class HTTPException extends IOException { public HTTPException(String s) { super(s); } }
+ public static HTTP stdio = new HTTP("stdio:");
+
// Statics ///////////////////////////////////////////////////////////////////////////////////////////////
// previous call wrecked the socket connection, but we already sent our request, so we can't just retry --
// this could cause the server to receive the request twice, which could be bad (think of the case where the
// server call causes Amazon.com to ship you an item with one-click purchasing).
- if (sock == null)
+ if (in == null)
throw new HTTPException("a previous pipelined call messed up the socket");
Hashtable h = in == null ? null : parseHeaders(in);
if (buflen >= 4 && buf[buflen - 4] == '\r' && buf[buflen - 3] == '\n' &&
buf[buflen - 2] == '\r' && buf[buflen - 1] == '\n')
break;
+ if (buflen >=2 && buf[buflen - 1] == '\n' && buf[buflen - 2] == '\n')
+ break; // nice for people using stdio
if (buflen == buf.length) {
byte[] newbuf = new byte[buf.length * 2];
System.arraycopy(buf, 0, newbuf, 0, buflen);
/** encapsulates most of the proxy logic; some is shared in HTTP.java */
public static class Proxy {
- public Proxy() { }
-
public String httpProxyHost = null; ///< the HTTP Proxy host to use
public int httpProxyPort = -1; ///< the HTTP Proxy port to use
public String httpsProxyHost = null; ///< seperate proxy for HTTPS
Scheduler.add(new Scheduler.Task() {
public void perform() throws IOException, JSExn {
Box b = new Box();
- Template t = Template.buildTemplate(Stream.getInputStream((JS)Main.builtin.get("org/ibex/builtin/proxy_authorization.ibex")), new Ibex(null));
+ Template t = Template.buildTemplate("org/ibex/builtin/proxy_authorization.ibex", Stream.getInputStream((JS)Main.builtin.get("org/ibex/builtin/proxy_authorization.ibex")), new Ibex(null));
t.apply(b);
b.put("realm", realm);
b.put("proxyIP", proxyIP);