diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c
index 5788706..f9e641d 100644
--- a/libs/gst/base/gstbasesrc.c
+++ b/libs/gst/base/gstbasesrc.c
@@ -856,10 +856,13 @@ gst_base_src_default_query (GstBaseSrc * src, GstQuery * query)
       if (format == src->segment.format) {
         gst_query_set_seeking (query, src->segment.format,
             gst_base_src_seekable (src), 0, src->segment.duration);
+        res = TRUE;
       } else {
-        gst_query_set_seeking (query, format, FALSE, 0, -1);
+        /* Don't reply to the query to make up for demuxers which don't
+         * handle the SEEKING query yet. Players like Totem will fall back
+         * to the duration when the SEEKING query isn't answered. */
+        res = FALSE;
       }
-      res = TRUE;
       break;
     }
     case GST_QUERY_SEGMENT:
