/** * @param localMaxDynamicTableSize The maximum allowed size of the local dynamic header field table. * @param maxHeaderSize The maximum allowed size of a headers block, expressed as total of all name and value characters, plus 32 per field */ public HpackDecoder(int localMaxDynamicTableSize, int maxHeaderSize) { _context=new HpackContext(localMaxDynamicTableSize); _localMaxDynamicTableSize=localMaxDynamicTableSize; _builder = new MetaDataBuilder(maxHeaderSize); }
private boolean checkPseudoHeader(HttpHeader header, Object value) { if (_fields.size()>0) { streamException("Pseudo header %s after fields", header.asString()); return false; } if (value==null) return true; streamException("Duplicate pseudo header %s", header.asString()); return false; }
if (buffer.remaining()>_builder.getMaxSize()) throw new HpackException.SessionException("431 Request Header Fields too large"); _builder.emit(entry.getHttpField()); _builder.emit(entry.getHttpField()); _builder.checkSize(length,huffmanName); if (huffmanName) name=Huffman.decode(buffer,length); if (c>='A'&&c<='Z') _builder.streamException("Uppercase header name %s",name); break; _builder.checkSize(length,huffmanValue); if (huffmanValue) value=Huffman.decode(buffer,length); _builder.emit(field); return _builder.build();
if(checkHeader(header, _status)) _status = (Integer)staticField.getStaticValue(); _response = true; if(checkPseudoHeader(header, _method)) _method = value; _request = true; if(checkPseudoHeader(header, _scheme)) _scheme = (HttpScheme)staticField.getStaticValue(); _request = true; if(checkHeader(header, _status)) _status = field.getIntValue(); _response = true; if(checkPseudoHeader(header, _method)) _method = value; _request = true; if(checkPseudoHeader(header, _scheme) && value != null) _scheme = HttpScheme.CACHE.get(value); _request = true; if(checkPseudoHeader(header, _authority)) if(checkPseudoHeader(header, _path)) streamException("No Path");
private boolean checkHeader(HttpHeader header, int value) { if (_fields.size()>0) { streamException("Pseudo header %s after fields", header.asString()); return false; } if (value==-1) return true; streamException("Duplicate pseudo header %s", header.asString()); return false; }