diff --git a/autobuild.xml b/autobuild.xml
index 9914be68678a06e049e85f7a5fe424102645eb94..5c9af29b99753500c7771464a02c7388792a1ca6 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -186,9 +186,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>d98078791ce345bf6168ce9ba53ca2d7</string>
+              <string>0c4678ac85395f5f5294b63da1d79007</string>
               <key>url</key>
-              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/222752/arch/Darwin/installer/boost-1.45.0-darwin-20110304.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/Darwin/installer/boost-1.48.0-darwin-20120208.tar.bz2</string>
             </map>
             <key>name</key>
             <string>darwin</string>
@@ -198,9 +198,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>a34e7fffdb94a6a4d8a2966b1f216da3</string>
+              <string>848766eac189e0fa785f4a025532acd9</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-linux-20110310.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/Linux/installer/boost-1.48.0-linux-20120208.tar.bz2</string>
             </map>
             <key>name</key>
             <string>linux</string>
@@ -210,9 +210,9 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>98be22c8833aa2bca184b9fa09fbb82b</string>
+              <string>cd1e60a00d40f4475ae5e0aca86f74c1</string>
               <key>url</key>
-              <string>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/boost-1.45.0-windows-20110124.tar.bz2</string>
+              <string>http://automated-builds-secondlife-com.s3.amazonaws.com/hg/repo/3p-boost/rev/249117/arch/CYGWIN/installer/boost-1.48.0-windows-20120208.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows</string>
diff --git a/indra/cmake/Boost.cmake b/indra/cmake/Boost.cmake
index 2135f0584c6520a57de8eb6bc07950abfd35b891..24de1fc0c22a6b11a52150e28507174aaae74c14 100644
--- a/indra/cmake/Boost.cmake
+++ b/indra/cmake/Boost.cmake
@@ -12,12 +12,13 @@ if (STANDALONE)
   set(BOOST_SIGNALS_LIBRARY boost_signals-mt)
   set(BOOST_SYSTEM_LIBRARY boost_system-mt)
   set(BOOST_FILESYSTEM_LIBRARY boost_filesystem-mt)
+  set(BOOST_THREAD_LIBRARY boost_thread-mt)
 else (STANDALONE)
   use_prebuilt_binary(boost)
   set(Boost_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
 
   if (WINDOWS)
-    set(BOOST_VERSION 1_45)
+    set(BOOST_VERSION 1_48)
     if(MSVC80)
       set(BOOST_PROGRAM_OPTIONS_LIBRARY 
           optimized libboost_program_options-vc80-mt-${BOOST_VERSION}
@@ -37,22 +38,26 @@ else (STANDALONE)
     else(MSVC80)
       # MSVC 10.0 config
       set(BOOST_PROGRAM_OPTIONS_LIBRARY 
-          optimized libboost_program_options-vc100-mt-${BOOST_VERSION}
-          debug libboost_program_options-vc100-mt-gd-${BOOST_VERSION})
+          optimized libboost_program_options-mt
+          debug libboost_program_options-mt-gd)
       set(BOOST_REGEX_LIBRARY
-          optimized libboost_regex-vc100-mt-${BOOST_VERSION}
-          debug libboost_regex-vc100-mt-gd-${BOOST_VERSION})
+          optimized libboost_regex-mt
+          debug libboost_regex-mt-gd)
       set(BOOST_SYSTEM_LIBRARY 
-          optimized libboost_system-vc100-mt-${BOOST_VERSION}
-          debug libboost_system-vc100-mt-gd-${BOOST_VERSION})
+          optimized libboost_system-mt
+          debug libboost_system-mt-gd)
       set(BOOST_FILESYSTEM_LIBRARY 
-          optimized libboost_filesystem-vc100-mt-${BOOST_VERSION}
-          debug libboost_filesystem-vc100-mt-gd-${BOOST_VERSION})    
+          optimized libboost_filesystem-mt
+          debug libboost_filesystem-mt-gd)
+      set(BOOST_THREAD_LIBRARY 
+          optimized libboost_thread-mt
+          debug libboost_thread-mt-gd)
     endif (MSVC80)
   elseif (DARWIN OR LINUX)
     set(BOOST_PROGRAM_OPTIONS_LIBRARY boost_program_options)
     set(BOOST_REGEX_LIBRARY boost_regex)
     set(BOOST_SYSTEM_LIBRARY boost_system)
     set(BOOST_FILESYSTEM_LIBRARY boost_filesystem)
+    set(BOOST_THREAD_LIBRARY boost_thread)
   endif (WINDOWS)
 endif (STANDALONE)
diff --git a/indra/cmake/LLCoreHttp.cmake b/indra/cmake/LLCoreHttp.cmake
index 280189da3d53cbbe9d4ce578b0fea6215a61468b..61e4b23d986de222dec352c135443a545dfdc873 100644
--- a/indra/cmake/LLCoreHttp.cmake
+++ b/indra/cmake/LLCoreHttp.cmake
@@ -3,12 +3,14 @@
 include(CARes)
 include(CURL)
 include(OpenSSL)
+include(Boost)
 
 set(LLCOREHTTP_INCLUDE_DIRS
     ${LIBS_OPEN_DIR}/llcorehttp
     ${CARES_INCLUDE_DIRS}
     ${CURL_INCLUDE_DIRS}
     ${OPENSSL_INCLUDE_DIRS}
+    ${BOOST_INCLUDE_DIRS}
     )
 
 set(LLCOREHTTP_LIBRARIES llcorehttp)
diff --git a/indra/cmake/LLPrimitive.cmake b/indra/cmake/LLPrimitive.cmake
index f15a2c2649781ba9e5c4b2446bc322b0f1b7e0f3..ab39cbb6be88597566dfac2d3c3c256100e44018 100644
--- a/indra/cmake/LLPrimitive.cmake
+++ b/indra/cmake/LLPrimitive.cmake
@@ -15,10 +15,10 @@ if (WINDOWS)
         optimized llprimitive
         debug libcollada14dom22-d
         optimized libcollada14dom22
-        debug libboost_filesystem-vc100-mt-gd-1_45
-        optimized libboost_filesystem-vc100-mt-1_45
-        debug libboost_system-vc100-mt-gd-1_45
-        optimized libboost_system-vc100-mt-1_45
+        debug libboost_filesystem-mt-gd
+        optimized libboost_filesystem-mt
+        debug libboost_system-mt-gd
+        optimized libboost_system-mt
         )
 else (WINDOWS)
     set(LLPRIMITIVE_LIBRARIES 
diff --git a/indra/llcommon/linden_common.h b/indra/llcommon/linden_common.h
index bdcc98e40208d7cd47ff2c39b383613348c4d460..50db03cb6afecb5b37ae05d4ac3da10d8e8f600c 100644
--- a/indra/llcommon/linden_common.h
+++ b/indra/llcommon/linden_common.h
@@ -82,4 +82,8 @@
 #include "llfile.h"
 #include "llformat.h"
 
+// Boost 1.45 had version 2 as the default for the filesystem library,
+// 1.48 has version 3 as the default.  Keep compatibility for now.
+#define BOOST_FILESYSTEM_VERSION		2
+
 #endif
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index e0d1817781114b69933b48712f274daa68115a2a..a950e9180c0d0128f76c2eff4b8352f74144152c 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -73,23 +73,24 @@ target_link_libraries(
   ${CARES_LIBRARIES}
   ${OPENSSL_LIBRARIES}
   ${CRYPTO_LIBRARIES}
+  ${BOOST_THREAD_LIBRARY}
   )
 
 # tests
-#if (LL_TESTS)
-if (LL_TESTS AND 0)
+if (LL_TESTS)
+#if (LL_TESTS AND 0)
   SET(llcorehttp_TEST_SOURCE_FILES
-      test_allocator.cpp
+      tests/test_allocator.cpp
       )
 
   set(llcorehttp_TEST_HEADER_FILS
-      test_httpstatus.hpp
-      test_refcounted.hpp
-      test_httpoperation.hpp
-      test_httprequest.hpp
-      test_httprequestqueue.hpp
-      test_httpheaders.hpp
-      test_bufferarray.hpp
+      tests/test_httpstatus.hpp
+      tests/test_refcounted.hpp
+      tests/test_httpoperation.hpp
+      tests/test_httprequest.hpp
+      tests/test_httprequestqueue.hpp
+      tests/test_httpheaders.hpp
+      tests/test_bufferarray.hpp
       )
 
   set_source_files_properties(${llcorehttp_TEST_HEADER_FILES}
@@ -105,13 +106,16 @@ if (LL_TESTS AND 0)
       ${WINDOWS_LIBRARIES}
       ${LLCOMMON_LIBRARIES}
       ${GOOGLEMOCK_LIBRARIES}
+      ${CURL_LIBRARIES}
+      ${OPENSSL_LIBRARIES}
+      ${CRYPTO_LIBRARIES}
       )
 
-  LL_ADD_INTEGRATION_TEST(all
+  LL_ADD_INTEGRATION_TEST(llcorehttp
                           "${llcorehttp_TEST_SOURCE_FILES}"
                           "${test_libs}"
                           )
 
-#endif (LL_TESTS)
-endif (LL_TESTS AND 0)
+endif (LL_TESTS)
+#endif (LL_TESTS AND 0)
 
diff --git a/indra/llcorehttp/_httpoprequest.cpp b/indra/llcorehttp/_httpoprequest.cpp
index 316df8bd495c0e6915ab4b4ef4a1f9f29c8b3263..3c9eb71b9a315fc9cc2c1456024636261f96649d 100644
--- a/indra/llcorehttp/_httpoprequest.cpp
+++ b/indra/llcorehttp/_httpoprequest.cpp
@@ -259,6 +259,8 @@ HttpStatus HttpOpRequest::prepareForGet(HttpService * service)
 	HttpStatus status;
 	
 	mCurlHandle = curl_easy_init();
+	curl_easy_setopt(mCurlHandle, CURLOPT_TIMEOUT, 30);
+	curl_easy_setopt(mCurlHandle, CURLOPT_CONNECTTIMEOUT, 30);
 	curl_easy_setopt(mCurlHandle, CURLOPT_NOSIGNAL, 1);
 	curl_easy_setopt(mCurlHandle, CURLOPT_NOPROGRESS, 1);
 	curl_easy_setopt(mCurlHandle, CURLOPT_URL, mReqURL.c_str());
diff --git a/indra/llcorehttp/_thread.h b/indra/llcorehttp/_thread.h
index 0937d698c71647b7ec1ff995c1aa4a519102b84d..46a333a7497079df743ee3853841f8b89320c983 100644
--- a/indra/llcorehttp/_thread.h
+++ b/indra/llcorehttp/_thread.h
@@ -27,9 +27,11 @@
 #ifndef LLCOREINT_THREAD_H_
 #define LLCOREINT_THREAD_H_
 
+#include <boost/thread.hpp>
+#include <boost/function.hpp>
 
-#include "_refcounted.h"
 
+#include "_refcounted.h"
 
 namespace LLCoreInt
 {
diff --git a/indra/llcorehttp/httpcommon.h b/indra/llcorehttp/httpcommon.h
index cd7c09f09704676fbd4052d31b015a6d27f8d17b..5fc497e72099a276d376bb34e5201d92a9563731 100644
--- a/indra/llcorehttp/httpcommon.h
+++ b/indra/llcorehttp/httpcommon.h
@@ -93,6 +93,8 @@
 /// <TBD>
 ///
 
+#include "linden_common.h"
+
 #include <string>
 
 
diff --git a/indra/llcorehttp/tests/all_test.cpp b/indra/llcorehttp/tests/llcorehttp_test.cpp
similarity index 97%
rename from indra/llcorehttp/tests/all_test.cpp
rename to indra/llcorehttp/tests/llcorehttp_test.cpp
index 636f6f8c0542fda5ccac777e357962106c3867d5..ad596d61ccfdd7cca72f907a3af63524266a76a0 100644
--- a/indra/llcorehttp/tests/all_test.cpp
+++ b/indra/llcorehttp/tests/llcorehttp_test.cpp
@@ -1,5 +1,5 @@
 /** 
- * @file test_all
+ * @file llcorehttp_test
  * @brief Main test runner
  *
  * $LicenseInfo:firstyear=2012&license=viewerlgpl$
@@ -41,6 +41,7 @@
 #include "test_bufferarray.hpp"
 #include "test_httprequestqueue.hpp"
 
+#if 0
 
 namespace tut
 {
@@ -62,3 +63,4 @@ int main()
 	curl_global_cleanup();
 }
 
+#endif
diff --git a/indra/llcorehttp/tests/test_bufferarray.hpp b/indra/llcorehttp/tests/test_bufferarray.hpp
index 4f5d0284a1a9500896993d95352641f9a315dfc0..ecbb5ef2506e58806f58d6b47024381f57e9282a 100644
--- a/indra/llcorehttp/tests/test_bufferarray.hpp
+++ b/indra/llcorehttp/tests/test_bufferarray.hpp
@@ -26,7 +26,7 @@
 #ifndef TEST_LLCORE_BUFFER_ARRAY_H_
 #define TEST_LLCORE_BUFFER_ARRAY_H_
 
-#include <core-http/bufferarray.h>
+#include "bufferarray.h"
 
 #include <iostream>
 
@@ -183,7 +183,6 @@ void BufferArrayTestObjectType::test<4>()
 	char str1[] = "abcdefghij";
 	size_t str1_len(strlen(str1));
 	char str2[] = "ABCDEFGHIJ";
-	size_t str2_len(strlen(str2));
  	char buffer[256];
 	
 	size_t len = ba->write(str1, str1_len);
diff --git a/indra/llcorehttp/tests/test_httpheaders.hpp b/indra/llcorehttp/tests/test_httpheaders.hpp
index d22b5166914c4168c5c551ba3ecde7a6c093f128..ce0d19b05842bc49c55b98fd1eaa807a7a6aa681 100644
--- a/indra/llcorehttp/tests/test_httpheaders.hpp
+++ b/indra/llcorehttp/tests/test_httpheaders.hpp
@@ -26,7 +26,7 @@
 #ifndef TEST_LLCORE_HTTP_HEADERS_H_
 #define TEST_LLCORE_HTTP_HEADERS_H_
 
-#include <core-http/httpheaders.h>
+#include "httpheaders.h"
 
 #include <iostream>
 
diff --git a/indra/llcorehttp/tests/test_httpoperation.hpp b/indra/llcorehttp/tests/test_httpoperation.hpp
index c9feaddb2a8823bcc8efac64dbf398b350f6f281..6c3df1e9e38f85e82e9f24d059f9fcb4f69c855f 100644
--- a/indra/llcorehttp/tests/test_httpoperation.hpp
+++ b/indra/llcorehttp/tests/test_httpoperation.hpp
@@ -27,7 +27,7 @@
 #define TEST_LLCORE_HTTP_OPERATION_H_
 
 #include "_httpoperation.h"
-#include <core-http/httphandler.h>
+#include "httphandler.h"
 
 #include <iostream>
 
diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp
index df5640859f70de1e1179bcfba8df372f6d42f867..ab25a2eb1ade999f6aeec397bd6b4431c6948025 100644
--- a/indra/llcorehttp/tests/test_httprequest.hpp
+++ b/indra/llcorehttp/tests/test_httprequest.hpp
@@ -26,11 +26,11 @@
 #ifndef TEST_LLCORE_HTTP_REQUEST_H_
 #define TEST_LLCORE_HTTP_REQUEST_H_
 
-#include <core-http/httprequest.h>
-#include <core-http/httphandler.h>
-#include <core-http/httpresponse.h>
-#include <core-http/_httpservice.h>
-#include <core-http/_httprequestqueue.h>
+#include "httprequest.h"
+#include "httphandler.h"
+#include "httpresponse.h"
+#include "_httpservice.h"
+#include "_httprequestqueue.h"
 
 #include <curl/curl.h>
 
@@ -360,7 +360,7 @@ void HttpRequestTestObjectType::test<5>()
 	mStatus = HttpStatus(HttpStatus::EXT_CURL_EASY, CURLE_COULDNT_CONNECT);
 	HttpHandle handle = req->requestGetByteRange(HttpRequest::DEFAULT_POLICY_ID,
 												 0.0f,
-												 "http://localhost:2/nothing/here",
+												 "http://127.0.0.1:2/nothing/here",
 												 0,
 												 0,
 												 NULL,
diff --git a/indra/llcorehttp/tests/test_httpstatus.hpp b/indra/llcorehttp/tests/test_httpstatus.hpp
index fa5803a17cb6bef3c8caba6a54a7f47e191c6196..38bf494dec5a98304e8c522f356321eefd512b97 100644
--- a/indra/llcorehttp/tests/test_httpstatus.hpp
+++ b/indra/llcorehttp/tests/test_httpstatus.hpp
@@ -27,7 +27,7 @@
 #ifndef TEST_HTTP_STATUS_H_
 #define TEST_HTTP_STATUS_H_
 
-#include <core-http/httpcommon.h>
+#include "httpcommon.h"
 
 #include <curl/curl.h>
 #include <curl/multi.h>
diff --git a/indra/llcorehttp/tests/test_refcounted.hpp b/indra/llcorehttp/tests/test_refcounted.hpp
index 6a179472883d2ad8c80e5bf7d77aca82ec359233..cb4b50287af38a0a90f3da7b0af285f09293b7ee 100644
--- a/indra/llcorehttp/tests/test_refcounted.hpp
+++ b/indra/llcorehttp/tests/test_refcounted.hpp
@@ -26,7 +26,7 @@
 #ifndef TEST_LLCOREINT_REF_COUNTED_H_
 #define TEST_LLCOREINT_REF_COUNTED_H_
 
-#include <_refcounted.h>
+#include "_refcounted.h"
 
 #include "test_allocator.h"