diff --git a/lib/cpp/Makefile.am b/lib/cpp/Makefile.am
index 554cb90..4de829f 100644
--- a/lib/cpp/Makefile.am
+++ b/lib/cpp/Makefile.am
@@ -11,7 +11,7 @@
                     src/concurrency/TimerManager.cc \
 	            src/protocol/TBinaryProtocol.cc \
                     src/transport/TBufferedTransport.cc \
-                    src/transport/TChunkedTransport.cc \
+                    src/transport/TFramedTransport.cc \
                     src/transport/TSocket.cc \
                     src/transport/TServerSocket.cc \
                     src/server/TSimpleServer.cc \
@@ -48,7 +48,7 @@
 include_transportdir = $(include_thriftdir)/transport
 include_transport_HEADERS = \
                          src/transport/TBufferedTransport.h \
-                         src/transport/TChunkedTransport.h \
+                         src/transport/TFramedTransport.h \
                          src/transport/TNullTransport.h \
                          src/transport/TServerSocket.h \
                          src/transport/TServerTransport.h \
diff --git a/lib/cpp/src/transport/TChunkedTransport.cc b/lib/cpp/src/transport/TFramedTransport.cc
similarity index 75%
rename from lib/cpp/src/transport/TChunkedTransport.cc
rename to lib/cpp/src/transport/TFramedTransport.cc
index bb42e38..6ab9dcc 100644
--- a/lib/cpp/src/transport/TChunkedTransport.cc
+++ b/lib/cpp/src/transport/TFramedTransport.cc
@@ -1,9 +1,11 @@
-#include "TChunkedTransport.h"
+#include <transport/TFramedTransport.h>
+#include <netinet/in.h>
+
 using std::string;
 
 namespace facebook { namespace thrift { namespace transport { 
 
-uint32_t TChunkedTransport::read(uint8_t* buf, uint32_t len) {
+uint32_t TFramedTransport::read(uint8_t* buf, uint32_t len) {
   uint32_t need = len;
 
   // We don't have enough data yet
@@ -16,7 +18,7 @@
     }
 
     // Read another chunk
-    readChunk();
+    readFrame();
   }
   
   // Hand over whatever we have
@@ -30,8 +32,8 @@
   return (len - need);
 }
 
-void TChunkedTransport::readChunk() {
-  // Get rid of the old chunk
+void TFramedTransport::readFrame() {
+  // Get rid of the old frame
   if (rBuf_ != NULL) {
     delete [] rBuf_;
     rBuf_ = NULL;
@@ -40,19 +42,20 @@
   // Read in the next chunk size
   int32_t sz;
   transport_->readAll((uint8_t*)&sz, 4);
+  sz = (int32_t)ntohl(sz);
 
   if (sz < 0) {
-    throw new TTransportException("Next chunk has negative size");
+    throw new TTransportException("Frame size has negative value");
   }
 
-  // Read the chunk payload, reset markers
+  // Read the frame payload, reset markers
   rBuf_ = new uint8_t[sz];
   transport_->readAll(rBuf_, sz);
   rPos_ = 0;
   rLen_ = sz;
 }
 
-void TChunkedTransport::write(const uint8_t* buf, uint32_t len) {
+void TFramedTransport::write(const uint8_t* buf, uint32_t len) {
   if (len == 0) {
     return;
   }
@@ -81,12 +84,14 @@
   wLen_ += len;
 }
 
-void TChunkedTransport::flush()  {
-  // Write chunk size
+void TFramedTransport::flush()  {
+  // Write frame size
   int32_t sz = wLen_;
+  sz = (int32_t)htonl(sz);
+
   transport_->write((const uint8_t*)&sz, 4);
   
-  // Write chunk body
+  // Write frame body
   if (sz > 0) {
     transport_->write(wBuf_, wLen_);
   }
diff --git a/lib/cpp/src/transport/TChunkedTransport.h b/lib/cpp/src/transport/TFramedTransport.h
similarity index 72%
rename from lib/cpp/src/transport/TChunkedTransport.h
rename to lib/cpp/src/transport/TFramedTransport.h
index ebc2780..f0234ce 100644
--- a/lib/cpp/src/transport/TChunkedTransport.h
+++ b/lib/cpp/src/transport/TFramedTransport.h
@@ -1,5 +1,5 @@
-#ifndef _THRIFT_TRANSPORT_TCHUNKEDTRANSPORT_H_
-#define _THRIFT_TRANSPORT_TCHUNKEDTRANSPORT_H_ 1
+#ifndef _THRIFT_TRANSPORT_TFRAMEDTRANSPORT_H_
+#define _THRIFT_TRANSPORT_TFRAMEDTRANSPORT_H_ 1
 
 #include "TTransport.h"
 #include <string>
@@ -10,16 +10,16 @@
 using namespace boost;
 
 /**
- * Chunked transport. All writes go into an in-memory buffer until flush is
+ * Framed transport. All writes go into an in-memory buffer until flush is
  * called, at which point the transport writes the length of the entire
  * binary chunk followed by the data payload. This allows the receiver on the
  * other end to always do fixed-length reads.
  *
  * @author Mark Slee <mcslee@facebook.com>
  */
-class TChunkedTransport : public TTransport {
+class TFramedTransport : public TTransport {
  public:
-  TChunkedTransport(shared_ptr<TTransport> transport) :
+  TFramedTransport(shared_ptr<TTransport> transport) :
     transport_(transport),
     rPos_(0), rLen_(0),
     wBufSize_(512), wLen_(0) {
@@ -27,7 +27,7 @@
     wBuf_ = new uint8_t[wBufSize_];
   }
 
-  TChunkedTransport(shared_ptr<TTransport> transport, uint32_t sz) :
+  TFramedTransport(shared_ptr<TTransport> transport, uint32_t sz) :
     transport_(transport),
     rPos_(0), rLen_(0),
     wBufSize_(sz), wLen_(0) {
@@ -35,7 +35,7 @@
     wBuf_ = new uint8_t[wBufSize_];
   }
 
-  ~TChunkedTransport() {
+  ~TFramedTransport() {
     if (rBuf_ != NULL) {
       delete [] rBuf_;
     }
@@ -73,11 +73,11 @@
   uint32_t wLen_;
 
   /**
-   * Reads a chunk of input from the underlying stream.
+   * Reads a frame of input from the underlying stream.
    */
-  void readChunk();
+  void readFrame();
 };
 
 }}} // facebook::thrift::transport
 
-#endif // #ifndef _THRIFT_TRANSPORT_TCHUNKEDTRANSPORT_H_
+#endif // #ifndef _THRIFT_TRANSPORT_TFRAMEDTRANSPORT_H_
diff --git a/lib/php/Makefile.am b/lib/php/Makefile.am
index c7cd106..0521c77 100644
--- a/lib/php/Makefile.am
+++ b/lib/php/Makefile.am
@@ -6,7 +6,7 @@
 
 transport_SCRIPTS = src/transport/TTransport.php \
                     src/transport/TBufferedTransport.php \
-                    src/transport/TChunkedTransport.php \
+                    src/transport/TFramedTransport.php \
                     src/transport/TSocket.php \
                     src/transport/TSocketPool.php
 
diff --git a/lib/php/src/transport/TChunkedTransport.php b/lib/php/src/transport/TFramedTransport.php
similarity index 91%
rename from lib/php/src/transport/TChunkedTransport.php
rename to lib/php/src/transport/TFramedTransport.php
index 04fba1f..2d41b40 100644
--- a/lib/php/src/transport/TChunkedTransport.php
+++ b/lib/php/src/transport/TFramedTransport.php
@@ -1,13 +1,13 @@
 <?php
 
 /**
- * Chunked transport. Writes and reads data in chunks that are stamped with
+ * Framed transport. Writes and reads data in chunks that are stamped with
  * their length.
  *
  * @package thrift.transport
  * @author Mark Slee <mcslee@facebook.com>
  */
-class TChunkedTransport extends TTransport {
+class TFramedTransport extends TTransport {
 
   /**
    * Underlying transport object.
@@ -52,7 +52,7 @@
     if ($need > $have) {
       $out = $this->rBuf_;
       $need -= $have;
-      $this->readChunk();
+      $this->readFrame();
     }
 
     $give = $need;
@@ -70,7 +70,7 @@
   /**
    * Reads a chunk of data into the internal read buffer.
    */
-  private function readChunk() {
+  private function readFrame() {
     $buf = $this->transport_->readAll(4);
     $val = unpack('N', $buf);
     $sz = $val[1];
