Skip to content
Snippets Groups Projects
Commit 98374dc7 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Try recv lock fix

parent 29f57b7d
No related branches found
No related tags found
No related merge requests found
......@@ -262,7 +262,10 @@ void Peer::data() {
int rc = 0;
{
UNIQUE_LOCK(recv_mtx_,lk);
recv_buf_.reserve_buffer(kMaxMessage);
}
if (recv_buf_.buffer_capacity() < (kMaxMessage / 10)) {
net_->_notifyError(this, ftl::protocol::Error::kBufferSize, "Buffer is at capacity");
......@@ -360,7 +363,11 @@ bool Peer::_data() {
try {
recv_checked_.test_and_set();
UNIQUE_LOCK(recv_mtx_,lk);
bool has_next = _has_next() && recv_buf_.next(msg_handle);
lk.unlock();
if (!has_next) {
already_processing_.clear();
if (!recv_checked_.test_and_set() && !already_processing_.test_and_set()) {
......
......@@ -248,7 +248,7 @@ private: // Functions
std::atomic_flag recv_checked_ = ATOMIC_FLAG_INIT;
msgpack::unpacker recv_buf_;
//MUTEX recv_mtx_;
MUTEX recv_mtx_;
// Send buffers
msgpack::vrefbuffer send_buf_;
......
......@@ -418,6 +418,7 @@ PeerPtr Universe::getWebService() const {
}
void Universe::_periodic() {
LOG(INFO) << "PERIODIC " << reconnects_.size();
auto i = reconnects_.begin();
while (i != reconnects_.end()) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment