Index: bp-core.php
===================================================================
--- bp-core.php	(revision 2786)
+++ bp-core.php	(working copy)
@@ -605,16 +605,16 @@
  * eg: http://domain.com/ OR https://domain.com
  *
  * @package BuddyPress Core
- * @uses get_blog_option() WordPress function to fetch blog meta.
+ * @uses bp_core_get_home_url() Returns the domain for the root blog with contextual SSL scheme.
  * @return $domain The domain URL for the blog.
  */
 function bp_core_get_root_domain() {
 	global $current_blog;
 
 	if ( defined( 'BP_ENABLE_MULTIBLOG' ) )
-		$domain = get_blog_option( $current_blog->blog_id, 'siteurl' );
+		$domain = bp_core_get_home_url( $current_blog->blog_id );
 	else
-		$domain = get_blog_option( BP_ROOT_BLOG, 'siteurl' );
+		$domain = bp_core_get_home_url( BP_ROOT_BLOG );
 
 	return apply_filters( 'bp_core_get_root_domain', $domain );
 }
Index: bp-core/bp-core-wpabstraction.php
===================================================================
--- bp-core/bp-core-wpabstraction.php	(revision 2786)
+++ bp-core/bp-core-wpabstraction.php	(working copy)
@@ -61,6 +61,54 @@
 	}
 }
 
+/**
+ * Retrieve the home url for a given site.
+ *
+ * Returns the 'home' option with the appropriate protocol,  'https' if
+ * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
+ * overridden.
+ *
+ * @package BuddyPress Core
+ * @since 1.3
+ * @adapted from @package WordPress 3.0.0
+ *
+ * @param  int $blog_id   (optional) Blog ID. Defaults to current blog.
+ * @param  string $path   (optional) Path relative to the home url.
+ * @param  string $scheme (optional) Scheme to give the home url context. Currently 'http','https'
+ * @return string Home url link with optional path appended.
+*/
+function bp_core_get_home_url( $blog_id = null, $path = '', $scheme = null ) {
+	if ( function_exists( 'get_home_url' ) )
+		return get_home_url( $blog_id, $path, $scheme );
+
+	// adapted from wp-includes/link-template.php function get_home_url()
+
+	$orig_scheme = $scheme;
+	$scheme      = is_ssl() && !is_admin() ? 'https' : 'http';
+
+	if ( empty($blog_id) || !bp_core_is_multisite() )
+		$home = get_option('home');
+	else {
+		/* adapted from wp-includes/ms-blogs.php
+			functions get_blog_address_by_id(), get_blog_details() */
+
+		global $wpdb;
+
+		$bloginfo = $wpdb->get_row( $wpdb->prepare(
+			"SELECT * FROM {$wpdb->blogs} WHERE blog_id = %d", (int) $blog_id ) );
+
+		$home = untrailingslashit( esc_url(
+			'http://' . $bloginfo->domain . $bloginfo->path ) );
+	}
+
+	$url = str_replace( 'http://', "$scheme://", $home );
+
+	if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
+		$url .= '/' . ltrim( $path, '/' );
+
+	return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
+}
+
 if ( !function_exists( 'get_blogs_of_user' ) ) {
 	function get_blogs_of_user() {
 		return false;
