Fixed an internal command handler hangup per client

This commit is contained in:
WolverinDEV 2021-02-14 20:36:55 +01:00
parent b785cd52ba
commit 84a08c469b

View File

@ -25,8 +25,9 @@ bool command_parser::parse(bool command) {
while(index < this->data.size()) {
findex = this->data.find('|', index);
if(findex == std::string::npos)
if(findex == std::string::npos) {
findex = this->data.size();
}
this->_bulks.emplace_back(this->_bulks.size() - 1, index, this->data.substr(index, findex - index));
index = findex + 1;
@ -35,8 +36,9 @@ bool command_parser::parse(bool command) {
}
std::string_view command_parser::payload_view(size_t bulk_index) const noexcept {
if(bulk_index >= this->bulk_count())
if(bulk_index >= this->bulk_count()) {
return {};
}
auto bulk = this->bulk(bulk_index);
return this->data.substr(bulk.command_character_index());
@ -50,8 +52,10 @@ std::optional<size_t> command_parser::next_bulk_containing(const std::string_vie
if(next == std::string::npos) return std::nullopt;
size_t upper_bulk{start + 1};
for(; upper_bulk < this->bulk_count(); upper_bulk++)
if(this->bulk(upper_bulk).command_character_index() > next)
for(; upper_bulk < this->bulk_count(); upper_bulk++) {
if(this->bulk(upper_bulk).command_character_index() > next) {
break;
}
}
return upper_bulk - 1;
}