Fixed crash on server when Content-Length parameter was set to a non-number.

This commit is contained in:
eidheim 2015-08-03 21:15:26 +02:00
commit d74505ed86

View file

@ -272,16 +272,21 @@ namespace SimpleWeb {
std::shared_ptr<boost::asio::deadline_timer> timer; std::shared_ptr<boost::asio::deadline_timer> timer;
if(timeout_content>0) if(timeout_content>0)
timer=set_timeout_on_socket(socket, timeout_content); timer=set_timeout_on_socket(socket, timeout_content);
try {
boost::asio::async_read(*socket, request->streambuf, auto content_length=stoull(it->second);
boost::asio::transfer_exactly(stoull(it->second)-num_additional_bytes), boost::asio::async_read(*socket, request->streambuf,
[this, socket, request, timer] boost::asio::transfer_exactly(stoull(it->second)-num_additional_bytes),
(const boost::system::error_code& ec, size_t /*bytes_transferred*/) { [this, socket, request, timer]
if(timeout_content>0) (const boost::system::error_code& ec, size_t /*bytes_transferred*/) {
timer->cancel(); if(timeout_content>0)
if(!ec) timer->cancel();
find_resource(socket, request); if(!ec)
}); find_resource(socket, request);
});
}
catch(const std::exception& e) {
std::cerr << e.what() << std::endl;
}
} }
else { else {
find_resource(socket, request); find_resource(socket, request);