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