mirror of
https://github.com/puma/puma.git
synced 2022-11-09 13:48:40 -05:00
Some fixes to the java parser
This commit is contained in:
parent
e5e993bd85
commit
dcffc1b765
1 changed files with 9 additions and 31 deletions
|
@ -87,7 +87,6 @@ public class Http11 extends RubyObject {
|
||||||
validateMaxLength(vlen, MAX_FIELD_VALUE_LENGTH, MAX_FIELD_VALUE_LENGTH_ERR);
|
validateMaxLength(vlen, MAX_FIELD_VALUE_LENGTH, MAX_FIELD_VALUE_LENGTH_ERR);
|
||||||
|
|
||||||
v = RubyString.newString(runtime, new ByteList(Http11.this.hp.parser.buffer,value,vlen));
|
v = RubyString.newString(runtime, new ByteList(Http11.this.hp.parser.buffer,value,vlen));
|
||||||
f = RubyString.newString(runtime, "HTTP_");
|
|
||||||
ByteList b = new ByteList(Http11.this.hp.parser.buffer,field,flen);
|
ByteList b = new ByteList(Http11.this.hp.parser.buffer,field,flen);
|
||||||
for(int i = 0,j = b.length();i<j;i++) {
|
for(int i = 0,j = b.length();i<j;i++) {
|
||||||
if((b.get(i) & 0xFF) == '-') {
|
if((b.get(i) & 0xFF) == '-') {
|
||||||
|
@ -96,7 +95,15 @@ public class Http11 extends RubyObject {
|
||||||
b.set(i, (byte)Character.toUpperCase((char)b.get(i)));
|
b.set(i, (byte)Character.toUpperCase((char)b.get(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f.cat(b);
|
|
||||||
|
String as = b.toString();
|
||||||
|
|
||||||
|
if(as.equals("CONTENT_LENGTH") || as.equals("CONTENT_TYPE")) {
|
||||||
|
f = RubyString.newString(runtime, b);
|
||||||
|
} else {
|
||||||
|
f = RubyString.newString(runtime, "HTTP_");
|
||||||
|
f.cat(b);
|
||||||
|
}
|
||||||
req.op_aset(req.getRuntime().getCurrentContext(), f,v);
|
req.op_aset(req.getRuntime().getCurrentContext(), f,v);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -155,36 +162,7 @@ public class Http11 extends RubyObject {
|
||||||
|
|
||||||
private Http11Parser.ElementCB header_done = new Http11Parser.ElementCB() {
|
private Http11Parser.ElementCB header_done = new Http11Parser.ElementCB() {
|
||||||
public void call(Object data, int at, int length) {
|
public void call(Object data, int at, int length) {
|
||||||
RubyHash req = (RubyHash)data;
|
|
||||||
ThreadContext context = req.getRuntime().getCurrentContext();
|
|
||||||
IRubyObject temp,ctype,clen;
|
|
||||||
|
|
||||||
clen = req.op_aref(context, runtime.newString("HTTP_CONTENT_LENGTH"));
|
|
||||||
if(!clen.isNil()) {
|
|
||||||
req.op_aset(context, runtime.newString("CONTENT_LENGTH"),clen);
|
|
||||||
}
|
|
||||||
|
|
||||||
ctype = req.op_aref(context, runtime.newString("HTTP_CONTENT_TYPE"));
|
|
||||||
if(!ctype.isNil()) {
|
|
||||||
req.op_aset(context, runtime.newString("CONTENT_TYPE"),ctype);
|
|
||||||
}
|
|
||||||
|
|
||||||
req.op_aset(context, runtime.newString("GATEWAY_INTERFACE"),runtime.newString("CGI/1.2"));
|
|
||||||
if(!(temp = req.op_aref(context, runtime.newString("HTTP_HOST"))).isNil()) {
|
|
||||||
String s = temp.toString();
|
|
||||||
int colon = s.indexOf(':');
|
|
||||||
if(colon != -1) {
|
|
||||||
req.op_aset(context, runtime.newString("SERVER_NAME"),runtime.newString(s.substring(0,colon)));
|
|
||||||
req.op_aset(context, runtime.newString("SERVER_PORT"),runtime.newString(s.substring(colon+1)));
|
|
||||||
} else {
|
|
||||||
req.op_aset(context, runtime.newString("SERVER_NAME"),temp);
|
|
||||||
req.op_aset(context, runtime.newString("SERVER_PORT"),runtime.newString("80"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body = RubyString.newString(runtime, new ByteList(hp.parser.buffer, at, length));
|
body = RubyString.newString(runtime, new ByteList(hp.parser.buffer, at, length));
|
||||||
req.op_aset(context, runtime.newString("SERVER_PROTOCOL"),runtime.newString("HTTP/1.1"));
|
|
||||||
req.op_aset(context, runtime.newString("SERVER_SOFTWARE"),runtime.newString("Puma 1.2.0.beta.1"));
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue