diff --git a/podcast/rb-podcast-manager.c b/podcast/rb-podcast-manager.c
index a2b7dd1..144598a 100644
--- a/podcast/rb-podcast-manager.c
+++ b/podcast/rb-podcast-manager.c
@@ -813,6 +813,23 @@ download_file_info_cb (GFile *source,
 
 
 	data->destination = g_file_new_for_uri (sane_local_file_uri);
+
+	/* now that we know the download location, point the db entry for the episode
+	 * at it, so we don't get a local song entry created for it due to file monitoring.
+	 */
+	if (get_download_location (data->entry) == NULL) {
+		GValue val = {0,};
+		char *uri = g_file_get_uri (data->destination);
+
+		g_value_init (&val, G_TYPE_STRING);
+		g_value_set_string (&val, uri);
+		set_download_location (data->pd->priv->db, data->entry, &val);
+		g_value_unset (&val);
+
+		rhythmdb_commit (data->pd->priv->db);
+		g_free (uri);
+	}
+
 	if (g_file_query_exists (data->destination, NULL)) {
 		GFileInfo *dest_info;
 		guint64 local_size;
@@ -1440,22 +1457,6 @@ podcast_download_thread (RBPodcastManagerInfo *data)
 		return NULL;
 	}
 
-	/* set the downloaded location for the episode
-	 * and do it before opening the file, so that the monitor
-	 * doesn't add a normal entry for us */
-	if (get_download_location (data->entry) == NULL) {
-		GValue val = {0,};
-		char *uri = g_file_get_uri (data->destination);
-
-		g_value_init (&val, G_TYPE_STRING);
-		g_value_set_string (&val, uri);
-		set_download_location (data->pd->priv->db, data->entry, &val);
-		g_value_unset (&val);
-
-		rhythmdb_commit (data->pd->priv->db);
-		g_free (uri);
-	}
-
 	/* gvfs doesn't do file info queries from streams, so this doesn't help, but
 	 * maybe some day it will..
 	 */
