diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index cd5901f..0d92a25 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -2,6 +2,14 @@
 Release 20070401
 ----------------
 
+David Reiss <dreiss@stanford.edu>
+-strings.h include fix for bzero
+-endianness fixes on TBinaryProtocol double serialization
+-improved ntohll,htonll implementation
+
+Dan Li <dto@dev.java.net>
+-Java TestServer and Tutorial Fixes
+
 Kevin Ko <kevin.s.ko@gmail.com>
 -Fix for unnecessary std::string copy construction in Protocol/Exception
 
diff --git a/lib/cpp/configure.ac b/lib/cpp/configure.ac
index 9802096..a6d61e8 100644
--- a/lib/cpp/configure.ac
+++ b/lib/cpp/configure.ac
@@ -54,6 +54,8 @@
 
 AC_CHECK_HEADERS([unistd.h])
 
+AC_CHECK_HEADERS([endian.h])
+
 AC_C_INLINE
 
 AX_BOOST_BASE([1.33.1])
diff --git a/lib/cpp/src/TLogging.h b/lib/cpp/src/TLogging.h
index e814e41..15c9c06 100644
--- a/lib/cpp/src/TLogging.h
+++ b/lib/cpp/src/TLogging.h
@@ -7,14 +7,25 @@
 #ifndef _THRIFT_LOGGING_H
 #define _THRIFT_LOGGING_H 1
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 /**
  * Contains utility macros for debugging and logging.
  *
  * @author Aditya Agarwal
  */
 
+#ifndef HAVE_CLOCK_GETTIME
 #include <time.h>
+#else
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_STDINT_H
 #include <stdint.h>
+#endif
 
 /**
  * T_GLOBAL_DEBUGGING_LEVEL = 0: all debugging turned off, debug macros undefined
diff --git a/lib/cpp/src/Thrift.h b/lib/cpp/src/Thrift.h
index d024ad5..2cb656b 100644
--- a/lib/cpp/src/Thrift.h
+++ b/lib/cpp/src/Thrift.h
@@ -7,8 +7,14 @@
 #ifndef _THRIFT_THRIFT_H_
 #define _THRIFT_THRIFT_H_ 1
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <netinet/in.h>
+#ifdef HAVE_INTTYPES_H
 #include <inttypes.h>
+#endif
 #include <string>
 #include <map>
 #include <list>
diff --git a/lib/cpp/src/protocol/TBinaryProtocol.cpp b/lib/cpp/src/protocol/TBinaryProtocol.cpp
index 544ef88..5116e86 100644
--- a/lib/cpp/src/protocol/TBinaryProtocol.cpp
+++ b/lib/cpp/src/protocol/TBinaryProtocol.cpp
@@ -6,8 +6,50 @@
 
 #include "TBinaryProtocol.h"
 
+#include <boost/static_assert.hpp>
+
 using std::string;
 
+// Use this to get around strict aliasing rules.
+// For example, uint64_t i = bitwise_cast<uint64_t>(returns_double());
+// The most obvious implementation is to just cast a pointer,
+// but that doesn't work.
+// For a pretty in-depth explanation of the problem, see
+// http://www.cellperformance.com/mike_acton/2006/06/ (...)
+// understanding_strict_aliasing.html
+template <typename To, typename From>
+static inline To bitwise_cast(From from) {
+	BOOST_STATIC_ASSERT(sizeof(From) == sizeof(To));
+
+	// BAD!!!  These are all broken with -O2.
+	//return *reinterpret_cast<To*>(&from);  // BAD!!!
+	//return *static_cast<To*>(static_cast<void*>(&from));  // BAD!!!
+	//return *(To*)(void*)&from;  // BAD!!!
+
+	// Super clean and paritally blessed by section 3.9 of the standard.
+	//unsigned char c[sizeof(from)];
+	//memcpy(c, &from, sizeof(from));
+	//To to;
+	//memcpy(&to, c, sizeof(c));
+	//return to;
+
+	// Slightly more questionable.
+	// Same code emitted by GCC.
+	//To to;
+	//memcpy(&to, &from, sizeof(from));
+	//return to;
+
+	// Technically undefined, but almost universally supported,
+	// and the most efficient implementation.
+	union {
+		From f;
+		To t;
+	} u;
+	u.f = from;
+	return u.t;
+}
+
+
 namespace facebook { namespace thrift { namespace protocol { 
 
 uint32_t TBinaryProtocol::writeMessageBegin(const std::string& name,
@@ -113,17 +155,12 @@
 }
   
 uint32_t TBinaryProtocol::writeDouble(const double dub) {
-  uint8_t b[8];
-  uint8_t* d = (uint8_t*)&dub;
-  b[0] = d[7];
-  b[1] = d[6];
-  b[2] = d[5];
-  b[3] = d[4];
-  b[4] = d[3];
-  b[5] = d[2];
-  b[6] = d[1];
-  b[7] = d[0];
-  trans_->write((uint8_t*)b, 8);
+  BOOST_STATIC_ASSERT(sizeof(double) == sizeof(uint64_t));
+  BOOST_STATIC_ASSERT(std::numeric_limits<double>::is_iec559);
+
+  uint64_t bits = bitwise_cast<uint64_t>(dub);
+  bits = htonll(bits);
+  trans_->write((uint8_t*)&bits, 8);
   return 8;
 }
 
@@ -291,18 +328,15 @@
 }
 
 uint32_t TBinaryProtocol::readDouble(double& dub) {
+  BOOST_STATIC_ASSERT(sizeof(double) == sizeof(uint64_t));
+  BOOST_STATIC_ASSERT(std::numeric_limits<double>::is_iec559);
+
+  uint64_t bits;
   uint8_t b[8];
-  uint8_t d[8];
   trans_->readAll(b, 8);
-  d[0] = b[7];
-  d[1] = b[6];
-  d[2] = b[5];
-  d[3] = b[4];
-  d[4] = b[3];
-  d[5] = b[2];
-  d[6] = b[1];
-  d[7] = b[0];
-  dub = *(double*)d;
+  bits = *(uint64_t*)b;
+  bits = ntohll(bits);
+  dub = bitwise_cast<double>(bits);
   return 8;
 }
 
diff --git a/lib/cpp/src/protocol/TProtocol.h b/lib/cpp/src/protocol/TProtocol.h
index 6264bb6..47d74f8 100644
--- a/lib/cpp/src/protocol/TProtocol.h
+++ b/lib/cpp/src/protocol/TProtocol.h
@@ -21,12 +21,24 @@
 
 using facebook::thrift::transport::TTransport;
 
+#ifdef HAVE_ENDIAN_H
+#include <endian.h>
+#endif
+
 #if __BYTE_ORDER == __BIG_ENDIAN
-#define ntohll(n) (n)
-#define htonll(n) (n)
-#else
-#define ntohll(n) ( (((unsigned long long)ntohl(n)) << 32) + ntohl(n >> 32) )
-#define htonll(n) ( (((unsigned long long)htonl(n)) << 32) + htonl(n >> 32) )
+# define ntohll(n) (n)
+# define htonll(n) (n)
+#elif __BYTE_ORDER == __LITTLE_ENDIAN
+# if defined(__GNUC__) && defined(__GLIBC__)
+#  include <byteswap.h>
+#  define ntohll(n) bswap_64(n)
+#  define htonll(n) bswap_64(n)
+# else /* GNUC & GLIBC */
+#  define ntohll(n) ( (((unsigned long long)ntohl(n)) << 32) + ntohl(n >> 32) )
+#  define htonll(n) ( (((unsigned long long)htonl(n)) << 32) + htonl(n >> 32) )
+# endif /* GNUC & GLIBC */
+#else /* __BYTE_ORDER */
+# error "Can't define htonll or ntohll!"
 #endif
 
 /**
diff --git a/lib/cpp/src/transport/TFileTransport.cpp b/lib/cpp/src/transport/TFileTransport.cpp
index aafdc21..84ea60d 100644
--- a/lib/cpp/src/transport/TFileTransport.cpp
+++ b/lib/cpp/src/transport/TFileTransport.cpp
@@ -20,6 +20,9 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <unistd.h>
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
 #include <iostream>
 #include <sys/stat.h>
 
