Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 8071)
+++ wp-includes/functions.php	(working copy)
@@ -1793,4 +1793,14 @@
 	return $forced;
 }
 
+function wp_guess_url() {
+	if ( defined('WP_SITEURL') && '' != WP_SITEURL ) {
+		$url = WP_SITEURL;
+	} else {
+		$schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
+		$url = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
+	}
+	return $url;
+}
+
 ?>
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 8071)
+++ wp-includes/script-loader.php	(working copy)
@@ -7,7 +7,9 @@
 require( ABSPATH . WPINC . '/functions.wp-styles.php' );
 
 function wp_default_scripts( &$scripts ) {
-	$scripts->base_url = site_url();
+	if (!$guessurl = site_url())
+		$guessurl = wp_guess_url();
+	$scripts->base_url = $guessurl;
 	$scripts->default_version = get_bloginfo( 'version' );
 
 	$scripts->add( 'common', '/wp-admin/js/common.js', array('jquery'), '20080318' );
@@ -203,7 +205,9 @@
 }
 
 function wp_default_styles( &$styles ) {
-	$styles->base_url = site_url();
+	if (!$guessurl = site_url())
+		$guessurl = wp_guess_url();
+	$styles->base_url = $guessurl;
 	$styles->default_version = get_bloginfo( 'version' );
 	$styles->text_direction = 'rtl' == get_bloginfo( 'text_direction' ) ? 'rtl' : 'ltr';
 
Index: wp-admin/includes/schema.php
===================================================================
--- wp-admin/includes/schema.php	(revision 8071)
+++ wp-admin/includes/schema.php	(working copy)
@@ -153,10 +153,9 @@
 
 function populate_options() {
 	global $wpdb, $wp_db_version;
-
-	$schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
-	$guessurl = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
 	
+	$guessurl = wp_guess_url();
+	
 	do_action('populate_options');
 	
 	add_option('siteurl', $guessurl);
Index: wp-admin/includes/upgrade.php
===================================================================
--- wp-admin/includes/upgrade.php	(revision 8071)
+++ wp-admin/includes/upgrade.php	(working copy)
@@ -18,13 +18,8 @@
 	update_option('blogname', $blog_title);
 	update_option('admin_email', $user_email);
 	update_option('blog_public', $public);
-	$schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://';
 
-	if ( defined('WP_SITEURL') && '' != WP_SITEURL )
-		$guessurl = WP_SITEURL;
-	else
-		$guessurl = preg_replace('|/wp-admin/.*|i', '', $schema . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
-
+	$guessurl = wp_guess_url();
 	update_option('siteurl', $guessurl);
 
 	// If not a public blog, don't ping.
