Browse Source

Revert "Remove dead code"

This reverts commit fd024e677307798ae27b61f14cc89a5b7cf9182d.
Tatsuhiro Tsujikawa 9 years ago
parent
commit
2dd10c9645
1 changed files with 16 additions and 7 deletions
  1. 16 7
      src/PeerConnection.cc

+ 16 - 7
src/PeerConnection.cc

@@ -150,13 +150,22 @@ bool PeerConnection::receiveMessage(unsigned char* data, size_t& dataLength)
     else {
       assert(resbufOffset_ == resbufLength_);
       if (resbufLength_ != 0) {
-        // Shift buffer so that resbuf_[msgOffset_] moves to
-        // rebuf_[0].
-        memmove(resbuf_.get(), resbuf_.get() + msgOffset_,
-                resbufLength_ - msgOffset_);
-        resbufLength_ -= msgOffset_;
-        resbufOffset_ = resbufLength_;
-        msgOffset_ = 0;
+        if (msgOffset_ == 0 && resbufLength_ == currentPayloadLength_ + 4) {
+          // All bytes in buffer have been processed, so clear it
+          // away.
+          resbufLength_ = 0;
+          resbufOffset_ = 0;
+          msgOffset_ = 0;
+        }
+        else {
+          // Shift buffer so that resbuf_[msgOffset_] moves to
+          // rebuf_[0].
+          memmove(resbuf_.get(), resbuf_.get() + msgOffset_,
+                  resbufLength_ - msgOffset_);
+          resbufLength_ -= msgOffset_;
+          resbufOffset_ = resbufLength_;
+          msgOffset_ = 0;
+        }
       }
       size_t nread;
       // To reduce the amount of copy involved in buffer shift, large