Index: src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs
===================================================================
--- src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs	(revision 3598)
+++ src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs	(working copy)
@@ -86,6 +86,7 @@
         int hard_failure_retry_sec = 60;
         
         HttpWebRequest now_playing_post;
+        bool now_playing_started;
         string current_now_playing_uri;
         HttpWebRequest current_web_req;
         IAsyncResult current_async_result;
@@ -518,15 +519,18 @@
                                         duration.ToString(),
                                         str_track_number,
 			                            mbrainzid);
-
+            
+            Console.WriteLine ("Submitting via non-uri handler.");
             NowPlaying (uri);
         }
         
         private void NowPlaying (string uri)
         {            
-            if (now_playing_post != null) {
-                Hyena.Log.DebugFormat ("Now-playing submission already started - aborting.");
-                now_playing_post.Abort ();
+            if (now_playing_started) {
+                //Hyena.Log.DebugFormat ("Now-playing submission already started - being lame.");
+                //Console.WriteLine (uri);
+                //now_playing_post.Abort ();
+                return;
             }
             
             // If the URI begins with #, then we know the URI was created before we
@@ -553,7 +557,13 @@
                 now_playing_post.Method = "POST";
                 now_playing_post.ContentType = "application/x-www-form-urlencoded";
                 now_playing_post.ContentLength = uri.Length;
-                now_playing_post.BeginGetResponse (NowPlayingGetResponse, null);
+                if (state == State.Idle) {
+                    // Don't actually POST it until we're idle (that is, we
+                    // probably have stuff queued which will reset the Now
+                    // Playing if we send them first).
+                    now_playing_post.BeginGetResponse (NowPlayingGetResponse, null);
+                    now_playing_started = true;
+                }
             } catch (Exception ex) {
                 Hyena.Log.Warning ("Audioscrobbler NowPlaying failed",
                                   String.Format ("Exception while creating request: {0}", ex), false);
@@ -587,6 +597,7 @@
                 } else if (line.StartsWith ("OK")) {
                     // NowPlaying submitted  
                     Hyena.Log.DebugFormat ("Submitted NowPlaying track to Audioscrobbler");
+                    now_playing_started = false;
                     now_playing_post = null;
                     current_now_playing_uri = null;
                     return;
@@ -606,6 +617,7 @@
             } else {
                 // Give up - NowPlaying status information is non-critical.
                 current_now_playing_uri = null;
+                now_playing_started = false;
                 now_playing_post = null;
             }
         }
