diff --git a/src/clientmon.cpp b/src/clientmon.cpp index 288f1ec..2e96993 100644 --- a/src/clientmon.cpp +++ b/src/clientmon.cpp @@ -782,7 +782,7 @@ std::shared_ptr MonitorBuilder::exec() try { auto percent = parseTo(sval.substr(0, sval.size()-1u)); if(percent>0.0 && percent<=100.0) { - op->ackAt = uint32_t(percent * op->queueSize); + op->ackAt = uint32_t(percent / 100.0 * op->queueSize); } else { throw std::invalid_argument("not in range (0%, 100%]"); } diff --git a/src/servermon.cpp b/src/servermon.cpp index 47c1a74..2a83926 100644 --- a/src/servermon.cpp +++ b/src/servermon.cpp @@ -561,7 +561,7 @@ void ServerConn::handle_MONITOR() if(sval.size()>1 && sval.back()=='%') { try { auto percent = parseTo(sval.substr(0, sval.size()-1u)); - op->ackAt = std::max(0.0, std::min(percent, 100.0)) * op->limit; + op->ackAt = std::max(0.0, std::min(percent, 100.0)) / 100.0 * op->limit; }catch(std::exception& e){ logRemote(ioid, Level::Crit, SB()<<"Unable to parse% "<