diff -urN wordpress.orig/wp-admin/includes/class-wp-filesystem-ftpext.php wordpress/wp-admin/includes/class-wp-filesystem-ftpext.php
--- wordpress.orig/wp-admin/includes/class-wp-filesystem-ftpext.php	2008-05-29 17:29:32.000000000 +0000
+++ wordpress/wp-admin/includes/class-wp-filesystem-ftpext.php	2008-10-21 14:49:02.000000000 +0000
@@ -58,6 +58,7 @@
 			$this->options['password'] = $opt['password'];
 
 		$this->options['ssl'] = ( !empty($opt['ssl']) );
+		$this->options['pasv'] = ( !empty($opt['pasv']) );
 	}
 
 	function connect() {
@@ -76,6 +77,10 @@
 			return false;
 		}
 
+		// this enteres passive FTP mode if the server does have problems connection the FTP server due to some firewalling this could help
+		if( $this->options['pasv'] )
+			@ftp_pasv( $this->link, 1 );
+
 		return true;
 	}
 
diff -urN wordpress.orig/wp-admin/update.php wordpress/wp-admin/update.php
--- wordpress.orig/wp-admin/update.php	2008-06-06 19:21:35.000000000 +0000
+++ wordpress/wp-admin/update.php	2008-10-21 15:01:25.000000000 +0000
@@ -23,6 +23,7 @@
 	$credentials['username'] = defined('FTP_USER') ? FTP_USER : (!empty($_POST['username']) ? $_POST['username'] : $credentials['username']);
 	$credentials['password'] = defined('FTP_PASS') ? FTP_PASS : (!empty($_POST['password']) ? $_POST['password'] : $credentials['password']);
 	$credentials['ssl']      = defined('FTP_SSL')  ? FTP_SSL  : ( isset($_POST['ssl'])      ? $_POST['ssl']      : $credentials['ssl']);
+	$credentials['pasv']      = defined('FTP_PASV')  ? FTP_PASV  : ( isset($_POST['pasv'])      ? $_POST['pasv']      : $credentials['pasv']);
 
 	if ( ! $error && !empty($credentials['password']) && !empty($credentials['username']) && !empty($credentials['hostname']) ) {
 		$stored_credentials = $credentials;
@@ -34,6 +35,7 @@
 	$username = '';
 	$password = '';
 	$ssl = '';
+	$pasv = '';
 	if ( !empty($credentials) )
 		extract($credentials, EXTR_OVERWRITE);
 	if( $error )
@@ -69,6 +71,19 @@
 </select>
 </td>
 </tr>
+<tr valign="top">
+<th scope="row"><label for="pasv"><?php _e('Use passive FTP connection:') ?></label></th>
+<td>
+<select name="pasv" id="pasv"<?php if( defined('FTP_PASV') ) echo ' disabled="disabled"' ?>>
+<?php
+foreach ( array(0 => __('No'), 1 => __('Yes')) as $key => $value ) :
+	$selected = ($pasv == $value) ? 'selected="selected"' : '';
+	echo "\n\t<option value='$key' $selected>" . $value . '</option>';
+endforeach;
+?>
+</select>
+</td>
+</tr>
 </table>
 <p class="submit">
 <input type="submit" name="submit" value="<?php _e('Proceed'); ?>" />
