Index: wp-includes/comment-functions.php
===================================================================
--- wp-includes/comment-functions.php	(revision 3140)
+++ wp-includes/comment-functions.php	(working copy)
@@ -622,7 +622,8 @@
 	// We don't wanna ping first and second types, even if they have a valid <link/>
 
 	foreach($post_links_temp[0] as $link_test) :
-		if ( !in_array($link_test, $pung) && url_to_postid($link_test) != $post_ID) : // If we haven't pung it already and it isn't a link to itself
+		if ( !in_array($link_test, $pung) && (url_to_postid($link_test) != $post_ID) // If we haven't pung it already and it isn't a link to itself
+				&& !is_local_attachment($link_test) ) : // Also, let's never ping local attachments.
 			$test = parse_url($link_test);
 			if (isset($test['query']))
 				$post_links[] = $link_test;
@@ -753,6 +754,18 @@
 	return false;
 }
 
+function is_local_attachment($url) {
+	if ( !strstr($url, get_bloginfo('home') ) )
+		return false;
+	if ( strstr($url, get_bloginfo('home') . '/?attachment_id=') )
+		return true;
+	if ( $id = url_to_postid($url) ) {
+		$post = & get_post($id);
+		if ( 'attachment' == $post->post_status )
+			return true;
+	}		
+	return false;
+}
 
 function wp_set_comment_status($comment_id, $comment_status) {
     global $wpdb;
@@ -788,7 +801,6 @@
     }
 }
 
-
 function wp_get_comment_status($comment_id) {
 	global $wpdb;
 	
Index: wp-admin/inline-uploading.php
===================================================================
--- wp-admin/inline-uploading.php	(revision 3140)
+++ wp-admin/inline-uploading.php	(working copy)
@@ -77,7 +77,7 @@
 $imagedata['file'] = $file;
 $imagedata['thumb'] = "thumb-$filename";
 
-add_post_meta($id, 'imagedata', $imagedata);
+add_post_meta($id, '_wp_attachment_metadata', $imagedata);
 
 if ( $imagedata['width'] * $imagedata['height'] < 3 * 1024 * 1024 ) {
 	if ( $imagedata['width'] > 128 && $imagedata['width'] >= $imagedata['height'] * 4 / 3 )
@@ -135,7 +135,6 @@
 	$back = false;
 }
 
-$i = 0;
 $uwidth_sum = 0;
 $images_html = '';
 $images_style = '';
@@ -154,15 +153,20 @@
 	$images_script .= "attachmenton = '$__attachment_on';\nattachmentoff = '$__attachment_off';\n";
 	$images_script .= "thumbnailon = '$__thumbnail_on';\nthumbnailoff = '$__thumbnail_off';\n";
 	foreach ( $images as $key => $image ) {
-		$meta = get_post_meta($image['ID'], 'imagedata', true);
+		$attachment_ID = $image['ID'];
+		$meta = get_post_meta($attachment_ID, '_wp_attachment_metadata', true);
 		if (!is_array($meta)) {
-			wp_delete_attachment($image['ID']);
-			continue;
+			$meta = get_post_meta($attachment_ID, 'imagedata', true); // Try 1.6 Alpha meta key
+			if (!is_array($meta)) {
+				continue;
+			} else {
+				add_post_meta($attachment_ID, '_wp_attachment_metadata', $meta);
+			}
 		}
 		$image = array_merge($image, $meta);
 		if ( ($image['width'] > 128 || $image['height'] > 96) && !empty($image['thumb']) && file_exists(dirname($image['file']).'/'.$image['thumb']) ) {
 			$src = str_replace(basename($image['guid']), '', $image['guid']) . $image['thumb'];
-			$images_script .= "src".$i."a = '$src';\nsrc".$i."b = '".$image['guid']."';\n";
+			$images_script .= "src".$attachment_ID."a = '$src';\nsrc".$attachment_ID."b = '".$image['guid']."';\n";
 			$thumb = 'true';
 			$thumbtext = $__thumbnail_on;
 		} else {
@@ -175,24 +179,22 @@
 		$uwidth_sum += 128;
 		$xpadding = (128 - $image['uwidth']) / 2;
 		$ypadding = (96 - $image['uheight']) / 2;
-		$attachment = $image['ID'];
-		$images_style .= "#target$i img { padding: {$ypadding}px {$xpadding}px; }\n";
-		$href = get_attachment_link($attachment);
-		$images_script .= "href".$i."a = '$href';\nhref".$i."b = '{$image['guid']}';\n";
+		$images_style .= "#target{$attachment_ID} img { padding: {$ypadding}px {$xpadding}px; }\n";
+		$href = get_attachment_link($attachment_ID);
+		$images_script .= "href{$attachment_ID}a = '$href';\nhref{$attachment_ID}b = '{$image['guid']}';\n";
 		$images_html .= "
-<div id='target$i' class='imagewrap left'>
-	<div id='popup$i' class='popup'>
-		<a id=\"L$i\" onclick=\"toggleLink($i);return false;\" href=\"javascript:void();\">$__attachment_on</a>
-		<a id=\"I$i\" onclick=\"if($thumb)toggleImage($i);else alert('$__nothumb');return false;\" href=\"javascript:void();\">$thumbtext</a>
-		<a onclick=\"return confirm('$__confirmdelete')\" href=\"".basename(__FILE__)."?action=delete&amp;attachment=$attachment&amp;all=$all&amp;start=$start&amp;post=$post\">$__delete</a>
+<div id='target{$attachment_ID}' class='imagewrap left'>
+	<div id='popup{$attachment_ID}' class='popup'>
+		<a id=\"L{$attachment_ID}\" onclick=\"toggleLink({$attachment_ID});return false;\" href=\"javascript:void();\">$__attachment_on</a>
+		<a id=\"I{$attachment_ID}\" onclick=\"if($thumb)toggleImage({$attachment_ID});else alert('$__nothumb');return false;\" href=\"javascript:void();\">$thumbtext</a>
+		<a onclick=\"return confirm('$__confirmdelete')\" href=\"".basename(__FILE__)."?action=delete&amp;attachment={$attachment_ID}&amp;all=$all&amp;start=$start&amp;post=$post\">$__delete</a>
 		<a onclick=\"popup.style.display='none';return false;\" href=\"javascript:void()\">$__close</a>
 	</div>
-	<a id=\"link$i\" class=\"imagelink\" href=\"$href\" onclick=\"imagePopup($i);return false;\" title=\"{$image['post_title']}\">		
-		<img id='image$i' src='$src' alt='{$image['post_title']}' $height_width />
+	<a id=\"{$attachment_ID}\" rel=\"attachment\" class=\"imagelink\" href=\"$href\" onclick=\"imagePopup({$attachment_ID});return false;\" title=\"{$image['post_title']}\">		
+		<img id=\"image{$attachment_ID}\" src=\"$src\" alt=\"{$attachment_ID}\" $height_width />
 	</a>
 </div>
 ";
-		$i++;
 	}
 }
 
@@ -242,7 +244,7 @@
 popup = false;
 }
 function toggleLink(n) {
-	o=document.getElementById('link'+n);
+	o=document.getElementById(n);
 	oi=document.getElementById('L'+n);
 	if ( oi.innerHTML == attachmenton ) {
 		o.href = eval('href'+n+'b');
Index: wp-admin/admin-functions.php
===================================================================
--- wp-admin/admin-functions.php	(revision 3140)
+++ wp-admin/admin-functions.php	(working copy)
@@ -63,6 +63,9 @@
 	if ( $_POST['temp_ID'] )
 		relocate_children($_POST['temp_ID'], $post_ID);
 
+	// Now that we have an ID we can fix any attachment anchor hrefs
+	fix_attachment_links($post_ID);
+
 	return $post_ID;
 }
 
@@ -74,6 +77,40 @@
 	return $wpdb->query("UPDATE $wpdb->posts SET post_parent = $new_ID WHERE post_parent = $old_ID");
 }
 
+// Replace hrefs of attachment anchors with up-to-date permalinks.
+function fix_attachment_links($post_ID) {
+	global $wp_rewrite;
+
+	// Relevance check.
+	if ( false == $wp_rewrite->using_permalinks() )
+		return;
+
+	$post = & get_post($post_ID);
+
+	$search = "#<a[^>]+rel=('|\")[^'\"]*attachment[^>]*>#ie";
+
+	// See if we have any rel="attachment" links
+	if ( 0 == preg_match_all($search, $post->post_content, $anchor_matches, PREG_PATTERN_ORDER) )
+		return;
+
+	$i = 0;
+	$search = "# id=(\"|)(\d+)\\1#i";
+	foreach ( $anchor_matches[0] as $anchor ) {
+		echo "$search\n$anchor\n";
+		if ( 0 == preg_match($search, $anchor, $id_matches) )
+			continue;
+
+		$id = $id_matches[2];
+		$post_search[$i] = $anchor;
+		$post_replace[$i] = preg_replace("#href=(\"|')[^'\"]*\\1#e", "stripslashes('href=\\1').get_attachment_link($id).stripslashes('\\1')", $anchor);
+		++$i;
+	}
+
+	$post->post_content = str_replace($post_search, $post_replace, $post->post_content);
+
+	return wp_update_post($post);
+}
+
 // Update an existing post with values provided in $_POST.
 function edit_post() {
 	global $user_ID;
@@ -140,6 +177,9 @@
 
 	wp_update_post($_POST);
 
+	// Now that we have an ID we can fix any attachment anchor hrefs
+	fix_attachment_links($_POST['ID']);
+
 	// Meta Stuff
 	if ($_POST['meta'])
 		: foreach ($_POST['meta'] as $key => $value)
@@ -1795,4 +1835,4 @@
 	return array('file' => $file, 'id' => $id);
 }
 
-?>
\ No newline at end of file
+?>
Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 3140)
+++ wp-admin/admin-header.php	(working copy)
@@ -105,7 +105,7 @@
 	convert_newlines_to_brs : false,
 	remove_linebreaks : true,
 	save_callback : "wp_save_callback",
-	valid_elements : "-a[href|title|rel],-strong/b,-em/i,-strike,-del,-u,p[class|align],-ol,-ul,-li,br,img[class|src|alt|title|width|height|align],-sub,-sup,-blockquote,-table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],-div[dir|class|align],-span[class|align],-pre[class],address,-h1[class|align],-h2[class|align],-h3[class|align],-h4[class|align],-h5[class|align],-h6[class|align],hr",
+	valid_elements : "-a[id|href|title|rel],-strong/b,-em/i,-strike,-del,-u,p[class|align],-ol,-ul,-li,br,img[class|src|alt|title|width|height|align],-sub,-sup,-blockquote,-table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],-div[dir|class|align],-span[class|align],-pre[class],address,-h1[class|align],-h2[class|align],-h3[class|align],-h4[class|align],-h5[class|align],-h6[class|align],hr",
 	plugins : "wordpress,autosave"
 	<?php do_action('mce_options'); ?>
 });
