comparison src/org/eclipse/jetty/http/HttpGenerator.java @ 1065:158d1e6ac17f

fix JBuffer.compact()
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 09 Nov 2016 04:36:05 -0700
parents a0abb16cf6e7
children bbbda7c6e8ec
comparison
equal deleted inserted replaced
1064:a0abb16cf6e7 1065:158d1e6ac17f
132 throw new IllegalStateException("NO CONTENT"); 132 throw new IllegalStateException("NO CONTENT");
133 133
134 if (_last || _state==STATE_END) 134 if (_last || _state==STATE_END)
135 { 135 {
136 LOG.warn("Ignoring extra content {}",content); 136 LOG.warn("Ignoring extra content {}",content);
137 content.clear(); 137 // content.clear();
138 return; 138 return;
139 } 139 }
140 _last = last; 140 _last = last;
141 141
142 // Handle any unfinished business? 142 // Handle any unfinished business?
171 _contentWritten += content.remaining(); 171 _contentWritten += content.remaining();
172 172
173 // Handle the _content 173 // Handle the _content
174 if (_head) 174 if (_head)
175 { 175 {
176 content.clear(); 176 // content.clear();
177 _content=null; 177 _content = null;
178 } 178 }
179 else if ((_buffer==null || _buffer.remaining()==0) && _content.remaining() > 0 && (_last || isCommitted() && _content.remaining()>1024)) 179 else if ((_buffer==null || _buffer.remaining()==0) && _content.remaining() > 0 && (_last || isCommitted() && _content.remaining()>1024))
180 { 180 {
181 _bypass = true; 181 _bypass = true;
182 } 182 }
341 if (_status<200 && _status>=100 ) 341 if (_status<200 && _status>=100 )
342 { 342 {
343 _noContent = true; 343 _noContent = true;
344 _content=null; 344 _content=null;
345 if (_buffer!=null) 345 if (_buffer!=null)
346 _buffer.clear(); 346 _buffer.clearJ();
347 // end the header. 347 // end the header.
348 348
349 if (_status!=101 ) 349 if (_status!=101 )
350 { 350 {
351 _header.put(HttpTokens.CRLF); 351 _header.put(HttpTokens.CRLF);
356 else if (_status==204 || _status==304) 356 else if (_status==204 || _status==304)
357 { 357 {
358 _noContent = true; 358 _noContent = true;
359 _content=null; 359 _content=null;
360 if (_buffer!=null) 360 if (_buffer!=null)
361 _buffer.clear(); 361 _buffer.clearJ();
362 } 362 }
363 } 363 }
364 364
365 // key field values 365 // key field values
366 HttpFields.Field content_length = null; 366 HttpFields.Field content_length = null;
696 case 0: 696 case 0:
697 { 697 {
698 len=0; 698 len=0;
699 // Nothing more we can write now. 699 // Nothing more we can write now.
700 if (_header != null) 700 if (_header != null)
701 _header.clear(); 701 _header.clearJ();
702 702
703 _bypass = false; 703 _bypass = false;
704 _bufferChunked = false; 704 _bufferChunked = false;
705 705
706 if (_buffer != null) 706 if (_buffer != null)
707 { 707 {
708 _buffer.clear(); 708 _buffer.clearJ();
709 if (_contentLength == HttpTokens.CHUNKED_CONTENT) 709 if (_contentLength == HttpTokens.CHUNKED_CONTENT)
710 { 710 {
711 // Special case handling for small left over buffer from 711 // Special case handling for small left over buffer from
712 // an addContent that caused a buffer flush. 712 // an addContent that caused a buffer flush.
713 if (_content != null && _content.remaining() < _buffer.space() && _state != STATE_FLUSHING) 713 if (_content != null && _content.remaining() < _buffer.space() && _state != STATE_FLUSHING)
714 { 714 {
715 _buffer.put(_content); 715 _buffer.put(_content);
716 _content.clear(); 716 _content.clearJ();
717 _content=null; 717 _content=null;
718 } 718 }
719 } 719 }
720 } 720 }
721 721
956 _persistent = null; 956 _persistent = null;
957 _contentWritten = 0; 957 _contentWritten = 0;
958 _contentLength = HttpTokens.UNKNOWN_CONTENT; 958 _contentLength = HttpTokens.UNKNOWN_CONTENT;
959 _content = null; 959 _content = null;
960 if (_buffer!=null) 960 if (_buffer!=null)
961 _buffer.clear(); 961 _buffer.clearJ();
962 } 962 }
963 963
964 /* ------------------------------------------------------------ */ 964 /* ------------------------------------------------------------ */
965 /** 965 /**
966 * @return Returns the contentBufferSize. 966 * @return Returns the contentBufferSize.
1064 1064
1065 public final void completeUncheckedAddContent() 1065 public final void completeUncheckedAddContent()
1066 { 1066 {
1067 _contentWritten += _buffer.remaining(); 1067 _contentWritten += _buffer.remaining();
1068 if (_head) 1068 if (_head)
1069 _buffer.clear(); 1069 _buffer.clearJ();
1070 } 1070 }
1071 1071
1072 private boolean isBufferFull2() 1072 private boolean isBufferFull2()
1073 { 1073 {
1074 if (_buffer != null && _buffer.space()==0) 1074 if (_buffer != null && _buffer.space()==0)
1075 { 1075 {
1076 if (_buffer.remaining()==0) 1076 if (_buffer.remaining()==0)
1077 _buffer.compact(); 1077 _buffer.limit(0);
1078 return _buffer.space()==0; 1078 return _buffer.space()==0;
1079 } 1079 }
1080 1080
1081 return _content!=null && _content.remaining()>0; 1081 return _content!=null && _content.remaining()>0;
1082 } 1082 }