diff --git a/webrtc/libjingle/xmpp/xmppsocket.cc b/webrtc/libjingle/xmpp/xmppsocket.cc
index fd07828..9c1bf8b 100644
--- a/webrtc/libjingle/xmpp/xmppsocket.cc
+++ b/webrtc/libjingle/xmpp/xmppsocket.cc
@@ -77,10 +77,13 @@
 
 void XmppSocket::OnWriteEvent(rtc::AsyncSocket * socket) {
   // Write bytes if there are any
-  while (buffer_.Length() != 0) {
-    int written = cricket_socket_->Send(buffer_.Data(), buffer_.Length());
+  while (buffer_.size() > 0) {
+    int written = cricket_socket_->Send(buffer_.data(), buffer_.size());
     if (written > 0) {
-      buffer_.Consume(written);
+      ASSERT(static_cast<size_t>(written) <= buffer_.size());
+      memmove(buffer_.data(), buffer_.data() + written,
+          buffer_.size() - written);
+      buffer_.SetSize(buffer_.size() - written);
       continue;
     }
     if (!cricket_socket_->IsBlocking())
@@ -127,11 +130,11 @@
     SignalRead();
   if ((events & rtc::SE_WRITE)) {
     // Write bytes if there are any
-    while (buffer_.Length() != 0) {
+    while (buffer_.size() > 0) {
       rtc::StreamResult result;
       size_t written;
       int error;
-      result = stream_->Write(buffer_.Data(), buffer_.Length(),
+      result = stream_->Write(buffer_.data(), buffer_.size(),
                               &written, &error);
       if (result == rtc::SR_ERROR) {
         LOG(LS_ERROR) << "Send error: " << error;
@@ -141,7 +144,10 @@
         return;
       ASSERT(result == rtc::SR_SUCCESS);
       ASSERT(written > 0);
-      buffer_.Shift(written);
+      ASSERT(written <= buffer_.size());
+      memmove(buffer_.data(), buffer_.data() + written,
+          buffer_.size() - written);
+      buffer_.SetSize(buffer_.size() - written);
     }
   }
   if ((events & rtc::SE_CLOSE))
@@ -187,7 +193,7 @@
 }
 
 bool XmppSocket::Write(const char * data, size_t len) {
-  buffer_.WriteBytes(data, len);
+  buffer_.AppendData(data, len);
 #ifndef USE_SSLSTREAM
   OnWriteEvent(cricket_socket_);
 #else  // USE_SSLSTREAM
diff --git a/webrtc/libjingle/xmpp/xmppsocket.h b/webrtc/libjingle/xmpp/xmppsocket.h
index 527b23a..d862afd 100644
--- a/webrtc/libjingle/xmpp/xmppsocket.h
+++ b/webrtc/libjingle/xmpp/xmppsocket.h
@@ -14,7 +14,7 @@
 #include "webrtc/libjingle/xmpp/asyncsocket.h"
 #include "webrtc/libjingle/xmpp/xmppengine.h"
 #include "webrtc/base/asyncsocket.h"
-#include "webrtc/base/bytebuffer.h"
+#include "webrtc/base/buffer.h"
 #include "webrtc/base/sigslot.h"
 
 // The below define selects the SSLStreamAdapter implementation for
@@ -62,7 +62,7 @@
   rtc::StreamInterface *stream_;
 #endif  // USE_SSLSTREAM
   buzz::AsyncSocket::State state_;
-  rtc::ByteBuffer buffer_;
+  rtc::Buffer buffer_;
   buzz::TlsOptions tls_;
 };
 
