Skip to content

Commit 7d0f96c

Browse files
committed
Fixed parsing of requests without bodies
1 parent eecd76f commit 7d0f96c

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

websocketpp/http/impl/parser.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ inline bool parser::prepare_body(lib::error_code & ec) {
167167
return true;
168168
} else {
169169
ec = lib::error_code();
170-
return false;
170+
return true; // valid! means there is no body to read
171171
}
172172
}
173173

websocketpp/http/impl/response.hpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace parser {
4242
inline size_t response::consume(char const * buf, size_t len, lib::error_code & ec) {
4343
if (m_state == state::DONE) {
4444
// the response is already complete. End immediately without reading.
45-
ec = lib::error_code();
45+
ec.clear();
4646
return 0;
4747
}
4848

@@ -95,7 +95,7 @@ inline size_t response::consume(char const * buf, size_t len, lib::error_code &
9595
m_buf->resize(static_cast<std::string::size_type>(end-begin));
9696
}
9797

98-
ec = lib::error_code();
98+
ec.clear();
9999
return len;
100100
}
101101

@@ -125,6 +125,13 @@ inline size_t response::consume(char const * buf, size_t len, lib::error_code &
125125
if (!prepare_body(ec))
126126
return 0;
127127

128+
if (m_body_encoding == body_encoding::unknown) {
129+
m_state = state::DONE;
130+
m_buf.reset();
131+
ec.clear();
132+
return len; // pretend we read everything!
133+
}
134+
128135
// transition state to reading the response body
129136
m_state = state::BODY;
130137

@@ -155,7 +162,7 @@ inline size_t response::consume(char const * buf, size_t len, lib::error_code &
155162
// frees memory used temporarily during header parsing
156163
m_buf.reset();
157164

158-
ec = lib::error_code();
165+
ec.clear();
159166
return read;
160167
} else {
161168
// we got a line

0 commit comments

Comments
 (0)