diff options
author | Simone Bordet | 2013-07-10 20:57:23 +0000 |
---|---|---|
committer | Simone Bordet | 2013-07-10 20:57:48 +0000 |
commit | 8eb664970994f3ec7e4b7a39e88db8dac651c3f3 (patch) | |
tree | 6cd1b74c3002e0bba86d3e80664de7c4a374683c /jetty-http | |
parent | cb0084260fcda4f910a7e474886b299cc5c16661 (diff) | |
download | org.eclipse.jetty.project-8eb664970994f3ec7e4b7a39e88db8dac651c3f3.tar.gz org.eclipse.jetty.project-8eb664970994f3ec7e4b7a39e88db8dac651c3f3.tar.xz org.eclipse.jetty.project-8eb664970994f3ec7e4b7a39e88db8dac651c3f3.zip |
412712 - HttpClient does not send the terminal chunk after partial writes.
HttpGenerator._header and HttpGenerator._buffer may be null when
the content is written after a partial write.
In this case, the terminal chunk was not prepared, and therefore never
written.
The fix simply creates a HttpGenerator._header to prepare the terminal
chunk, so that it will be written.
Diffstat (limited to 'jetty-http')
-rw-r--r-- | jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java index cd3edea4cb..85d70df09a 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpGenerator.java @@ -1015,14 +1015,17 @@ public class HttpGenerator extends AbstractGenerator // If we need EOC and everything written if (_needEOC && (_content == null || _content.length() == 0)) { + if (_header == null && _buffer == null) + _header = _buffers.getHeader(); + if (_needCRLF) { - if (_buffer == null && _header != null && _header.space() >= 2) + if (_buffer == null && _header != null && _header.space() >= HttpTokens.CRLF.length) { _header.put(HttpTokens.CRLF); _needCRLF = false; } - else if (_buffer!=null && _buffer.space() >= 2) + else if (_buffer!=null && _buffer.space() >= HttpTokens.CRLF.length) { _buffer.put(HttpTokens.CRLF); _needCRLF = false; |