package http_parser.lolevel;
import java.nio.*; import java.util.*;
import http_parser.ParserType;
import static http_parser.lolevel.Util.*;
public class WrongContentLength {
static final String contentLength = "GET / HTTP/1.0\r\n" +
"Content-Length: 5\r\n" +
"\r\n" +
"hello" +
"hello_again";
static void test () {
p(WrongContentLength.class);
HTTPParser parser = new HTTPParser(ParserType.HTTP_REQUEST);
ByteBuffer buf = buffer(contentLength);
Settings settings = new Settings();
int read = parser.execute(settings, buf);
check (settings.msg_cmplt_called);
check ("invalid method".equals(settings.err));
}
public static void main(String [] args) {
test();
}
static class Settings extends ParserSettings {
public int bodyCount;
public boolean msg_cmplt_called;
public String err;
Settings () {
this.on_message_complete = new HTTPCallback () {
public int cb (HTTPParser p) {
check (5 == bodyCount);
msg_cmplt_called = true;
return 0;
}
};
this.on_body = new HTTPDataCallback() {
public int cb (HTTPParser p, ByteBuffer b, int pos, int len) {
bodyCount += len;
check ("hello".equals(str(b, pos, len)));
return 0;
}
};
this.on_error = new HTTPErrorCallback() {
public void cb (HTTPParser p, String mes, ByteBuffer b, int i) {
err = mes;
}
};
}
}
}