Index: source/source-local/gst-plugins-good-0.10.29/ext/soup/gstsouphttpsrc.c
===================================================================
--- source/source-local/gst-plugins-good-0.10.29/ext/soup/gstsouphttpsrc.c	(revision 264)
+++ source/source-local/gst-plugins-good-0.10.29/ext/soup/gstsouphttpsrc.c	(working copy)
@@ -888,10 +888,20 @@
     return;
   }
   GST_DEBUG_OBJECT (src, "got body");
-  src->ret = GST_FLOW_UNEXPECTED;
+  if(!src->have_size || src->read_position >= src->content_size)
+  {
+    //True EOS
+    src->ret = GST_FLOW_UNEXPECTED;
+    gst_soup_http_src_session_pause_message (src);
+  }
+  else
+  {
+    //we haven't retrieved the whole file
+    GST_DEBUG_OBJECT (src, "got body, but only retrieved %" G_GUINT64_FORMAT " of %" G_GUINT64_FORMAT " bytes, reconnecting.", src->read_position, src->content_size);
+    src->retry = TRUE;
+  }
   if (src->loop)
     g_main_loop_quit (src->loop);
-  gst_soup_http_src_session_pause_message (src);
 }
 
 /* Finished. Signal EOS. */
