Mercurial Hosting > luan
comparison src/org/eclipse/jetty/http/HttpParser.java @ 1025:cf0367978d8b
remove View.CaseInsensitive
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Wed, 02 Nov 2016 23:46:43 -0600 |
| parents | 3718afd99988 |
| children | 2ea54e6117c3 |
comparison
equal
deleted
inserted
replaced
| 1024:be50ffc0ad5c | 1025:cf0367978d8b |
|---|---|
| 65 private Buffer _header; // Buffer for header data (and small _content) | 65 private Buffer _header; // Buffer for header data (and small _content) |
| 66 private Buffer _body; // Buffer for large content | 66 private Buffer _body; // Buffer for large content |
| 67 private Buffer _buffer; // The current buffer in use (either _header or _content) | 67 private Buffer _buffer; // The current buffer in use (either _header or _content) |
| 68 private String _cached; | 68 private String _cached; |
| 69 private String _tok0; // Saved token: header name, request method or response version | 69 private String _tok0; // Saved token: header name, request method or response version |
| 70 private final View.CaseInsensitive _tok1 = new View.CaseInsensitive(); // Saved token: header value, request URI or response code | 70 private String _tok1; // Saved token: header value, request URI or response code |
| 71 private String _multiLineValue; | 71 private String _multiLineValue; |
| 72 private int _responseStatus; // If >0 then we are parsing a response | 72 private int _responseStatus; // If >0 then we are parsing a response |
| 73 private boolean _persistent; | 73 private boolean _persistent; |
| 74 | 74 |
| 75 protected final View _contentView = new View(); // View of the content in the buffer for {@link Input} | 75 protected final View _contentView = new View(); // View of the content in the buffer for {@link Input} |
| 322 break; | 322 break; |
| 323 | 323 |
| 324 case STATE_STATUS: | 324 case STATE_STATUS: |
| 325 if (ch == HttpTokens.SPACE) | 325 if (ch == HttpTokens.SPACE) |
| 326 { | 326 { |
| 327 _tok1.update(_buffer.markIndex(), _buffer.getIndex() - 1); | 327 // _tok1.update(_buffer.markIndex(), _buffer.getIndex() - 1); |
| 328 _tok1 = _buffer.peek(_buffer.markIndex(), _buffer.getIndex() - 1 - _buffer.markIndex()).toString(); | |
| 328 _state=STATE_SPACE2; | 329 _state=STATE_SPACE2; |
| 329 continue; | 330 continue; |
| 330 } | 331 } |
| 331 else if (ch>='0' && ch<='9') | 332 else if (ch>='0' && ch<='9') |
| 332 { | 333 { |
| 337 { | 338 { |
| 338 _eol=ch; | 339 _eol=ch; |
| 339 _state=STATE_HEADER; | 340 _state=STATE_HEADER; |
| 340 // _tok0.setPutIndex(_tok0.getIndex()); | 341 // _tok0.setPutIndex(_tok0.getIndex()); |
| 341 _tok0 = ""; | 342 _tok0 = ""; |
| 342 _tok1.setPutIndex(_tok1.getIndex()); | 343 // _tok1.setPutIndex(_tok1.getIndex()); |
| 344 _tok1 = ""; | |
| 343 _multiLineValue=null; | 345 _multiLineValue=null; |
| 344 continue; | 346 continue; |
| 345 } | 347 } |
| 346 // not a digit, so must be a URI | 348 // not a digit, so must be a URI |
| 347 _state=STATE_URI; | 349 _state=STATE_URI; |
| 349 break; | 351 break; |
| 350 | 352 |
| 351 case STATE_URI: | 353 case STATE_URI: |
| 352 if (ch == HttpTokens.SPACE) | 354 if (ch == HttpTokens.SPACE) |
| 353 { | 355 { |
| 354 _tok1.update(_buffer.markIndex(), _buffer.getIndex() - 1); | 356 // _tok1.update(_buffer.markIndex(), _buffer.getIndex() - 1); |
| 357 _tok1 = _buffer.peek(_buffer.markIndex(), _buffer.getIndex() - 1 - _buffer.markIndex()).toString(); | |
| 355 _state=STATE_SPACE2; | 358 _state=STATE_SPACE2; |
| 356 continue; | 359 continue; |
| 357 } | 360 } |
| 358 else if (ch < HttpTokens.SPACE && ch>=0) | 361 else if (ch < HttpTokens.SPACE && ch>=0) |
| 359 { | 362 { |
| 360 // HTTP/0.9 | 363 // HTTP/0.9 |
| 361 _handler.startRequest(_tok0, _buffer.sliceFromMark(), null); | 364 _handler.startRequest(_tok0, _buffer.sliceFromMark().toString(), null); |
| 362 _persistent=false; | 365 _persistent=false; |
| 363 _state=STATE_SEEKING_EOF; | 366 _state=STATE_SEEKING_EOF; |
| 364 _handler.headerComplete(); | 367 _handler.headerComplete(); |
| 365 _handler.messageComplete(_contentPosition); | 368 _handler.messageComplete(_contentPosition); |
| 366 return 1; | 369 return 1; |
| 379 { | 382 { |
| 380 _eol=ch; | 383 _eol=ch; |
| 381 _state=STATE_HEADER; | 384 _state=STATE_HEADER; |
| 382 // _tok0.setPutIndex(_tok0.getIndex()); | 385 // _tok0.setPutIndex(_tok0.getIndex()); |
| 383 _tok0 = ""; | 386 _tok0 = ""; |
| 384 _tok1.setPutIndex(_tok1.getIndex()); | 387 // _tok1.setPutIndex(_tok1.getIndex()); |
| 388 _tok1 = ""; | |
| 385 _multiLineValue=null; | 389 _multiLineValue=null; |
| 386 } | 390 } |
| 387 else | 391 else |
| 388 { | 392 { |
| 389 // HTTP/0.9 | 393 // HTTP/0.9 |
| 409 _eol=ch; | 413 _eol=ch; |
| 410 _persistent = HttpVersions.CACHE.getOrdinal(version) >= HttpVersions.HTTP_1_1_ORDINAL; | 414 _persistent = HttpVersions.CACHE.getOrdinal(version) >= HttpVersions.HTTP_1_1_ORDINAL; |
| 411 _state=STATE_HEADER; | 415 _state=STATE_HEADER; |
| 412 // _tok0.setPutIndex(_tok0.getIndex()); | 416 // _tok0.setPutIndex(_tok0.getIndex()); |
| 413 _tok0 = ""; | 417 _tok0 = ""; |
| 414 _tok1.setPutIndex(_tok1.getIndex()); | 418 // _tok1.setPutIndex(_tok1.getIndex()); |
| 419 _tok1 = ""; | |
| 415 _multiLineValue=null; | 420 _multiLineValue=null; |
| 416 continue; | 421 continue; |
| 417 } | 422 } |
| 418 break; | 423 break; |
| 419 | 424 |
| 435 // handler last header if any | 440 // handler last header if any |
| 436 if (_cached!=null || _tok0.length() > 0 || _tok1.length() > 0 || _multiLineValue != null) | 441 if (_cached!=null || _tok0.length() > 0 || _tok1.length() > 0 || _multiLineValue != null) |
| 437 { | 442 { |
| 438 String header = _cached!=null ? _cached : _tok0; | 443 String header = _cached!=null ? _cached : _tok0; |
| 439 _cached = null; | 444 _cached = null; |
| 440 String value = _multiLineValue == null ? _tok1.toString() : _multiLineValue; | 445 String value = _multiLineValue == null ? _tok1 : _multiLineValue; |
| 441 | 446 |
| 442 int ho = HttpHeaders.CACHE.getOrdinal(header); | 447 int ho = HttpHeaders.CACHE.getOrdinal(header); |
| 443 if (ho >= 0) | 448 if (ho >= 0) |
| 444 { | 449 { |
| 445 int vo; | 450 int vo; |
| 511 } | 516 } |
| 512 | 517 |
| 513 _handler.parsedHeader(header, value); | 518 _handler.parsedHeader(header, value); |
| 514 // _tok0.setPutIndex(_tok0.getIndex()); | 519 // _tok0.setPutIndex(_tok0.getIndex()); |
| 515 _tok0 = ""; | 520 _tok0 = ""; |
| 516 _tok1.setPutIndex(_tok1.getIndex()); | 521 // _tok1.setPutIndex(_tok1.getIndex()); |
| 522 _tok1 = ""; | |
| 517 _multiLineValue=null; | 523 _multiLineValue=null; |
| 518 } | 524 } |
| 519 _buffer.setMarkIndex(-1); | 525 _buffer.setMarkIndex(-1); |
| 520 | 526 |
| 521 // now handle ch | 527 // now handle ch |
| 678 case HttpTokens.CARRIAGE_RETURN: | 684 case HttpTokens.CARRIAGE_RETURN: |
| 679 case HttpTokens.LINE_FEED: | 685 case HttpTokens.LINE_FEED: |
| 680 if (_length > 0) | 686 if (_length > 0) |
| 681 { | 687 { |
| 682 if (_tok1.length() == 0) | 688 if (_tok1.length() == 0) |
| 683 _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); | 689 // _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); |
| 690 _tok1 = _buffer.peek(_buffer.markIndex(), _length).toString(); | |
| 684 else | 691 else |
| 685 { | 692 { |
| 686 // Continuation line! | 693 // Continuation line! |
| 687 if (_multiLineValue == null) _multiLineValue=_tok1.toString(StringUtil.__ISO_8859_1); | 694 if (_multiLineValue == null) _multiLineValue = _tok1; |
| 688 _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); | 695 // _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); |
| 689 _multiLineValue += " " + _tok1.toString(StringUtil.__ISO_8859_1); | 696 _tok1 = _buffer.peek(_buffer.markIndex(), _length).toString(); |
| 697 _multiLineValue += " " + _tok1; | |
| 690 } | 698 } |
| 691 } | 699 } |
| 692 _eol=ch; | 700 _eol=ch; |
| 693 _state=STATE_HEADER; | 701 _state=STATE_HEADER; |
| 694 break; | 702 break; |
| 711 case HttpTokens.CARRIAGE_RETURN: | 719 case HttpTokens.CARRIAGE_RETURN: |
| 712 case HttpTokens.LINE_FEED: | 720 case HttpTokens.LINE_FEED: |
| 713 if (_length > 0) | 721 if (_length > 0) |
| 714 { | 722 { |
| 715 if (_tok1.length() == 0) | 723 if (_tok1.length() == 0) |
| 716 _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); | 724 // _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); |
| 725 _tok1 = _buffer.peek(_buffer.markIndex(), _length).toString(); | |
| 717 else | 726 else |
| 718 { | 727 { |
| 719 // Continuation line! | 728 // Continuation line! |
| 720 if (_multiLineValue == null) _multiLineValue=_tok1.toString(StringUtil.__ISO_8859_1); | 729 if (_multiLineValue == null) _multiLineValue = _tok1; |
| 721 _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); | 730 // _tok1.update(_buffer.markIndex(), _buffer.markIndex() + _length); |
| 722 _multiLineValue += " " + _tok1.toString(StringUtil.__ISO_8859_1); | 731 _tok1 = _buffer.peek(_buffer.markIndex(), _length).toString(); |
| 732 _multiLineValue += " " + _tok1; | |
| 723 } | 733 } |
| 724 } | 734 } |
| 725 _eol=ch; | 735 _eol=ch; |
| 726 _state=STATE_HEADER; | 736 _state=STATE_HEADER; |
| 727 break; | 737 break; |
| 1065 _header = _buffers.getHeader(); | 1075 _header = _buffers.getHeader(); |
| 1066 //System.out.println("qqqqqqqqqqqqqqqq k "+_tok0); | 1076 //System.out.println("qqqqqqqqqqqqqqqq k "+_tok0); |
| 1067 // _tok0.update(_header); | 1077 // _tok0.update(_header); |
| 1068 _tok0 = ""; | 1078 _tok0 = ""; |
| 1069 //System.out.println("qqqqqqqqqqqqqqqq l "+_tok0); | 1079 //System.out.println("qqqqqqqqqqqqqqqq l "+_tok0); |
| 1070 _tok1.update(_header); | 1080 // _tok1.update(_header); |
| 1081 _tok1 = ""; | |
| 1071 } | 1082 } |
| 1072 return _header; | 1083 return _header; |
| 1073 } | 1084 } |
| 1074 | 1085 |
| 1075 public Buffer blockForContent(long maxIdleTime) throws IOException | 1086 public Buffer blockForContent(long maxIdleTime) throws IOException |
| 1145 public void parsedHeader(String name, String value) throws IOException; | 1156 public void parsedHeader(String name, String value) throws IOException; |
| 1146 | 1157 |
| 1147 /** | 1158 /** |
| 1148 * This is the method called by parser when the HTTP request line is parsed | 1159 * This is the method called by parser when the HTTP request line is parsed |
| 1149 */ | 1160 */ |
| 1150 public abstract void startRequest(String method, Buffer url, String version) | 1161 public abstract void startRequest(String method, String url, String version) |
| 1151 throws IOException; | 1162 throws IOException; |
| 1152 | 1163 |
| 1153 public void earlyEOF(); | 1164 public void earlyEOF(); |
| 1154 } | 1165 } |
| 1155 | 1166 |
