Title: [96715] trunk/Source/WebCore
Revision
96715
Author
[email protected]
Date
2011-10-05 09:39:10 -0700 (Wed, 05 Oct 2011)

Log Message

libsoup-CRITICAL **: soup_message_io_pause: assertion `io != NULL' failed
https://bugs.webkit.org/show_bug.cgi?id=64263

Reviewed by Xan Lopez.

No new tests. This is difficult to test because it relies on network
timing and to catch and parse stdout.

Instead of allowing messages to pause and unpause after receiving headers,
we wait until the completion of the sendRequestCallback. This will ensure
that the SoupSession is in the correct state to allow for pausing and unpausing.

* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::ResourceHandle::platformSetDefersLoading): Don't pause and unpause
until the sendRequestCallback is called. We detect this situation by
checking whether or not we have an input stream yet. Previously the code
was only pausing until after soupMessage->status_code was not equal to
SOUP_STATUS_NONE. This means that the message was pausable right after
headers are received. sendRequestCallback happens some time after that.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (96714 => 96715)


--- trunk/Source/WebCore/ChangeLog	2011-10-05 16:27:30 UTC (rev 96714)
+++ trunk/Source/WebCore/ChangeLog	2011-10-05 16:39:10 UTC (rev 96715)
@@ -1,3 +1,25 @@
+2011-10-05  Martin Robinson  <[email protected]>
+
+        libsoup-CRITICAL **: soup_message_io_pause: assertion `io != NULL' failed
+        https://bugs.webkit.org/show_bug.cgi?id=64263
+
+        Reviewed by Xan Lopez.
+
+        No new tests. This is difficult to test because it relies on network
+        timing and to catch and parse stdout.
+
+        Instead of allowing messages to pause and unpause after receiving headers,
+        we wait until the completion of the sendRequestCallback. This will ensure
+        that the SoupSession is in the correct state to allow for pausing and unpausing.
+
+        * platform/network/soup/ResourceHandleSoup.cpp:
+        (WebCore::ResourceHandle::platformSetDefersLoading): Don't pause and unpause
+        until the sendRequestCallback is called. We detect this situation by
+        checking whether or not we have an input stream yet. Previously the code
+        was only pausing until after soupMessage->status_code was not equal to
+        SOUP_STATUS_NONE. This means that the message was pausable right after
+        headers are received. sendRequestCallback happens some time after that.
+
 2011-10-05  Ilya Tikhonovsky  <[email protected]>
 
         Unreviewed build fix for Debug builders.

Modified: trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp (96714 => 96715)


--- trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp	2011-10-05 16:27:30 UTC (rev 96714)
+++ trunk/Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp	2011-10-05 16:39:10 UTC (rev 96715)
@@ -703,9 +703,10 @@
     if (!d->m_soupMessage)
         return;
 
-    // Avoid any operation on not yet started messages and completed messages.
+    // Do not pause or unpause operations that are completed or have not reached
+    // sendRequestCallback yet. If m_defersLoading is true at that point, we'll pause.
     SoupMessage* soupMessage = d->m_soupMessage.get();
-    if (d->m_finished || soupMessage->status_code == SOUP_STATUS_NONE)
+    if (d->m_finished || !d->m_inputStream)
         return;
 
     if (defersLoading)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to