$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2007-12-08 06:05:03
Author: danieljames
Date: 2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
New Revision: 41865
URL: http://svn.boost.org/trac/boost/changeset/41865
Log:
Merge from trunk.
Properties modified: 
   branches/fix-links/   (props changed)
Text files modified: 
   branches/fix-links/boost/asio/ssl/detail/openssl_operation.hpp |    38 +++++-                                  
   branches/fix-links/libs/asio/doc/reference.qbk                 |   241 +++++++++++++++++++++++++-------------- 
   branches/fix-links/libs/asio/doc/reference.xsl                 |    22 +++                                     
   branches/fix-links/libs/thread/test/test_mutex.cpp             |     2                                         
   branches/fix-links/status/explicit-failures-markup.xml         |    27 ++-                                     
   branches/fix-links/tools/build/v2/tools/msvc.jam               |     3                                         
   6 files changed, 225 insertions(+), 108 deletions(-)
Modified: branches/fix-links/boost/asio/ssl/detail/openssl_operation.hpp
==============================================================================
--- branches/fix-links/boost/asio/ssl/detail/openssl_operation.hpp	(original)
+++ branches/fix-links/boost/asio/ssl/detail/openssl_operation.hpp	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -101,6 +101,10 @@
       &openssl_operation::do_async_write, 
       this, boost::arg<1>(), boost::arg<2>()
     );
+    read_ = boost::bind(
+      &openssl_operation::do_async_read, 
+      this
+    );
     handler_= boost::bind(
       &openssl_operation::async_user_handler, 
       this, boost::arg<1>(), boost::arg<2>()
@@ -123,6 +127,10 @@
       &openssl_operation::do_sync_write, 
       this, boost::arg<1>(), boost::arg<2>()
     );
+    read_ = boost::bind(
+      &openssl_operation::do_sync_read, 
+      this
+    );
     handler_ = boost::bind(
       &openssl_operation::sync_user_handler, 
       this, boost::arg<1>(), boost::arg<2>()
@@ -135,7 +143,7 @@
   int start()
   {
     int rc = primitive_( session_ );
-    int sys_error_code = ERR_get_error();
+
     bool is_operation_done = (rc > 0);  
                 // For connect/accept/shutdown, the operation
                 // is done, when return code is 1
@@ -145,6 +153,8 @@
     int error_code =  !is_operation_done ?
           ::SSL_get_error( session_, rc ) :
           0;        
+    int sys_error_code = ERR_get_error();
+
     bool is_read_needed = (error_code == SSL_ERROR_WANT_READ);
     bool is_write_needed = (error_code == SSL_ERROR_WANT_WRITE ||
                               ::BIO_ctrl_pending( ssl_bio_ ));
@@ -212,6 +222,10 @@
 
         return start();
       }
+      else if (is_read_needed)
+      {
+        return read_();
+      }
     }
 
     // Continue with operation, flush any SSL data out to network...
@@ -223,10 +237,12 @@
   typedef boost::function<int (const boost::system::error_code&, int)>
     int_handler_func;
   typedef boost::function<int (bool, int)> write_func;
+  typedef boost::function<int ()> read_func;
 
   ssl_primitive_func  primitive_;
   user_handler_func  user_handler_;
   write_func  write_;
+  read_func  read_;
   int_handler_func handler_;
     
   net_buffer send_buf_; // buffers for network IO
@@ -250,8 +266,15 @@
     throw boost::system::system_error(error);
   }
     
-  int async_user_handler(const boost::system::error_code& error, int rc)
+  int async_user_handler(boost::system::error_code error, int rc)
   {
+    if (rc < 0)
+    {
+      if (!error)
+        error = boost::asio::error::no_recovery;
+      rc = 0;
+    }
+
     user_handler_(error, rc);
     return 0;
   }
@@ -316,8 +339,8 @@
     }
     
     // OPeration is not done and writing to net has been made...
-    // start reading...
-    do_async_read();
+    // start operation again
+    start();
           
     return 0;
   }
@@ -340,7 +363,7 @@
       handler_(error, rc);
   }
 
-  void do_async_read()
+  int do_async_read()
   {
     // Wait for new data
     socket_.async_read_some
@@ -355,6 +378,7 @@
         boost::asio::placeholders::bytes_transferred
       ) 
     );
+    return 0;
   }
 
   void async_read_handler(const boost::system::error_code& error,
@@ -433,8 +457,8 @@
       // Finish the operation, with success
       return rc;
                 
-    // Operation is not finished, read data from net...
-    return do_sync_read();
+    // Operation is not finished, start again.
+    return start();
   }
 
   int do_sync_read()
Modified: branches/fix-links/libs/asio/doc/reference.qbk
==============================================================================
--- branches/fix-links/libs/asio/doc/reference.qbk	(original)
+++ branches/fix-links/libs/asio/doc/reference.qbk	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -3879,7 +3879,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -3894,7 +3894,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -3925,7 +3925,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -3940,7 +3940,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -8445,7 +8445,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -8460,7 +8460,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -8491,7 +8491,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -8506,7 +8506,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -11089,7 +11089,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -11104,7 +11104,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -11135,7 +11135,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -11150,7 +11150,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -13870,7 +13870,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -13885,7 +13885,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -13916,7 +13916,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -13931,7 +13931,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -17346,7 +17346,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -17361,7 +17361,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -17392,7 +17392,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -17407,7 +17407,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -19793,7 +19793,7 @@
 
 The default buffer size. 
 
-  static const std::size_t default_buffer_size;
+  static const std::size_t default_buffer_size = implementation_defined;
 
 
 
@@ -20963,7 +20963,7 @@
 
 The default buffer size. 
 
-  static const std::size_t default_buffer_size;
+  static const std::size_t default_buffer_size = implementation_defined;
 
 
 
@@ -22881,7 +22881,7 @@
 
 
 
-  static const boost::system::error_category & addrinfo_category;
+  static const boost::system::error_category & addrinfo_category = boost::asio::error::get_addrinfo_category();
 
 
 
@@ -23087,6 +23087,66 @@
 [endsect]
 
 
+
+[section:error__get_addrinfo_category error::get_addrinfo_category]
+
+
+
+  const boost::system::error_category & get_addrinfo_category();
+
+
+
+[endsect]
+
+
+
+[section:error__get_misc_category error::get_misc_category]
+
+
+
+  const boost::system::error_category & get_misc_category();
+
+
+
+[endsect]
+
+
+
+[section:error__get_netdb_category error::get_netdb_category]
+
+
+
+  const boost::system::error_category & get_netdb_category();
+
+
+
+[endsect]
+
+
+
+[section:error__get_ssl_category error::get_ssl_category]
+
+
+
+  const boost::system::error_category & get_ssl_category();
+
+
+
+[endsect]
+
+
+
+[section:error__get_system_category error::get_system_category]
+
+
+
+  const boost::system::error_category & get_system_category();
+
+
+
+[endsect]
+
+
 [section:error__make_error_code error::make_error_code]
 
 
@@ -23178,7 +23238,7 @@
 
 
 
-  static const boost::system::error_category & misc_category;
+  static const boost::system::error_category & misc_category = boost::asio::error::get_misc_category();
 
 
 
@@ -23210,6 +23270,11 @@
     [Element not found. ]
   ]
 
+  [
+    [fd_set_failure]
+    [The descriptor cannot fit into the select system call's fd_set. ]
+  ]
+
 ]
 
 
@@ -23222,7 +23287,7 @@
 
 
 
-  static const boost::system::error_category & netdb_category;
+  static const boost::system::error_category & netdb_category = boost::asio::error::get_netdb_category();
 
 
 
@@ -23271,7 +23336,7 @@
 
 
 
-  static const boost::system::error_category & ssl_category;
+  static const boost::system::error_category & ssl_category = boost::asio::error::get_ssl_category();
 
 
 
@@ -23300,7 +23365,7 @@
 
 
 
-  static const boost::system::error_category & system_category;
+  static const boost::system::error_category & system_category = boost::asio::error::get_system_category();
 
 
 
@@ -27770,7 +27835,7 @@
 
 Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system. 
 
-  static const int address_configured;
+  static const int address_configured = implementation_defined;
 
 
 
@@ -27785,7 +27850,7 @@
 
 If used with v4_mapped, return all matching IPv6 and IPv4 addresses. 
 
-  static const int all_matching;
+  static const int all_matching = implementation_defined;
 
 
 
@@ -27886,7 +27951,7 @@
 
 Determine the canonical name of the host specified in the query. 
 
-  static const int canonical_name;
+  static const int canonical_name = implementation_defined;
 
 
 
@@ -27925,7 +27990,7 @@
 
 Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. 
 
-  static const int numeric_host;
+  static const int numeric_host = implementation_defined;
 
 
 
@@ -27940,7 +28005,7 @@
 
 Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. 
 
-  static const int numeric_service;
+  static const int numeric_service = implementation_defined;
 
 
 
@@ -27955,7 +28020,7 @@
 
 Indicate that returned endpoint is intended for use as a locally bound socket endpoint. 
 
-  static const int passive;
+  static const int passive = implementation_defined;
 
 
 
@@ -27995,7 +28060,7 @@
 
 If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. 
 
-  static const int v4_mapped;
+  static const int v4_mapped = implementation_defined;
 
 
 
@@ -28267,7 +28332,7 @@
 
 Only return IPv4 addresses if a non-loopback IPv4 address is configured for the system. Only return IPv6 addresses if a non-loopback IPv6 address is configured for the system. 
 
-  static const int address_configured;
+  static const int address_configured = implementation_defined;
 
 
 
@@ -28279,7 +28344,7 @@
 
 If used with v4_mapped, return all matching IPv6 and IPv4 addresses. 
 
-  static const int all_matching;
+  static const int all_matching = implementation_defined;
 
 
 
@@ -28291,7 +28356,7 @@
 
 Determine the canonical name of the host specified in the query. 
 
-  static const int canonical_name;
+  static const int canonical_name = implementation_defined;
 
 
 
@@ -28303,7 +28368,7 @@
 
 Host name should be treated as a numeric string defining an IPv4 or IPv6 address and no name resolution should be attempted. 
 
-  static const int numeric_host;
+  static const int numeric_host = implementation_defined;
 
 
 
@@ -28315,7 +28380,7 @@
 
 Service name should be treated as a numeric string defining a port number and no name resolution should be attempted. 
 
-  static const int numeric_service;
+  static const int numeric_service = implementation_defined;
 
 
 
@@ -28327,7 +28392,7 @@
 
 Indicate that returned endpoint is intended for use as a locally bound socket endpoint. 
 
-  static const int passive;
+  static const int passive = implementation_defined;
 
 
 
@@ -28339,7 +28404,7 @@
 
 If the query protocol family is specified as IPv6, return IPv4-mapped IPv6 addresses on finding no IPv6 addresses. 
 
-  static const int v4_mapped;
+  static const int v4_mapped = implementation_defined;
 
 
 
@@ -33256,7 +33321,7 @@
 
 The maximum length of the queue of pending incoming connections. 
 
-  static const int max_connections;
+  static const int max_connections = implementation_defined;
 
 
 
@@ -33268,7 +33333,7 @@
 
 Specify that the data should not be subject to routing. 
 
-  static const int message_do_not_route;
+  static const int message_do_not_route = implementation_defined;
 
 
 
@@ -33293,7 +33358,7 @@
 
 Process out-of-band data. 
 
-  static const int message_out_of_band;
+  static const int message_out_of_band = implementation_defined;
 
 
 
@@ -33305,7 +33370,7 @@
 
 Peek at incoming data without removing it from the input queue. 
 
-  static const int message_peek;
+  static const int message_peek = implementation_defined;
 
 
 
@@ -33862,7 +33927,7 @@
 
 Implement various bug workarounds. 
 
-  static const int default_workarounds;
+  static const int default_workarounds = implementation_defined;
 
 
 
@@ -34091,7 +34156,7 @@
 
 Disable SSL v2. 
 
-  static const int no_sslv2;
+  static const int no_sslv2 = implementation_defined;
 
 
 
@@ -34106,7 +34171,7 @@
 
 Disable SSL v3. 
 
-  static const int no_sslv3;
+  static const int no_sslv3 = implementation_defined;
 
 
 
@@ -34121,7 +34186,7 @@
 
 Disable TLS v1. 
 
-  static const int no_tlsv1;
+  static const int no_tlsv1 = implementation_defined;
 
 
 
@@ -34450,7 +34515,7 @@
 
 Always create a new key when using tmp_dh parameters. 
 
-  static const int single_dh_use;
+  static const int single_dh_use = implementation_defined;
 
 
 
@@ -34874,7 +34939,7 @@
 
 Do not request client certificate on renegotiation. Ignored unless verify_peer is set. 
 
-  static const int verify_client_once;
+  static const int verify_client_once = implementation_defined;
 
 
 
@@ -34889,7 +34954,7 @@
 
 Fail verification if the peer has no certificate. Ignored unless verify_peer is set. 
 
-  static const int verify_fail_if_no_peer_cert;
+  static const int verify_fail_if_no_peer_cert = implementation_defined;
 
 
 
@@ -34920,7 +34985,7 @@
 
 No verification. 
 
-  static const int verify_none;
+  static const int verify_none = implementation_defined;
 
 
 
@@ -34935,7 +35000,7 @@
 
 Verify the peer. 
 
-  static const int verify_peer;
+  static const int verify_peer = implementation_defined;
 
 
 
@@ -35251,7 +35316,7 @@
 
 Implement various bug workarounds. 
 
-  static const int default_workarounds;
+  static const int default_workarounds = implementation_defined;
 
 
 
@@ -35367,7 +35432,7 @@
 
 Disable SSL v2. 
 
-  static const int no_sslv2;
+  static const int no_sslv2 = implementation_defined;
 
 
 
@@ -35379,7 +35444,7 @@
 
 Disable SSL v3. 
 
-  static const int no_sslv3;
+  static const int no_sslv3 = implementation_defined;
 
 
 
@@ -35391,7 +35456,7 @@
 
 Disable TLS v1. 
 
-  static const int no_tlsv1;
+  static const int no_tlsv1 = implementation_defined;
 
 
 
@@ -35443,7 +35508,7 @@
 
 Always create a new key when using tmp_dh parameters. 
 
-  static const int single_dh_use;
+  static const int single_dh_use = implementation_defined;
 
 
 
@@ -35455,7 +35520,7 @@
 
 Do not request client certificate on renegotiation. Ignored unless verify_peer is set. 
 
-  static const int verify_client_once;
+  static const int verify_client_once = implementation_defined;
 
 
 
@@ -35467,7 +35532,7 @@
 
 Fail verification if the peer has no certificate. Ignored unless verify_peer is set. 
 
-  static const int verify_fail_if_no_peer_cert;
+  static const int verify_fail_if_no_peer_cert = implementation_defined;
 
 
 
@@ -35492,7 +35557,7 @@
 
 No verification. 
 
-  static const int verify_none;
+  static const int verify_none = implementation_defined;
 
 
 
@@ -35504,7 +35569,7 @@
 
 Verify the peer. 
 
-  static const int verify_peer;
+  static const int verify_peer = implementation_defined;
 
 
 
@@ -38992,12 +39057,12 @@
 
 [endsect]
 
-[section:error__addrinfo_errors__gt_ error::addrinfo_errors >]
+[section:is_error_code_enum_lt__addrinfo_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >]
 
 
 
   template<>
-  struct is_error_code_enum< boost::asio::error::addrinfo_errors >
+  struct boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >
 
 
 [heading Data Members]
@@ -39005,18 +39070,18 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.error__addrinfo_errors__gt_.value [*value]]]
+    [[link boost_asio.reference.is_error_code_enum_lt__addrinfo_errors__gt_.value [*value]]]
     []
   ]
 
 ]
 
 
-[section:value error::addrinfo_errors >::value]
+[section:value boost::system::is_error_code_enum< boost::asio::error::addrinfo_errors >::value]
 
 
 
-  static const bool value;
+  static const bool value = true;
 
 
 
@@ -39026,12 +39091,12 @@
 
 [endsect]
 
-[section:error__basic_errors__gt_ error::basic_errors >]
+[section:is_error_code_enum_lt__basic_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::basic_errors >]
 
 
 
   template<>
-  struct is_error_code_enum< boost::asio::error::basic_errors >
+  struct boost::system::is_error_code_enum< boost::asio::error::basic_errors >
 
 
 [heading Data Members]
@@ -39039,18 +39104,18 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.error__basic_errors__gt_.value [*value]]]
+    [[link boost_asio.reference.is_error_code_enum_lt__basic_errors__gt_.value [*value]]]
     []
   ]
 
 ]
 
 
-[section:value error::basic_errors >::value]
+[section:value boost::system::is_error_code_enum< boost::asio::error::basic_errors >::value]
 
 
 
-  static const bool value;
+  static const bool value = true;
 
 
 
@@ -39060,12 +39125,12 @@
 
 [endsect]
 
-[section:error__misc_errors__gt_ error::misc_errors >]
+[section:is_error_code_enum_lt__misc_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::misc_errors >]
 
 
 
   template<>
-  struct is_error_code_enum< boost::asio::error::misc_errors >
+  struct boost::system::is_error_code_enum< boost::asio::error::misc_errors >
 
 
 [heading Data Members]
@@ -39073,18 +39138,18 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.error__misc_errors__gt_.value [*value]]]
+    [[link boost_asio.reference.is_error_code_enum_lt__misc_errors__gt_.value [*value]]]
     []
   ]
 
 ]
 
 
-[section:value error::misc_errors >::value]
+[section:value boost::system::is_error_code_enum< boost::asio::error::misc_errors >::value]
 
 
 
-  static const bool value;
+  static const bool value = true;
 
 
 
@@ -39094,12 +39159,12 @@
 
 [endsect]
 
-[section:error__netdb_errors__gt_ error::netdb_errors >]
+[section:is_error_code_enum_lt__netdb_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::netdb_errors >]
 
 
 
   template<>
-  struct is_error_code_enum< boost::asio::error::netdb_errors >
+  struct boost::system::is_error_code_enum< boost::asio::error::netdb_errors >
 
 
 [heading Data Members]
@@ -39107,18 +39172,18 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.error__netdb_errors__gt_.value [*value]]]
+    [[link boost_asio.reference.is_error_code_enum_lt__netdb_errors__gt_.value [*value]]]
     []
   ]
 
 ]
 
 
-[section:value error::netdb_errors >::value]
+[section:value boost::system::is_error_code_enum< boost::asio::error::netdb_errors >::value]
 
 
 
-  static const bool value;
+  static const bool value = true;
 
 
 
@@ -39128,12 +39193,12 @@
 
 [endsect]
 
-[section:error__ssl_errors__gt_ error::ssl_errors >]
+[section:is_error_code_enum_lt__ssl_errors__gt_ boost::system::is_error_code_enum< boost::asio::error::ssl_errors >]
 
 
 
   template<>
-  struct is_error_code_enum< boost::asio::error::ssl_errors >
+  struct boost::system::is_error_code_enum< boost::asio::error::ssl_errors >
 
 
 [heading Data Members]
@@ -39141,18 +39206,18 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.error__ssl_errors__gt_.value [*value]]]
+    [[link boost_asio.reference.is_error_code_enum_lt__ssl_errors__gt_.value [*value]]]
     []
   ]
 
 ]
 
 
-[section:value error::ssl_errors >::value]
+[section:value boost::system::is_error_code_enum< boost::asio::error::ssl_errors >::value]
 
 
 
-  static const bool value;
+  static const bool value = true;
 
 
 
Modified: branches/fix-links/libs/asio/doc/reference.xsl
==============================================================================
--- branches/fix-links/libs/asio/doc/reference.xsl	(original)
+++ branches/fix-links/libs/asio/doc/reference.xsl	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -103,6 +103,9 @@
 <xsl:template name="strip-asio-ns">
   <xsl:param name="name"/>
   <xsl:choose>
+    <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
+      <xsl:value-of select="$name"/>
+    </xsl:when>
     <xsl:when test="contains($name, 'asio::')">
       <xsl:value-of select="substring-after($name, 'asio::')"/>
     </xsl:when>
@@ -116,6 +119,9 @@
 <xsl:template name="strip-ns">
   <xsl:param name="name"/>
   <xsl:choose>
+    <xsl:when test="contains($name, 'boost::system::is_error_code_enum')">
+      <xsl:value-of select="$name"/>
+    </xsl:when>
     <xsl:when test="contains($name, '::') and contains($name, '<')">
       <xsl:choose>
         <xsl:when test="string-length(substring-before($name, '::')) < string-length(substring-before($name, '<'))">
@@ -143,6 +149,18 @@
 <xsl:template name="make-id">
   <xsl:param name="name"/>
   <xsl:choose>
+    <xsl:when test="contains($name, 'boost::system::')">
+      <xsl:call-template name="make-id">
+        <xsl:with-param name="name"
+         select="substring-after($name, 'boost::system::')"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:when test="contains($name, 'boost::asio::error::')">
+      <xsl:call-template name="make-id">
+        <xsl:with-param name="name"
+         select="concat(substring-before($name, 'boost::asio::error::'), substring-after($name, 'boost::asio::error::'))"/>
+      </xsl:call-template>
+    </xsl:when>
     <xsl:when test="contains($name, '::')">
       <xsl:call-template name="make-id">
         <xsl:with-param name="name"
@@ -793,7 +811,9 @@
 <xsl:template name="variable">
 <xsl:text>
   </xsl:text><xsl:if test="@static='yes'">static </xsl:if><xsl:value-of
- select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>;
+ select="type"/><xsl:text> </xsl:text><xsl:value-of select="name"/>
+ <xsl:if test="count(initializer) = 1"><xsl:text> =</xsl:text>
+ <xsl:value-of select="initializer"/></xsl:if>;
 </xsl:template>
 
 
Modified: branches/fix-links/libs/thread/test/test_mutex.cpp
==============================================================================
--- branches/fix-links/libs/thread/test/test_mutex.cpp	(original)
+++ branches/fix-links/libs/thread/test/test_mutex.cpp	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -138,7 +138,7 @@
 
         boost::system_time now=boost::get_system_time();
         boost::posix_time::milliseconds const timeout_resolution(20);
-        BOOST_CHECK((now-timeout_resolution)<timeout);
+        BOOST_CHECK((timeout-timeout_resolution)<now);
 
         // Test the lock, unlock and timedlock methods.
         lock.unlock();
Modified: branches/fix-links/status/explicit-failures-markup.xml
==============================================================================
--- branches/fix-links/status/explicit-failures-markup.xml	(original)
+++ branches/fix-links/status/explicit-failures-markup.xml	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -4396,15 +4396,27 @@
             <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures reason="?">
+            <test name="TransitionTest*"/>
+            <toolset name="intel-linux*"/>
+            <toolset name="pathscale*"/>
+            <note author="Andreas Huber" refid="29"/>
+        </mark-expected-failures>
+        <mark-expected-failures reason="?">
+          <test name="TransitionTest*"/>
+          <test name="InvalidTransitionTest1Relaxed"/>
+          <test name="StopWatchExample"/>
+          <toolset name="vacpp-8.0"/>
+          <note author="Andreas Huber" refid="29"/>
+        </mark-expected-failures>
+        <mark-expected-failures reason="?">
             <test name="CustomReactionTest*"/>
             <toolset name="acc*"/>
             <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures reason="?">
-            <test name="TransitionTest*"/>
-            <test name="PerformanceExample"/>
-            <toolset name="vacpp"/>
-            <note author="Andreas Huber" refid="29"/>
+          <test name="HistoryTestRelaxed"/>
+          <toolset name="intel-linux-9.1"/>
+          <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="StopWatch*"/>
@@ -4415,13 +4427,10 @@
                 ignored.
             </note>
         </mark-expected-failures>
-        <mark-expected-failures>
+        <mark-expected-failures reason="?">
             <test name="DllTest*"/>
             <toolset name="msvc-8.0~wm5~stlport5.1"/>
-            <note author="Andreas Huber">
-                This test fails due to unresolved externals that are
-                not library-related.
-            </note>
+            <note author="Andreas Huber" refid="29"/>
         </mark-expected-failures>
     </library>
 
Modified: branches/fix-links/tools/build/v2/tools/msvc.jam
==============================================================================
--- branches/fix-links/tools/build/v2/tools/msvc.jam	(original)
+++ branches/fix-links/tools/build/v2/tools/msvc.jam	2007-12-08 06:05:02 EST (Sat, 08 Dec 2007)
@@ -996,11 +996,10 @@
             for local x in "" "Wow6432Node\\"
             {
                 vc-path += [ W32_GETREG
-                "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\"$(x)$(.version-$(i)-reg)
+                "HKEY_LOCAL_MACHINE\\SOFTWARE\\"$(x)"\\Microsoft\\"$(.version-$(i)-reg)
                 : "ProductDir" ] ;
             }
             
-            
             if $(vc-path)
             {
                 vc-path = [ path.native [ path.join [ path.make-NT $(vc-path[1]) ] "bin" ] ] ;